gpt4 book ai didi

java - Android OpenGL ES 1 : Filling display with a quad

转载 作者:行者123 更新时间:2023-12-01 04:56:45 24 4
gpt4 key购买 nike

我正在创建一个仅在横向模式下运行的应用程序。我正在尝试使用带纹理的四边形创建背景,尽管我还不会担心纹理。我一直在尝试简单地绘制一个从drawOverlay(GL10 gl)填充屏幕的四边形,并禁用GL_DEPTH_TEST,但每当我这样做时,四边形都不会完全填充屏幕,我可以在底部和顶部看到glClearColor的条形屏幕。

无法使用我用于所有其他对象的模型 View 矩阵来绘制它,我尝试使用 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);

我相当确定我无法使用正常的模型 View 矩阵让四边形覆盖屏幕,但基本上我所做的就是在禁用深度测试的情况下在 onDrawFrame 中绘制“背景”,然后再进行其他操作.

感谢您的支持!

最佳答案

绘制填充屏幕的四边形最简单的方法是将投影和模型都设置为单位矩阵,然后绘制坐标为 [-1,-1] 到 [1,1] 的网格。当你看到边框时,这就是你所画的吗?我的意思是,

 (x, y, widht, height) = (-1,-1, 2, 2)

关于java - Android OpenGL ES 1 : Filling display with a quad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com