glGetAttribLocation()返回-1,但变量是统一的,如何修复它
glGetAttribLocation() returns -1 but the variable is uniform, How to fix it?
这是我的着色器"三角形.vert":
#version 430 core
layout(location = 0) in vec4 vPosition;
layout(location = 1) in vec4 vColor;
uniform mat4 vRota;
out vec4 color;
void main()
{
color = vColor;
gl_Position = vRota * vPosition;
}
这是C++源代码的片段:
ShaderInfo shaders[] =
{
{ GL_VERTEX_SHADER, "triangles.vert" },
{ GL_FRAGMENT_SHADER, "triangles.frag" },
{ GL_NONE, NULL }
};
GLuint program = LoadShaders(shaders);
glUseProgram(program);
//...
int vRota_loc = glGetAttribLocation(program, "vRota");
if (vRota_loc == -1)
{
cout << "No uniform match for 'vRota'" << endl;
}
它返回-1,但我不知道为什么。
我是不是在着色器中做错了什么?
ps LoadShaders()
是用于编译和链接着色器程序的函数。它是由我正在练习的一本书作为源文件提供的。所以我认为不会出现错误。
glGetAttribLocation
用于顶点属性,即顶点着色器中的in
变量(如vPosition
)。您需要glGetUniformLocation
。
uniform
不是属性。您需要使用glGetUniformLocation
CCD_ 8对于每个顶点是一致的,而CCD_。
相关文章:
- 修复未初始化的局部变量错误
- 使用互斥锁和条件变量作为成员时如何修复"use of deleted function"?
- 如何修复初始化后'stack around variable was corrupted.'变量未更改为分配的值
- 如何修复条件变量等待/通知的竞争条件
- 如何修复访问动态数组中结构中的字符串变量时"segmentation fault (core dumped)"错误
- 如何修复C 中向量的过载变量错误
- 如何修复 Typedef 变量未识别错误 C++ (Visual Studio 2017)
- 如何修复编译错误"此函数或变量可能不安全"(strcpy)
- 功能和变量从何而来
- 是否有一种方法可以修复编译器未找到特定的OPENCV变量/函数
- 从函数返回变量地址时如何修复"与局部变量关联的堆栈内存地址"?
- 如何修复"*私有变量*是'*类名*'错误的私有成员
- 全局变量和类变量有何不同,它们是相同的吗
- glGetAttribLocation()返回-1,但变量是统一的,如何修复它
- 来自非初始化变量的值从何而来
- 如何修复总帐单变量的显示
- 创建动态数组后,"i"变量不知从何而来
- 如何修复使用变量初始化数组时出错
- 全局排序和每原子变量排序有何不同
- 如何正确修复对全局变量的循环依赖关系