后者是否会弃用前者?
我正在编写我想在着色器2.0硬件上工作的代码,但我想使用更新的编程约定,例如VAO。
所以我一直使用glVertexAttribPointer
函数代替glVertexPointer
,glNormalPointer
,glColorPointer
等等。
似乎我们已经到了服务器 - 客户端概念不是特别相关的点(编辑:我的意思是它适用于这些缓冲区指针的切换状态)。但我想知道旧En/DisableClientState
实际上做了什么,以及它与glEnableVertexAttribArray
实际上做了什么有关。
我也没有5代以前的任何图形硬件,但我的软件的某些用户肯定可能。我怎样才能防止我的代码无法在Radeon 9700上编译? (虽然我希望如果用户拥有最新的驱动程序,它可能会支持新的东西)
答案 0 :(得分:9)
似乎我们已经到了服务器 - 客户端概念不是......特别相关的点
实际上它非常相关。整个Buffer Objects术语是服务器和客户端。缓冲区是服务器端,客户端只发出引用服务器端缓冲区的绘图命令。
用glEnableVertexAttribArray替换glEnableClientState的主要原因是,因为OpenGL-3总是使用顶点数组(不再是立即模式),并且数据是客户端或服务器端的区别是由绑定状态各种缓冲对象槽。如果绑定了缓冲区对象0,则数据是客户端,如果绑定缓冲区对象非零,则它是服务器端。