OpenGL 4.0 ++核心配置文件中固定功能管道的属性位置是什么?

光谱

我想知道nVidia OpenGL驱动程序在固定管线(未连接着色器)内的属性位置

glVertex = 0
glColor = 3
glNormal = ?
glTexCoord = ?
glMultiTexCoord 0..7 = ?
glSecondaryColor = ?
glFog = ?

根据经验,我找到了“顶点”和“主色”位置,但仍然很高兴了解它们。

如果您想知道原因,则出于兼容性原因,甚至出于GLSL调试的目的(只是查看在着色器尚不可用时是否将正确的数据传递到正确的位置)等等。

安东·科尔曼

在NVIDIA驱动程序之外,此操作不起作用(可靠地)。兼容的驱动程序将仅别名glVertexPointer (...)为属性插槽0NV用他们无穷的智慧在多年前设计了一个标准的非标准方案,在该方案中,他们将所有固定功能指针都别名为某些属性位置,但是我不知道新的NV驱动程序是否支持此方法(老实说,我从来都不关心尝试,这是一个糟糕的做法)。您也许仍然可以找到NV的别名映射文档,但是您无法利用他们的非标准行为使任何人受益。

尽管其他驱动程序也可以将固定功能指针的别名别名为通用顶点属性位置,但不存在有关其映射的文档。与NV不同,我不相信映射不会在驱动程序版本,硬件或平台之间更改。实际上,即使使用NV驱动程序,您也不应利用此功能-它是为了促进传统支持,而不是作为新软件的功能使用。

底线是,改用通用顶点属性或使用相容性分布和版本GLSL的是还支持专门为获取固定功能顶点数据设计了预先声明的变量(例如gl_Colorgl_Normalgl_MultiTexCoord0...7,...)。但是不要同时使用两种描述方式。

还需要一些时间进行审查glGetPointerv (...)如果要在GLSL之外获取有关固定功能指针的信息,这是正确的方法。不要依赖顶点属性别名,因为属性位置的概念从根本上讲是可编程的管道功能。它甚至在2.0之前的未扩展OpenGL中都不存在(它是ARB Vertex程序汇编语言引入的,并由GLSL提升为核心)。


更新:

尽管我仍然强烈建议您不要使用此信息,但我能够准确找到您想要的:

NVIDIA OpenGL阴影语言支持的发行说明- 200611月9日-第7-8页

顶点属性别名

GLSL试图消除顶点属性的混叠,但这是NVIDIA硬件方法不可或缺的,并且对于保持与NVIDIA客户所依赖的现有OpenGL应用程序的兼容性是必不可少的。

因此,NVIDIA的GLSL实现不允许内置的顶点属性与通过glBindAttribLocation分配给特定顶点属性索引的通用顶点属性发生冲突例如,您不应该使用gl_Normal(内置的顶点属性),也不要使用glBindAttribLocation将名为“ whatever”的通用顶点属性绑定到顶点属性索引2,因为gl_Normal别名是索引2

  表摘录

如果您想知道,ARB Vertex程序扩展规范的表X.1中也对此进行了概述我特别提到NV的唯一原因是因为他们选择重用GLSL中的别名,而来自其他供应商的兼容实现将仅遵循GLSL中的第一个别名(glVertexPointer (...)0)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

OpenGL 4.0 ++核心配置文件中固定功能管道的属性位置是什么?

来自分类Dev

PyQt4 OpenGL:启用OpenGL核心配置文件

来自分类Dev

为什么在使用OpenGL核心配置文件时会崩溃?

来自分类Dev

OpenGL形状仅在初始位置为(0,0,0)时绘制

来自分类Dev

openGL:glGenVertexArrays访问冲突执行位置0x00000000

来自分类Dev

OpenGL 0(84):错误C7623:类型从“ vec4”隐式缩小为“ float”

来自分类Dev

Neo4J 3.0中配置文件的位置是什么?

来自分类Dev

在GLFW下创建OpenGL核心配置文件

来自分类Dev

opengl 3.3核心配置文件渲染失败

