我一直在使用 DirectX(带有 XNA)一段时间,最近切换到了 OpenGL。我真的很喜欢它,但有一件事让我很生气。
我一直在尝试在顶点着色器中实现需要动态索引的东西,但有人告诉我这需要 SM 4.0 的等价物。但是我知道即使使用 SM 2.0,甚至可能是 1.0,这也适用于 DX。XNA 的实例化示例使用它在仅限 SM2.0 的卡上进行实例化http://create.msdn.com/en-US/education/catalog/sample/mesh_instancing。
编译器不可能将它“展开”成一个巨大的 if 语句列表,因为这肯定会超过 SM2 的 250 个实例的指令限制。
那么,DX 是不是做了一些我用 OpenGL 做不到的诡计,我可以操纵 OpenGL 做同样的事情,还是它是 OpenGL 不公开的硬件功能?