((LibGDX)OpenGL着色器统一不起作用

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

因此,我试图做一个非常简单的事情,我有一个4x4的图像,并且试图制作一个可以改变该图像颜色的着色器。这是用于颜色选择器。 (渐变图像叠加和单独的HSV轮)着色器实际上只是一个统一的输出,它在不使用统一的情况下有效。 shaderProgram正确编译,并使用shaderProgram.hasUniform("pickedColour")返回true

这里是着色器(片段)

#version 300 es
precision mediump float;
uniform vec4 pickedColour;
out vec4 colour;

void main() {
    colour = pickedColour;//doesn't work
    //colour = vec4(0, 0, 0, 1);//does work
}

我使用此设置制服:shaderProgram.setUniformf("pickedColour", 0.0f, 0.0f, 0.0f, 1.0f);。我在网上看了一下,发现shaderProgram会扔掉未使用的制服,但是由于spritebatch的问题,我将pedantic设置为false,因此无法检查情况是否如此。顶点着色器中没有pickleColour(也没有其他任何东西),但那里还是没有用。

opengl-es libgdx
1个回答
0
投票

您应该阅读wiki article on shaders

这里的问题是您没有使用正确的变量来设置输出颜色。您需要使用预定义的gl_FragColor

#version 300 es
precision mediump float;

uniform vec4 pickedColour;

void main() {
    gl_FragColor = pickedColour;
}
© www.soinside.com 2019 - 2024. All rights reserved.