我正在做一个简单的2D游戏,使用opengl正视图,三角形作为精灵。
问题是,绝对相同的游戏代码在我的mac模拟器上运行完美,但是当我在手机上启动游戏时出现问题。 当我追踪问题时,我发现了一些我不理解的东西。
我已经简化了代码以获得不同行为的硬性证明,代码如下:
// Setup projection matrix as identity
GLfixed projectionMatrix[16];
projectionMatrix[0] = 65536;//1.0f;
projectionMatrix[1] = 0;
projectionMatrix[2] = 0;
projectionMatrix[3] = 0;
projectionMatrix[4] = 0;
projectionMatrix[5] = 65536;//1.0f;
projectionMatrix[6] = 0;
projectionMatrix[7] = 0;
projectionMatrix[8] = 0;
projectionMatrix[9] = 0;
projectionMatrix[10] = 65536;//1.0f;
projectionMatrix[11] = 0;
projectionMatrix[12] = 0;
projectionMatrix[13] = 0;
projectionMatrix[14] = 0;
projectionMatrix[15] = 65536;//1.0f;
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glLoadMatrixx( projectionMatrix );
// Setup modelview matrix
glMatrixMode( GL_MODELVIEW );
glPushMatrix();
glLoadIdentity();
// And here I printout the content of the matricies
GLfixed m[4][4];
glGetFixedv(GL_MODELVIEW, &(m[0][0]));
// … Print matrix
glGetFixedv(GL_PROJECTION, &(m[0][0]));
// … Print matrix
The printed values on my mac using simulator (feels right):
==== MODEL
[65536][0][0][0]
[0][65536][0][0]
[0][0][65536][0]
[0][0][0][65536]
==== PROJECTION
[65536][0][0][0]
[0][65536][0][0]
[0][0][65536][0]
[0][0][0][65536]
And printed values on my ipod (wtf?):
==== MODEL
[-1490935922][1236752][20995][803202364]
[1][1032192][1245312][803202404]
[879947476][3][92][803202728]
[1][10558464][803202404][808970200]
==== PROJECTION
[-1490935922][1236752][20995][803202364]
[1][1032192][1245312][803202404]
[879947476][3][92][803202728]
[1][10558464][803202404][808970200]
我想也许smth在gl中有不同的初始化?但是如何搞清楚什么? 也许有人有任何线索在哪里寻找答案? 是与固定vs浮动相关的东西吗?
答案 0 :(得分:0)
Wooohoo ...我发布后,我自己找到了答案...... 很抱歉打扰...原因在于关键字: GL_MODELVIEW和GL_MODELVIEW_MATRIX 我应该用: glMatrixMode(GL_MODELVIEW); 和 glGetFixedv(GL_MODELVIEW_MATRIX,&(m [0] [0]));
0 (^_^)Ø