我正在创建一个仅在横向模式下运行的应用程序。我正在尝试使用带纹理的四边形创建背景,尽管我还不会担心纹理。我一直在尝试简单地绘制一个从 drawOverlay(GL10 gl) 填充屏幕的四边形,并禁用 GL_DEPTH_TEST 但每当我这样做时,四边形都不会完全填满屏幕,我可以在底部和顶部看到 glClearColor 条屏幕。
无法使用我用于所有其他对象的模型视图矩阵来绘制它,我尝试使用 gluOrtho2D 和 glOrthof 来绘制它,但它们都不起作用。我真的不明白近和远剪裁平面如何与正交绘图一起使用。每当我尝试使用 glOrtho2D 或 glOrthof 绘制它时,根本没有绘制四边形(尽管场景的其余部分仍然被渲染)。
这是我尝试使用正交矩阵进行绘制
private void drawOverlay(GL10 gl) {
gl.glDisable(GL10.GL_DEPTH_TEST);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glPushMatrix();
gl.glLoadIdentity();
GLU.gluOrtho2D(gl, 0f, 1f, 1f, 0f);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
background.draw(gl, 1.0f, 1.0f, 1.0f, 1.0f);
gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glPopMatrix();
gl.glMatrixMode(GL10.GL_MODELVIEW);
}
我从 onDrawFrame 的开头调用该函数 - 在绘制其他任何内容之前:
public void onDrawFrame(GL10 gl) {
drawOverlay(gl);
gl.glLoadIdentity
//...
}
以下是“背景”的创建方式:
background = new ShapePostcard(1f, 1f);
我相当确定我无法使用普通的模型视图矩阵让四边形覆盖屏幕,但基本上我所做的只是在禁用深度测试的所有其他内容之前在 onDrawFrame 中绘制“背景”。
感谢您的支持!