来自分类Dev

OpenGL Max核心配置文件停留在3.3

来自分类Dev

为什么在opengl 3环境中使用opengl 4函数

来自分类Dev

为什么我要在opengl 3环境中使用opengl 4函数

来自分类Dev

ivec4作为顶点属性Opengl ES 2.0

来自分类Dev

ivec4作为顶点属性Opengl ES 2.0

来自分类Dev

OpenGL glBindBuffer(0)在vao之外?

来自分类Dev

OpenGL 4的旋转矩阵

来自分类Dev

在JavaScript中0 === 4是什么意思?

来自分类Dev

C ++ OpenGL glCreateProgram在Windows上返回0

来自分类Dev

openGL单通道纹理始终采样0

来自分类Dev

OpenGL垂直翻转:-360 + -360 = 0?

来自分类Dev

C ++ OpenGL glCreateProgram在Windows上返回0

来自分类Dev

Qt 4/5和Opengl API之间的opengl速度差异

来自分类Dev

为什么列表索引 [-4:0] 不起作用而 [0:4] 起作用?

来自分类Dev

如何在OpenGL核心配置文件中使用不带VAO的VBO?

来自分类Dev

在Mesa 10和GLFW3中使用OpenGL核心配置文件

来自分类Dev

如何在lvvmpipe软件渲染器中激活OpenGL 3.3核心配置文件?

来自分类Dev

尽管glxinfo断言可用,但OpenGL核心配置文件不可用

来自分类Dev

在Mesa 10和GLFW3中使用OpenGL核心配置文件

来自分类Dev

bugcheckcode 0x122的parameter1 0x4是什么意思?

Related 相关文章

  1. 1

    OpenGL 4.0 ++核心配置文件中固定功能管道的属性位置是什么?

  2. 2

    PyQt4 OpenGL:启用OpenGL核心配置文件

  3. 3

    为什么在使用OpenGL核心配置文件时会崩溃?

  4. 4

    OpenGL形状仅在初始位置为(0,0,0)时绘制

  5. 5

    openGL:glGenVertexArrays访问冲突执行位置0x00000000

  6. 6

    OpenGL 0(84):错误C7623:类型从“ vec4”隐式缩小为“ float”

  7. 7

    Neo4J 3.0中配置文件的位置是什么?

  8. 8

    在GLFW下创建OpenGL核心配置文件

  9. 9

    opengl 3.3核心配置文件渲染失败

  10. 10

    OpenGL Max核心配置文件停留在3.3

  11. 11

    为什么在opengl 3环境中使用opengl 4函数

  12. 12

    为什么我要在opengl 3环境中使用opengl 4函数

  13. 13

    ivec4作为顶点属性Opengl ES 2.0

  14. 14

    ivec4作为顶点属性Opengl ES 2.0

  15. 15

    OpenGL glBindBuffer(0)在vao之外?

  16. 16

    OpenGL 4的旋转矩阵

  17. 17

    在JavaScript中0 === 4是什么意思?

  18. 18

    C ++ OpenGL glCreateProgram在Windows上返回0

  19. 19

    openGL单通道纹理始终采样0

  20. 20

    OpenGL垂直翻转:-360 + -360 = 0?

  21. 21

    C ++ OpenGL glCreateProgram在Windows上返回0

  22. 22

    Qt 4/5和Opengl API之间的opengl速度差异

  23. 23

    为什么列表索引 [-4:0] 不起作用而 [0:4] 起作用?

  24. 24

    如何在OpenGL核心配置文件中使用不带VAO的VBO?

  25. 25

    在Mesa 10和GLFW3中使用OpenGL核心配置文件

  26. 26

    如何在lvvmpipe软件渲染器中激活OpenGL 3.3核心配置文件?

  27. 27

    尽管glxinfo断言可用,但OpenGL核心配置文件不可用

  28. 28

    在Mesa 10和GLFW3中使用OpenGL核心配置文件

  29. 29

    bugcheckcode 0x122的parameter1 0x4是什么意思?

热门标签

归档