编译顶点着色器程序失败

科学的

我正在使用OpenGL进行第一步,偶然发现了我的顶点着色器程序中的一个问题:

#version 330 core
layout (location = 0) in vec3 aPos;
uniform mat4 inputTransform;
void main()
{
   gl_Position = inputTransform * vec4(aPos, 1.0);
}

编译并运行良好,但是当我将第一行更改为

#version 130 core

因为我必须最大程度地使用OpenGL 3.0,所以它首先抱怨“ location”语句。当我删除它时,该行的其余错误消息

layout in vec3 aPos;

ERROR: 0:2: 'in' : syntax error syntax error

这是怎么回事-我必须如何在此版本的语言中声明输入变量?

拉比德76

输入布局限定符已添加到GLSL版本1.50中,该版本对应于OpeneGL版本3.2

请参阅OpenGL Shading Language 1.50规范;-4.3.8.1输入布局限定符;第37页

输入布局限定符由关键字组成,layout后跟layout-qualifier-id-list
仅仅删除layout-qualifier-id-list是不够的,您也必须删除关键字layout

in vec3 aPos;

语法错误是由以下事实引起的,即它不是正确的语法,layout其后是in


glGetAttribLocation链接程序后,您必须要求提供属性索引,或者链接glBindAttribLocation着色器程序之前,您必须指定属性位置

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章