【问题标题】:Cg shaders not being applied after switch to glVertexPointer切换到 glVertexPointer 后未应用 Cg 着色器
【发布时间】:2010-02-07 21:05:59
【问题描述】:

我的渲染器曾经使用 glBegin/glEnd 使用旧的固定函数来渲染几何图形。通过 glVertexPointer 等将其切换为使用顶点数组后。 al.,我的 Cg 着色器停止显示。如果我只是做一个常规的纹理绑定,它工作正常,所以数组数据是可靠的。此外,如果我使用旧的 glBegin/glEnd 系统,Cg 着色器工作正常。是否有一些我缺少特定于顶点缓冲区的注意事项?

【问题讨论】:

  • 如何启用顶点数组?您使用的是glEnableClientState 而不仅仅是glEnable
  • 是的,我正在使用 glEnableClientState。奇怪的是,如果我使用相同的方法但使用 VBO(调用 glBindBufferARB,然后将 NULL 传递给 glVertexPointer),它工作正常。但我希望除了硬件 VBO 之外还可以选择使用内存阵列。

标签: c++ opengl shader cg


【解决方案1】:

顶点数据提交(Begin/End,常规 VertexPointer+Dra​​wArrays,VBO+DrawArrays)应该与着色器完全正交(只要您提供数据)。所以你并没有真正错过任何东西(特别是如果它适用于 VBO)。

您的问题可能在您没有提及的地方。

【讨论】:

  • 是的,它在其他地方。感谢您的回复