Я уже некоторое время использую DirectX (с XNA), и недавно перешел на OpenGL. Я действительно люблю это, но одна вещь меня раздражает.
Я пытался реализовать что-то, что требует динамического индексирования в вершинном шейдере, но мне сказали, что это требует эквивалента SM 4.0. Однако я знаю, что это работает в DX даже с SM 2.0, возможно, даже с 1.0. Образец экземпляров XNA использует это для создания экземпляров только на картах SM2.0 http://create.msdn.com/en-US/education/catalog/sample/mesh_instancing.
Компилятор не мог "развернуть" его в гигантский список операторов if, поскольку это наверняка превысит лимит инструкций на SM2 для наших 250 экземпляров.
Так что же, DX делает какую-то хитрость, которую я не могу сделать с OpenGL, могу ли я манипулировать OpenGL, чтобы сделать то же самое, или это аппаратная функция, которую OpenGL не предоставляет?