Java 灰度着色器不工作,正在删除alpha渲染
我正在尝试开发一个着色器,它只是一个简单的灰度着色器。游戏正在运行,但着色器没有任何效果,之前使用0.5 Alpha渲染的任何纹理现在看起来都像是使用完全Alpha渲染的 灰度垂直Java 灰度着色器不工作,正在删除alpha渲染,java,opengl,opengl-es,libgdx,Java,Opengl,Opengl Es,Libgdx,我正在尝试开发一个着色器,它只是一个简单的灰度着色器。游戏正在运行,但着色器没有任何效果,之前使用0.5 Alpha渲染的任何纹理现在看起来都像是使用完全Alpha渲染的 灰度垂直 uniform mat4 u_projTrans; attribute vec4 a_position; attribute vec2 a_texCoord0; attribute vec4 a_color; varying vec4 v_color; varying vec2 v_texCoord;
uniform mat4 u_projTrans;
attribute vec4 a_position;
attribute vec2 a_texCoord0;
attribute vec4 a_color;
varying vec4 v_color;
varying vec2 v_texCoord;
void main(){
gl_Position = u_projTrans * a_position;
v_texCoord = a_texCoord0;
v_color = a_color;
}
灰度图
#ifdef GL_ES
precision mediump float;
precision mediump int;
#else
#define highp;
#endif
uniform sampler2D u_texture;
varying vec4 v_color;
varying vec2 v_texCoord;
const vec3 grayScaleMultiplier = vec3(0.299,0.587,0.114);
void main(){
vec4 texColor = texture2D(u_texture,v_texCoord);
vec3 gray = vec3(dot(texColor.rgb,grayScaleMultiplier));
gl_FragColor = vec4(gray.r,gray.g,gray.b,texColor.a);
}
以及如何应用着色器
shaderProgram = new ShaderProgram(Gdx.files.internal("shaders/grayscale.vert"),Gdx.files.internal("shaders/grayscale.frag"));
testBatch.setShader(shaderProgram);
if(!shaderProgram.isCompiled()) {
System.out.println(shaderProgram.getLog());
}
我的渲染调用
Gdx.gl20.glClearColor(1,1,1,255);
Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT);
mapLayerManager.render();
batch.begin();
for(AbstractEnemy enemy : allEnemys){
enemy.render(batch);
}
batch.end();
lightManager.render(batch);
shapeRenderer.begin();
shapeRenderer.setColor(0,0,0,100);
shapeRenderer.set(ShapeRenderer.ShapeType.Filled);
for(AbstractEnemy enemy : allEnemys){
enemy.render(shapeRenderer);
}
shapeRenderer.set(ShapeRenderer.ShapeType.Line);
shapeRenderer.setColor(0,0,0,255);
shapeRenderer.end();
batch.begin();
player.render(batch);
batch.end();
world.step(1/45f,6,2);
我没有收到任何编译错误,也不知道哪里出了问题。绘图调用时的GL状态完全不清楚,因此无法查明到底发生了什么。发布a。我不太明白我可以发布什么?我的渲染调用是通常的clear screen batch.beginn,然后是rendering和batch.render在End您没有两个不同的sprite批,是吗?我看到您将着色器应用于
testBatch
,但使用batch
绘制。哦,不,是同一批。我只是将渲染方法复制在一起,因为我将其结构化为一个级别系统