Я обрабатываю много выровненных по оси 3D-кубов. Каждый куб может отличаться друг от друга положением его центра куба и/или цвета. Это как, я делает его прямо сейчасOpenGL Instanced Rendering без шейдеров
for (i = 0; i < num_of_cubes; ++i) {
glTranslatef(center[i].x, center[i].y, center[i].z);
DrawCube();
}
Мой DrawCube() просто делает 6 квадрациклов, соответствующие каждой стороне куба, используя glDrawElements
с вершинных данных, хранящихся в VBO. glVertexPointer и glColorPointer используются для установки элементов атрибута.
Это работает, но я хочу использовать Instanced rendering, используя, вероятно, glDrawElementsInstanced(). Однако из-за некоторого устаревшего кода проекта я должен использовать конвейер с фиксированной функцией.
Возможно ли это с фиксированным трубопроводом? Если да, то как я могу сказать, что мой GPU использует Instance vbo из воксельных центров и цветов.
Вы можете использовать профиль совместимости и включить шейдеры только тогда, когда они вам понадобятся (в новом коде), а затем выключить их снова. Вот почему есть профиль совместимости, чтобы облегчить переход. – datenwolf
Спасибо. Мне потребовалось некоторое время, но я перешел на профиль совместимости – iNFINITEi