我们使用Opengl ES 2.0 for android,并试图显示两个堆叠在一起的多维数据集。为此,我们有两个vertexbuffers(mCubePositions1和mCubePositions2),其存储Cubedata(顶点结合,三角形),并要求他们每个人一个单独的绘制方法:Android OpenGL ES 2.0多功能对象
GLES20.glVertexAttribPointer(mPositionHandle, mPositionDataSize, GLES20.GL_FLOAT, false,0, mCubePositions1); //the second time mCubePositions2
GLES20.glEnableVertexAttribArray(mPositionHandle);
//some Code concerning lightning and textures
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 36);
时将显示结果两个立方体,但是如果我们让它们旋转,第二个绘制的立方体始终显示在顶部(第二个立方体在第一个立方体中闪烁)。 在onSurfaceCreated方法中,我们初始化深度缓冲:
// Set the background clear color to black.
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
GLES20.glClearDepthf(1.0f);
// Use culling to remove back faces.
GLES20.glEnable(GLES20.GL_CULL_FACE);
// Enable depth testing
GLES20.glEnable(GLES20.GL_DEPTH_TEST);
GLES20.glDepthFunc(GLES20.GL_LEQUAL);
GLES20.glDepthMask(true);
有两个缓冲器合并成一个,不是要求只是一个拉法的解决方案,但这不是我们的一个解决方案,因为我们要单独移动立方体。
如果这不是答案的代码,请询问更多。
谢谢你的每一个答案:)
当初始化'GLSurfaceView'时,你有'setEGLConfigChooser()'调用吗?如果是的话,你在那里请求深度缓冲区吗? –
非常感谢。我们称这种方法是因为一个教程,但并不知道所有参数的含义。为depth-buffer添加一个值解决了我们的问题:) – AutomatProject