Я делаю простую 2-мерную игру, с использованием opengl ortho view, с треугольниками в качестве спрайтов.
Проблема в том, что абсолютно одинаковый код игры отлично работает на моем симуляторе 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]
Я думаю, что-то по-другому инициализируется в GL?Но как это выяснить?Может быть, у кого-то есть подсказки, где искать ответ?Что-то связано с фиксированным или плавающим?