gpt4 book ai didi

java - 将 Sprite 颜色更改为白色

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:55 25 4
gpt4 key购买 nike

我正在尝试将 Sprite 的颜色(红色和灰色)更改为白色。

sprite.setColor(1, 1, 1, 1);

但什么也没有发生。

如何将所有 Sprite 颜色更改为白色?

最佳答案

如果您想将 Sprite 中所有形状的颜色更改为白色,那么唯一的方法是使用像素着色器并将所有片段设置为非黑色(我假设黑色呈现为透明在你的游戏中)变白。类似的东西:

varying vec4 v_color;
varying vec2 v_texCoords;
uniform sampler2D u_texture;
void main() {
vec4 color=v_color * texture2D(u_texture, v_texCoords);

if(color.r!=0 && color.g!=0 && color.b!=0){
gl_FragColor=vec4(1,1,1,1);
}
else{
gl_FragColor=color;
}
}

如果你不幸使用 opengl 1.0(固定管道),我建议你切换到 gles 2.0,因为你是初学者。固定管道是从 90 年代开始的,我们在 2013 年!

代码:

初始化:

  ShaderProgram.pedantic = false;

ShaderProgram defaultShader=SpriteBatch.createDefaultShader();

ShaderProgram shaderWhiteTexture=new ShaderProgram(Gdx.files.internal("vertexShader.vs").readString(),Gdx.files.internal("fragShader.fs").readString());

渲染:

//Render the textures with the normal colors 
spriteBatch.begin();
spriteBatch.draw(sprite1,sprite2,sprite3...);//or whatever code u use to render them
spriteBatch.end();

//Render the textures with the shader
spriteBatch.setShader(shaderWhiteTexture);
spriteBatch.begin();
spriteBatch.draw(sprite4,sprite5,sprite6...);//or whatever code u use to render them
spriteBatch.end();
spriteBatch.setShader(defaultShader);

着色器:

//vertexShader.vs:
attribute highp vec4 a_position;
attribute highp vec4 a_color;
attribute highp vec2 a_texCoord0;
uniform mat4 u_projTrans;

varying highp vec4 v_color;
varying highp vec2 v_texCoords;

void main() {
v_color = a_color;
v_texCoords = a_texCoord0;
gl_Position = u_projTrans * a_position ;
}

//fragShader.fs:
varying highp vec4 v_color;
varying highp vec2 v_texCoords;
uniform sampler2D u_texture;
void main() {

gl_FragColor = vec4(0.0);

highp vec4 color = texture2D(u_texture, v_texCoords);

if(color.a > 0.0) {
gl_FragColor = vec4(1.0,0,0,1.0);
}

}

由问题所有者编辑:现在可以使用透明纹理

添加了什么?:

1 . the highp precision to variables
2 . the fragmentShader file Main() fonction edited

关于java - 将 Sprite 颜色更改为白色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com