Я занимаюсь разработкой простой игры с миром плиток для Android 2.3.Я пытаюсь настроить орфографический вид в opengl, но мои плитки 1x1 отображаются продолговатыми - ориентированными по направлению к экрану - если экран находится в вертикальном положении, то квадрат растягивается вертикально, если горизонтальный, то растягивается горизонтально,Вот что у меня в методе onSurfaceChanged:
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0.0f, width, 0.0f, height, 1.0f, 100.0f);
В моем методе onDrawFrame у меня есть:
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
GLU.gluLookAt(gl,
0.0f, 0.0f, 6.0f, // eye translation
0.0f, 0.0f, 0.0f, // eye center
0.0f, 1.0f, 0.0f // eye world up
);
// draw objects
Из метода onDraw объекта:
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextures[0]);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mFloatVertexBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTexBuffer);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glShadeModel(GL10.GL_SMOOTH);
gl.glPushMatrix();
gl.glTranslatef(localTranslation.getX(), localTranslation.getY(), localTranslation.getZ());
gl.glScalef(localScale.getX(), localScale.getY(), localScale.getZ());
gl.glRotatef(mAngle, localRotation.getX(), localRotation.getY(), localRotation.getZ());
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
gl.glNormal3f(0.0f, 0.0f, -1.0f);
gl.glPopMatrix();
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
Я использовал те же методы onSurfaceCreated, onDrawFrame и onDraw в режиме перспективы, и он работал без каких-либо искажений при рисовании объектов.Я пробовал несколько разных вещей, извлеченных из сети (например, замена правого / нижнего орто-вызова с соотношением сторон ширина / высота), но, похоже, ничего не решило проблему.
Вот как выглядит экран:
Есть идеи?Что мне не хватает?Все, что я хочу видеть, - это идеальные квадраты 1x1, на которые я могу бросать текстуры без искажений.