2

描画しようとしている OpenGL ES オブジェクトがあります。オブジェクトには、x 座標と y 座標が -30,000 から +30,000 の間にあるかなり大きな頂点値があります。z 値は 2000 から -2000 の間です。

ビューポートの設定方法を教えてもらえますか? 私は次のコードを使用しています:

public void onSurfaceChanged(GL10 gl, int width, int height) {
    //Define the view frustrum
    gl.glViewport(0, 0, width, height);
    gl.glMatrixMode(GL10.GL_PROJECTION);
    gl.glLoadIdentity();
    float ratio = (float)width/height;
    GLU.gluPerspective(gl, 45.0f, ratio, 1, 100f);
}

public void onDrawFrame (GL10 gl) {
    // Clear the screen to black.
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    //Position the model.
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    gl.glLoadIdentity();
    gl.glTranslatef(0.0f, 0.0f, 0.0f);
    //gl.glScalef(0.000015f,0.000015f,0.000015f);

これは正常にコンパイルされますが、オブジェクトがまったく表示されません。

ありがとうございました。

4

1 に答える 1

1

カメラがオブジェクトの内部にあるため、おそらく見えません。最初に 0.001 でスケーリングして幅を約 60 単位にし、z 方向に -50 だけ移動させて (z 範囲の中央に合わせる)、それが表示されるかどうかを確認してください。

または、z 範囲を大きくして、z 方向に -50,000 単位だけ移動して、オブジェクトをカメラから戻すこともできます。znear/zfar を調整して、さらに大きくする必要があります。

于 2012-05-15T18:06:44.230 に答える