ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java-将精灵颜色更改为白色

2019-10-30 04:00:32  阅读:241  来源: 互联网

标签:libgdx colors sprite java


我正在尝试将白色的精灵颜色更改为红色和灰色.

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

但是什么也没发生.

如何更改白色的所有精灵颜色?请,谢谢

解决方法:

如果要将精灵中所有形状的颜色更改为白色,则唯一的方法是使用像素着色器并将所有非黑色的片段设置为黑色(我假设黑色在您的游戏中呈现为透明) )到白色.像这样:

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

标签:libgdx,colors,sprite,java
来源: https://codeday.me/bug/20191030/1965171.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有