gpt4 book ai didi

opengl - glVertexPointer 的用途是什么?

转载 作者:行者123 更新时间:2023-12-02 09:35:12 25 4
gpt4 key购买 nike

我正在查看 CUDA 的粒子示例,但我找不到它们在顶点数组和着色器中的变量之间建立链接的位置。根据我读过的内容和实际上我一直在做的方式是

...
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);

我相信这与我所做的类似。所以我的问题是

  1. 这两种将数据传递到着色器的方式有什么区别?
  2. 我应该选择其中之一吗?

最佳答案

第一种方法是发送属性的现代通用方法。第二个是较旧的,其中顶点、法线、颜色等都有自己的硬编码属性。它不应该在现代代码中使用。

关于opengl - glVertexPointer 的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27017824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com