Android上的OpenGL ES坐标系?

Android上的OpenGL ES坐标系?,android,opengl-es,eclipse-cdt,android-ndk,native-code,Android,Opengl Es,Eclipse Cdt,Android Ndk,Native Code,我是Android开发新手,现在我正在使用NDK玩OpenGL ES 1。不幸的是,坐标系出了问题。在官方示例中,以下代码用于获取Opengl曲面的宽度和高度 eglQuerySurface(display, surface, EGL_WIDTH, &w); eglQuerySurface(display, surface, EGL_HEIGHT, &h); 现在,当我想用 glViewport( 0, 0, w ,h ); 我渲染一个四边形,然后这个四边形不是四边形,它是一

我是Android开发新手,现在我正在使用NDK玩OpenGL ES 1。不幸的是,坐标系出了问题。在官方示例中,以下代码用于获取Opengl曲面的宽度和高度

eglQuerySurface(display, surface, EGL_WIDTH, &w);
eglQuerySurface(display, surface, EGL_HEIGHT, &h);
现在,当我想用

glViewport( 0, 0, w ,h );
我渲染一个四边形,然后这个四边形不是四边形,它是一个变形的矩形,居中


如何正确设置视口和坐标系?

您已正确设置视口;您需要调整投影矩阵(如果您使用的是ES 2.0而不是1.x,则需要调整投影矩阵或等效矩阵)。例如


OpenGL对像素或视口的纵横比不作任何假设-您必须自己组织。

好的,谢谢您,但在OpenGL ES 1.x中如何才能做到这一点?OpenGL ES 1.x不支持glFrustum。glFrustum是ES 1.x的一部分,有关文档,请参阅,以获取它在1.0和1.1中的证据。编辑:但是里面没有第二个“r”,有可能你只是因为打字错误而遇到麻烦吗?
glMatrixMode(GL_PROJECTION);
glFrustumf(-(float)w/h, (float)w/h, -1, 1, 1, 500);