后者是否贬低前者?
我正在编写希望在着色器 2.0 硬件上工作的代码,但我想使用更新的编程约定,例如 VAO。
所以我一直在使用glVertexAttribPointer
函数而不是glVertexPointer
, glNormalPointer
, glColorPointer
等等。
似乎我们已经到了服务器-客户端概念不......特别相关的地步(编辑:我的意思是因为它适用于这些缓冲区指针的切换状态)。但我想知道旧的是什么En/DisableClientState
实际上是做什么的以及它与什么有什么关系glEnableVertexAttribArray
事实上确实如此。
我也没有 5 代以前的任何图形硬件,但我的软件的某些用户肯定可能有。例如,我该如何防止代码在 Radeon 9700 上编译失败? (尽管我希望如果用户拥有最新的驱动程序,它可能会支持新的东西)
似乎我们已经到了服务器-客户端概念不再......特别相关的地步
其实这是非常相关的。整个缓冲区对象术语是针对服务器和客户端的。缓冲区位于服务器端,客户端只需发出引用服务器端缓冲区的绘图命令。
用 glEnableVertexAttribArray 替换 glEnableClientState 的主要原因是,由于 OpenGL-3 始终使用顶点数组(不再有立即模式),并且数据是客户端还是服务器端的区别是由各种缓冲区的绑定状态决定的对象槽。如果绑定了缓冲区对象 0,则数据是客户端的,如果绑定的缓冲区对象非零,则数据是服务器端的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)