0
我是新来的OpenGL和Android找不到在论坛所以在这里我的答案之间的2D路口...的Android的Opengl个图文对象
我需要能够只对“画”两个三角形的交集。我试图使用模板测试,但它不能在android模拟器中工作。
然后,我尝试使用深度测试,它的工作原理,但只有几分之一秒,然后屏幕变为空白。
我与深度大小为8
我在做什么错了一个配置?
这是我写的绘制2D“场景”,以验证裁剪粗代码工作
gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT | GL10.GL_STENCIL_BUFFER_BIT);
gl.glColorMask(false, false, false, false);
outlineColor.setAsActive(gl);
triangleOne(gl);
gl.glDepthFunc(GL10.GL_EQUAL);
gl.glColorMask(true, true, true, true);
fillColor.setAsActive(gl);
triangleTwo(gl);
gl.glDisable(GL10.GL_DEPTH_TEST);
这里是三角形...
private void triangleOne(GL10 gl) {
float[] coords = { 1f, height, width, height/2, 1f, 1f };
drawItem(gl, 2, coords);
}
private void triangleTwo(GL10 gl) {
float[] coords = { width, height, width, 1f, 1f, height/2 };
drawItem(gl, 2, coords);
}
private void drawItem(GL10 gl, int size, float[] coords){
fillColor.setAsActive(gl);
FloatBuffer vertexBuffer;
ByteBuffer vbb = ByteBuffer.allocateDirect(coords.length * 4);
vbb.order(ByteOrder.nativeOrder());
vertexBuffer = vbb.asFloatBuffer();
vertexBuffer.put(coords);
vertexBuffer.position(0);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(size, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glDrawArrays(GL10.GL_TRIANGLES, 0, vertexBuffer.capacity()/size);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}
感谢您的帮助