gpt4 book ai didi

opengl - glVertexAttribPointer 内置顶点属性,如 gl_Vertex、gl_Normal

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:15 24 4
gpt4 key购买 nike

我必须使用 glVertexAttribPointer 将顶点属性发送到希望它们内置的着色器(gl_Vertexgl_Color 等)。

glVertexAttribPointer函数需要指定每个内置属性的索引(或位置)。我可以在 NVidia 实现上执行此操作,因为每个属性的位置是固定的(请参阅“自定义属性”部分中的 http://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/attributes.php),但是我不确定 ATI 实现中的位置。

此外,当尝试获取以“gl_”开头的任何属性的位置时,函数 glGetAttribLocation 将返回 -1。

我认为我遗漏了一些东西,这是一个微不足道的问题,但是我还没有找到 ATI 的正确解决方案。

最佳答案

内置属性数组不是用glVertexAttribPointer设置的,而是用glVertexPointer, glColorPointer, ...这样的函数设置的。 。您可以通过调用glEnableClientState来启用这些功能。使用 GL_VERTEX_ARRAYGL_COLOR_ARRAY、... 等常量,而不是 glEnableVertexAttribArray

虽然在 nVidia 上 glVertexAttribPointer 可能会工作,但由于它们使用内置属性对自定义属性索引进行别名,这不符合标准,我确信您不能指望在任何其他硬件供应商上出现这种情况。因此,请确保对自定义属性使用 glVertexAttribPointer ,对 bool 属性使用 glVertexPointer/glNormalPointer/... 函数,以及匹配的启用/禁用函数。

请记住,无论如何,内置属性以及提到的函数都已被弃用。因此,如果您想编写现代 OpenGL 代码,无论如何您都应该定义自己的属性。但也许您必须支持旧版着色器,或者目前不关心向前兼容性。

关于opengl - glVertexAttribPointer 内置顶点属性,如 gl_Vertex、gl_Normal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41372131/

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