glGetIntegerv / glGetFloatv Android NDK

时间:2011-03-24 13:29:48

标签: 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];
        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_VIEWPORT,viewport);被称为,视口仍然是一样的。这同样适用于所有变量。

一些注意事项:

  • 我在HTC Wildfire上调试
  • 使用GLES 1.0
  • Android SDK 2.2版(API版本8)

任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

AFAIK,野火使用PixelFlinger软件GL实现。我知道PixelFlinger 1.2没有实现glGetFloat这一事实,但是如果以后的版本已经纠正了这个问题,则没有任何信息。拨打电话时是否有任何记录信息?至少在1.2上,有一个非特定的“未实现的功能”警告。

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