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 回答