gpt4 book ai didi

opengl - GL_CURRENT_VERTEX_ATTRIB - 文档说明

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

OpenGL 4 docs说:

GL_CURRENT_VERTEX_ATTRIB

params returns four values that represent the current value for thegeneric vertex attribute specified by index. Generic vertex attribute0 is unique in that it has no current state, so an error will begenerated if index is 0. The initial value for all other genericvertex attributes is (0,0,0,1).

“如果索引为0就会产生错误”在实践中意味着什么?

假设我有一个具有以下布局的顶点着色器:

layout (location = 0) in vec3 pos;

我想设置一个通用(常量)顶点属性。我可以使用索引等于 0 的 glVertexAttrib3f 吗?

glVertexAttrib3f(0, 1, 0, 0);

稍后我想通过这种方式检查当前的顶点属性:

glGetVertexAttribfv(0, GL_CURRENT_VERTEX_ATTRIB, data);

正确吗?

最佳答案

相对于核心 OpenGL 3.2 或更高版本,文档中的文本不正确。在OpenGL的核心配置文件中,属性0具有状态并且可以查询该状态。

在 4.5 之前的兼容性配置文件(以及 3.0 之前的所有 GL 版本)中,属性 0 没有状态。 4.5 更改了兼容性配置文件以提供属性 0 状态。事实上,规范特别指出了这一变化:

This is a change in behavior of the compatibilty[sic] profile for increased interoperability with core profile and OpenGL ES.

综上所述,您确实应该假装通用属性值不存在。由于它们很少使用,因此它们的性能特征尚不清楚。它们的值(value)有些短暂;如果您设置一个值,渲染某些内容,然后渲染使用该属性的数组的某些内容,则您之前设置的值将不会保留,需要您再次设置。这与大多数 OpenGL 状态完全不同。

关于opengl - GL_CURRENT_VERTEX_ATTRIB - 文档说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63688776/

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