【发布时间】:2015-07-29 13:13:31
【问题描述】:
我想在我的 2D-libgdx-project 中使用一个简单的着色器,使用 OpenGL ES。我以前从未使用过 OpenGL ES,所以也许我的标题不对?
顶点着色器:
in vec3 position;
in vec2 textureCoords;
out vec2 passTextureCoords;
void main(void)
{
gl_Position = vec4(position.x, position.y, position.z, 1.0);
passTextureCoords = textureCoords;
}
片段着色器:
#ifdef GL_ES
precision mediump float;
#endif
in vec2 passTextureCoords;
out vec4 outColour;
uniform sampler2D textureSampler;
void main(void)
{
// Get color at coordinate by sampler and output it
// outColour = texture(textureSampler, passTextureCoords);
// gl_FragColor = vec4(1.0,0.0,0.0,1.0);
outColour = vec4(1.0, 0.0, 0.0, 1.0);
}
实际上,我过去经常使用 OpenGL 3+,但从未与 Libgdx 一起使用,也从未使用 OpenGL ES。
这个着色器应该做什么:取每个像素并返回红色。但我得到的都是白色的。
我是这样创建的:
private ShaderProgram shader;
this.shader = new ShaderProgram(Gdx.files.internal("shaders/test.vertex").readString(), Gdx.files.internal("shaders/test.fragment").readString());
this.shader.pedantic = false;
然后像这样渲染:
public void render(SpriteBatch spriteBatch)
{
spriteBatch.setShader(this.shader);
model.render(spriteBatch);
spriteBatch.setShader(null);
outline.render(spriteBatch);
}
我得到的只是模型的白色,而不是红色。所以我猜有些不对劲。我不想再指定任何制服,所以我将 pedantic 设置为 false。我做错了什么?
【问题讨论】:
标签: java opengl-es libgdx shader