【发布时间】:2014-08-07 14:52:37
【问题描述】:
我想在 OpenGL ES 3.0 中绘制隐形三角形。我认为将 Alpha 通道设为零就可以了。 这是我传递三角形顶点的方式:
在我的构造函数中,我正在初始化我的三角形顶点:
final float[] triangle2VerticesData = {
// X, Y, Z,
// R, G, B, A
-0.5f, -0.25f, 0.0f,
1.0f, 1.0f, 0.0f, 0.0f, // Alpha is zero
0.5f, -0.25f, 0.0f,
0.0f, 1.0f, 1.0f, 0.0f, // Alpha is zero
0.0f, 0.559016994f, 0.0f,
1.0f, 0.0f, 1.0f, 0.0f}; // Alpha is zero
额外信息:
在 onSurfaceCreated 中:
GLES20.glClearColor(0.5f, 0.5f, 0.5f, 0.5f);
// ... Creating and attaching shaders, creating veiw matrix using Lookat
在 onDrawFrame 中:
GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
// ... performaing simple rotation and passing MVP to shaders
在着色器中:
最终字符串 vertexShader = "统一 mat4 u_MVPMatrix;\n"
+ "attribute vec4 a_Position; \n"
+ "attribute vec4 a_Color; \n"
+ "varying vec4 v_Color; \n"
+ "void main() \n"
+ "{ \n"
+ " v_Color = a_Color; \n"
+ " gl_Position = u_MVPMatrix \n"
+ " * a_Position; \n"
+ "} \n";
final String fragmentShader =
"precision mediump float; \n"
+ "varying vec4 v_Color; \n"
+ "void main() \n"
+ "{ \n"
+ " gl_FragColor = v_Color; \n"
+ "}
我可以通过播放 R G B 值来改变三角形的颜色。 但是当 A(Alpha) 设置为 1.0f 或 0.0f 时不会对透明度/不可见性产生任何变化吗? 谁能告诉我哪里出错了?
【问题讨论】:
标签: android opengl-es opengl-es-2.0