【问题标题】:OpenGL ES Coordinate System on Android?Android上的OpenGL ES坐标系?
【发布时间】:2011-04-05 18:13:07
【问题描述】:

我是 Android 开发新手,目前我正在使用 NDK 玩 OpenGL ES 1。不幸的是,我遇到了坐标系的问题。在官方的例子中,下面的代码是用来获取Opengl Surface的宽高的。

eglQuerySurface(display, surface, EGL_WIDTH, &w);
eglQuerySurface(display, surface, EGL_HEIGHT, &h);

现在当我想设置视口时

glViewport( 0, 0, w ,h );

然后我渲染一个四边形,然后这个四边形不是一个四边形,它是一个变形的矩形并且居中。

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

【问题讨论】:

    标签: android opengl-es eclipse-cdt android-ndk native-code


    【解决方案1】:

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

    glMatrixMode(GL_PROJECTION);
    glFrustumf(-(float)w/h, (float)w/h, -1, 1, 1, 500);
    

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

    【讨论】:

    • 好的,谢谢,但我如何在 OpenGL ES 1.x 中做到这一点? OpenGL ES 1.x 不支持 glFrustrum。
    • glFrustum 是 ES 1.x 的一部分,请参阅 khronos.org/opengles/sdk/1.1/docs/man 获取文档,khronos.org/registry/gles/api/1.0/gl.h 获取它在 1.0 和 1.1 中的证据。编辑:但是里面没有第二个“r”,你有可能只是因为错字而遇到麻烦吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    相关资源
    最近更新 更多