我正在创建一个仅在景观模式下运行的应用程序。我正在尝试使用纹理四边形来创建背景,尽管我不必担心纹理。我一直在尝试简单地绘制一个四边形,该四边形填充屏幕(gl10 gl)用gl_depth_test禁用,但是每当我这样做时,Quad并没有完全填充屏幕,我可以看到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);
我可以肯定的是,我将无法使用普通模型视图矩阵来覆盖屏幕,但基本上我所做的只是在on Drawdframe中绘制"背景",然后在其他所有内容都禁用了深度测试之前。
感谢您的任何支持!
绘制填充屏幕的四边形的最简单方法是将投影和模型同时设置为身份矩阵,然后用坐标[-1,-1]绘制一个网格[1,1]。当您看到边界时,这是您所绘制的吗?我的意思是,
(x, y, widht, height) = (-1,-1, 2, 2)
opengl es不支持Quads。
http://www.songho.ca/opengl/gl_vertexarray.html