OpenGL ES 2 - 顶点的颜色和纹理

时间:2014-07-30 15:24:22

标签: java android opengl-es

我正在使用OpenGL ES 2.0制作程序。我需要在另一个上面渲染纹理,就像钟针一样。纹理都是1024 x 1024并且是透明的。透明度始终呈现黑色,这使我无法在时钟上覆盖时钟指针纹理。

simple_fragment_shader.glsl

precision mediump float;

varying vec4 v_Color;

void main() 
{
    gl_FragColor = v_Color;
}

simple_vertex_shader.glsl

uniform mat4 u_Matrix;

attribute vec4 a_Position;  
attribute vec4 a_Color;

varying vec4 v_Color;

void main()                    
{                            
    v_Color = a_Color;

    gl_Position = u_Matrix * a_Position;
    gl_PointSize = 10.0;          
}          

texture_fragment_shader.glsl

precision mediump float; 

uniform sampler2D u_TextureUnit;                                        
varying vec2 v_TextureCoordinates;                                          

void main()                         
{                               
    gl_FragColor = texture2D(u_TextureUnit, v_TextureCoordinates);    
}

texture_vertex_shader.glsl

uniform mat4 u_Matrix;

attribute vec4 a_Position;  
attribute vec2 a_TextureCoordinates;

varying vec2 v_TextureCoordinates;

void main()                    
{                            
    v_TextureCoordinates = a_TextureCoordinates;          
    gl_Position = u_Matrix * a_Position;    
}          

我是OpenGL的新手,我使用过纹理,但我不知道如何获得透明度。

此外,如果这有帮助,我可以按照 OpenGL ES 2 for Android 中的Kevin Brothaler的 The Pragmatic Programmers 中的方法进行操作。

1 个答案:

答案 0 :(得分:1)

如果没有以下设置,可能会忽略Alpha值。

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

我希望这可以帮助你:)。