我写了一对着色器,将纹理显示为灰度而不是全彩.我将这些着色器与libGDX内置的SpriteBatch类一起使用,并且它有效.然后,当我尝试将它与内置的SpriteCache类一起使用时,它不起作用.我查看了SpriteCache代码,看到它设置了一些我试图考虑的不同制服,但我似乎已经出错了.
libGDX中的SpriteCache类设置以下制服:
customShader.setUniformMatrix("u_proj", projectionMatrix);
customShader.setUniformMatrix("u_trans", transformMatrix);
customShader.setUniformMatrix("u_projTrans", combinedMatrix);
customShader.setUniformi("u_texture", 0);
Run Code Online (Sandbox Code Playgroud)
这是我的顶点着色器:
attribute vec4 a_position;
attribute vec4 a_color;
attribute vec2 a_texCoord0;
uniform mat4 u_proj;
uniform mat4 u_projTrans;
uniform mat4 u_trans;
varying vec4 v_color;
varying vec2 v_texCoords;
void main() {
v_color = a_color;
v_texCoords = a_texCoord0;
gl_Position = a_position* u_proj * u_trans;
}
Run Code Online (Sandbox Code Playgroud)
这是片段着色器:
varying vec4 v_color;
varying vec2 v_texCoords;
uniform sampler2D u_texture;
uniform u_projTrans;
void main() {
vec4 color = texture2D(u_texture, v_texCoords).rgba;
float gray = (color.r + color.g + color.b) / …Run Code Online (Sandbox Code Playgroud)