GLSL-#version 130中的“布局(位置= 1)”的等效项

问题描述 投票:15回答:1

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

layout (location = 1) in vec4 position;

产生错误。最重要的是,将“布局”的多个实例应用于不同变量的代码不起作用。我什至尝试过

#extension ARB_explicit_attrib_location : require

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

layout compatibility glsl
1个回答
19
投票

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

并且从技术上讲,您的“硬件”可以做到这一点。 NVIDIA和ATI在驱动程序中仍支持的所有硬件中均支持此扩展。这是API的便利。我猜您正在使用某些Intel硬件。如果是这样,你有我的同情。

顺便说一句,是glBindAttribLocation

© www.soinside.com 2019 - 2024. All rights reserved.