我目前正在使用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);被称为,视口仍然是一样的。这同样适用于所有变量。
一些注意事项:
任何帮助将不胜感激。
谢谢!
答案 0 :(得分:1)
AFAIK,野火使用PixelFlinger软件GL实现。我知道PixelFlinger 1.2没有实现glGetFloat这一事实,但是如果以后的版本已经纠正了这个问题,则没有任何信息。拨打电话时是否有任何记录信息?至少在1.2上,有一个非特定的“未实现的功能”警告。
关于解决方案 - 您只需在自己的代码中创建矩阵,然后将其上传到GL。