glGetIntegerv/glGetFloatv Android NDK

glGetIntegerv/glGetFloatv Android NDK,android,opengl-es,android-ndk,Android,Opengl Es,Android Ndk,我目前正在使用NDK移植一个游戏。我使用的是原生OpenGL,在使用glGet*函数时遇到问题 以下是一段代码片段: m_camera.SetViewMatrix(); //just to make sure nothings left from the last render int viewport[4]; glGetIntegerv(GL_VIEWPORT, viewport); float proj[16]; glGet

我目前正在使用NDK移植一个游戏。我使用的是原生OpenGL,在使用glGet*函数时遇到问题

以下是一段代码片段:

m_camera.SetViewMatrix(); //just to make sure nothings left from the last render

        int viewport[4];
        glGetIntegerv(GL_VIEWPORT, viewport);

        float proj[16];
        glGetFloatv(GL_PROJECTION_MATRIX, proj);

        float model[16];
        glGetFloatv(GL_MODELVIEW_MATRIX, model);

        m_currentRay.Create(x, y, 0.0f, 1.0f, model, proj, viewport);
看起来一切正常,但glGet*函数似乎根本不起作用,并且没有返回任何值

我甚至尝试将变量初始化为某些值,但当调用glGet*函数时,变量保持不变。例如:

int viewport[4];
viewport[0] = 1;
viewport[1] = 2;
viewport[2] = 3;
viewport[3] = 4;
当glGetIntegerv(GL_视口,视口)时;调用时,视口仍保持不变。这同样适用于所有变量

请注意:

  • 我正在HTC Wildfire上调试
  • 使用GLES 1.0
  • Android SDK版本2.2(API版本8)
任何帮助都将不胜感激


谢谢

好的,野火使用PixelFlinger软件GL实现。我知道PixelFlinger 1.2没有实现glGetFloat,但如果更高版本已经纠正了这一点,我就没有任何信息。你打电话时是否有任何记录信息?至少在1.2中,有一个非特定的“未实现函数”警告


至于解决方案-您只需在自己的代码中创建矩阵,然后将它们上载到GL。

要获取矩阵,请检查您的设备是否具有GL_OES_matrix_get extensionTanks以获得回复,但我认为这是针对GLES 1.1的,开始认为glGetIntegerv/glGetFloatv也适用于GLES 1.1,而Wildfire只支持1.0。我想正是这样;一些Android设备只支持非常旧版本的GLES。我对GL_OES_matrix_get的理解是,它是关于能够在仅提供定点接口的ES 1.1版本上获得浮点矩阵,但我猜如果它是在ES 1.0之上实现的,那么它仍然可以解决问题。