我有一个正试图绘制的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);


这样可以编译,但是我根本看不到我的对象。

谢谢。

最佳答案

您可能看不到它,因为相机位于对象内部。也许先尝试将其缩放0.001,以将其缩小到约60个单位,然后将其在z方向上平移-50(以使其达到z范围的中间),然后查看它是否出现。

或者,您可以将z范围扩大很多,并在z方向上平移-50,000单位以将对象从相机移回。您必须将znear / zfar调整为更大。

10-07 17:11