GLSL - 相当于"layout(location = 1)"在#version 130中

Fej*_*win 15 layout compatibility glsl

我正在阅读关于openGL 3.3的教程(当然正在使用GLSL 330).不幸的是我的硬件仅限于openGL 3.0(其中GLSL 130是最新的格式).在GLSL 130中的语法

layout (location = 1) in vec4 position;
Run Code Online (Sandbox Code Playgroud)

产生错误.最重要的是,将几个"布局"实例应用于不同变量的代码不起作用.我甚至试过了

#extension ARB_explicit_attrib_location : require
Run Code Online (Sandbox Code Playgroud)

这也是不受支持的.有没有办法从330中等效地重写330这些语句?

Nic*_*las 19

如果您的实现不支持ARB_explicit_attrib_location(作为扩展名或作为扩展名version 330或更高版本),则您不能使用显式属性位置.您必须在链接阶段之前指定它们glBindAttribLocation.

从技术上讲,你的"硬件"可以做到这一点.NVIDIA和ATI在所有仍支持驱动程序的硬件中支持此扩展.这是API的便利.我猜你是英特尔硬件的一部分.如果是这样,你有同情心.

顺便说一下,这是我的代码,偶然吗?

  • 对,就是这样!那是我正在做的教程!=)哇!想想,我会在广告www中遇到创作者.作为一点反馈:我无法在您的教程中获得创建窗口的框架.它在code :: blocks中给出错误,并且在vs2010中只显示没有窗口.我使用的是另一个在其他地方找到的不同的openGL上下文.我只是复制了那些特定教程的重要内容,并且它有效.除此之外 - 你的教程中的解释很棒! (7认同)