首页 > 解决方案 > 如何将 glVertexAttrib3f 与 vao 一起使用?

问题描述

我使用 vao 和 vbo 绘制一个四边形。顶点着色器具有以下输入:

layout (location = 0) in vec3 pos

我想使用 glVertexAttrib3f 为顶点着色器设置一个常量 pos 值。以下代码无效(四边形正在绘制):

glVertexAttrib3f(0, 0.0f, 0.0f, 0.0f);
glUseProgram(shaderProgram);
glBindVertexArray(VAO);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);

怎么了 ?

标签: openglvao

解决方案


请参阅OpenGL 4.6 API 核心配置文件规范 - 10.2 当前顶点属性值

本节中的命令用于指定当前属性值。当未启用定义所需属性的顶点数组时,绘图命令使用这些值来定义为顶点传输的属性 [...]

注意,当前顶点属性值没有在顶点数组对象中说明。

必须禁用具有指定索引的顶点属性:

glBindVertexArray(VAO);
glDisableVertexAttribArray(0);

推荐阅读