GLSL - 程序链接错误:插槽 0 在布局位置请求中不可用
GLSL - program link error: Slot 0 unavailable from layout location request
我正在尝试绘制一个带纹理的四边形,从教程中复制一些代码,但恐怕着色器有问题。
顶点着色器和片段着色器编译都可以工作,但是在链接程序时出现错误:
错误:活动属性别名。插槽 0 不适用于来自"顶点" 布局位置请求。
第二个向量的位置不应该是(位置 = 1)吗?
我使用 SDL2 窗口 - OpengGL 上下文: OpenGL 版本: 4.1 INTEL-10.6.20 (MAC OSX)
这些是着色器文件:
vertex.glsl
#version 330 core
layout(location = 0) in vec3 vertex;
layout(location = 0) in vec2 uv;
// will be used in fragment shader
out vec2 uv_frag;
void main(){
uv_frag = uv;
gl_Position = vec4(vertex, 1.0);
}
fragment.glsl
#version 330 core
// has to have same name as vertex shader
in vec2 uv_frag;
// our texture
uniform sampler2D tex;
// actual output
// gl_FragColor is deprecated
out vec4 frag_color;
void main(){
frag_color = texture(tex, uv_frag);
}
嗯,情况很清楚。你自己已经给出了答案。
第二个向量的位置不应该是(位置 = 1)吗?
是的。或者不太具体:它应该是 0 以外的其他东西。出于显而易见的原因,属性位置在单个程序中必须是唯一的。您从任何地方复制的代码都是无效的。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 将值指定给向量(2D)的向量中的某个位置
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 如何在boost beast http请求中设置http头
- 发送一个带有libcurl C++问题的帖子请求:s
- 如何使用cudaMallocManaged在指针位置初始化对象?(C++)
- 在多个核心中处理一个HTTP请求
- 无法获取webot::PositionSensor对象中位置传感器的值
- 非常量变量只读位置的赋值
- 如何定义更改car类中car位置的方法
- 使用迭代器时如何访问对象在向量中的位置?
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 求最大元素位置的分治算法
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 为什么我的点没有在 OpenGL 中绘制鼠标所在的位置?
- 有没有办法请求在C 中读取文本文件的某个位置
- GLSL - 程序链接错误:插槽 0 在布局位置请求中不可用