1

横向きモードでのみ実行されるアプリを作成しています。テクスチャリングについてはまだ心配するつもりはありませんが、テクスチャリングされたクワッドを使用して背景を作成しようとしています。GL_DEPTH_TEST を無効にして drawOverlay(GL10 gl) から画面を塗りつぶすクワッドを単純に描画しようとしましたが、それを行うたびにクワッドが画面を完全に塗りつぶさず、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 で「背景」を描画することだけでした。

ご支援ありがとうございます。

4

2 に答える 2

0

画面いっぱいにクワッドを描画する最も簡単な方法は、投影とモデルの両方を単位行列に設定し、座標 [-1,-1] から [1,1] でメッシュを描画することです。ボーダーを見たときに描いていたのはこれでしたか?つまり、

 (x, y, widht, height) = (-1,-1, 2, 2)
于 2012-12-19T21:10:19.503 に答える
0

OpenGL ES はクワッドをサポートしていません。

http://www.songho.ca/opengl/gl_vertexarray.html

于 2012-12-19T21:12:49.613 に答える