c++ - 指没有glGetUniformLocation的制服

标签 c++ opengl glsl opengl-3 opengl-4

在我的着色器中,我喜欢使用如下语法:
layout (location = 0) in vec3 aPos;
这样我就可以在0中使用索引glVertexAttribPointer等,从而节省了glGetAttribLocation调用的工作量。我想对uniform值做同样的事情,但是如果我这样做

layout (location = 2) uniform float offset;


我的顶点着色器无法编译。有什么办法可以实现相同的行为,而不使用glGetUniformLocation

最佳答案

OpenGL 4.3 or the ARB_explicit_uniform_location extension允许您使用该语法在着色器中指定统一位置。因此,您的着色器#version需要为430,或者您需要激活着色器中的扩展名才能使用此语法。

关于c++ - 指没有glGetUniformLocation的制服,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60670744/

相关文章:

java - 着色器 Java OpenGL 代码内没有错误,但窗口内没有渲染任何内容

opengl - OpenGL中的轮廓效果

glsl - WebGL vec4() 描述

C++ OOP - 数组(矩阵)乘法、删除对象

c++ - 如何在 map 中实现终点?

c++ - SDL 2 程序使用 1.4 GB 内存?

c++ - 使用 Tab 键浏览编辑框不起作用 C++

c++ - 二维角色的 move 仅在一个方向上有效

OpenGL - 如何绘制到多采样帧缓冲区,然后将结果用作普通纹理?

opengl-es - 如何在 GLSL ES 中确定纹理的偶数/奇数线