【发布时间】:2015-01-17 00:41:50
【问题描述】:
我正在查看 CUDA 的 Particles 示例,但找不到它们在哪里建立顶点数组和着色器中的变量之间的链接。从我所读到的以及实际上我一直在做的方式是
...
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData( ... )
glEnableVertexAttribArray(0);
glVertexAttribPointer( ... );
...
但是我在 Nvidia 的例子中发现的看起来像
glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_vbo);
glVertexPointer(4, GL_FLOAT, 0, 0);
glEnableClientState(GL_VERTEX_ARRAY);
if (m_colorVBO)
{
glBindBufferARB(GL_ARRAY_BUFFER_ARB, m_colorVBO);
glColorPointer(4, GL_FLOAT, 0, 0);
glEnableClientState(GL_COLOR_ARRAY);
}
glDrawArrays(GL_POINTS, 0, m_numParticles);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
我相信这与我所做的类似。所以我的问题是
- 这两种向着色器传递数据的方式有什么区别?
- 我应该更喜欢其中一个吗?
【问题讨论】: