我想在OpenGL ES 2.0中製作透明對象。我設置了GL瓦特/以下PARAMS:在着色器中使用alpha測試的OpenGL ES 2.0透明度
GLES20.glEnable(GLES20.GL_DEPTH_TEST);
GLES20.glDepthFunc(GLES20.GL_LESS);
GLES20.glDisable(GLES20.GL_BLEND);
GLES20.glClearDepthf(1.0f);
這裏是着色器代碼:
private final String mVertexShader = "uniform mat4 uMVPMatrix;\n" +
"attribute vec4 aPosition;\n" +
"attribute vec2 aTextureCoord;\n" +
"varying vec2 vTextureCoord;\n" +
"void main() {\n" +
" gl_Position = uMVPMatrix * aPosition;\n" +
" vTextureCoord = aTextureCoord;\n" +
"}\n";
private final String mFragmentShader = "precision mediump float;\n" +
"varying vec2 vTextureCoord;\n" +
"uniform sampler2D sTexture;\n" +
"void main() {\n" +
" vec4 base = texture2D(sTexture, vTextureCoord);\n" +
" if(base.a < 0.5){ discard; }\n" +
" gl_FragColor = base;\n" +
"}\n";
得到的渲染圖像:http://imgur.com/hNqm0http://imgur.com/dmS2O。 請告訴我我在做什麼錯,它在Rendermonkey OpenGL ES模式下渲染得很好。
如果我使用
GLES20.glDisable(GLES20.GL_BLEND);
初始化OpenGL的我得到正確的透明度,而且沒有三角形的順序。在這種情況下可能會進行一些排序?
是的,我不整理三角形,alpha測試不需要三角形進行排序。 – keaukraine 2012-08-09 20:21:40