gpt4 book ai didi

Android 和 glOrthof

转载 作者:太空狗 更新时间:2023-10-29 14:28:45 26 4
gpt4 key购买 nike

我正在为 Android 2.3 开发一个简单的瓷砖世界游戏。我正在尝试在 opengl 中设置正交 View ,但我的 1x1 瓷砖显示为长方形 - 面向屏幕的方向 - 如果屏幕处于垂直位置,则正方形垂直拉伸(stretch),如果水平,则水平拉伸(stretch).这是我的 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 方法,并且在绘制对象时没有任何失真。我尝试了一些从网上提取的不同方法(比如用宽度/高度纵横比替换 ortho 调用的右/底部),但似乎没有任何方法可以解决问题。

这是屏幕的样子:

The images should be perfect 1x1 squares in ortho mode.

有什么想法吗?我错过了什么?我只想看到完美的 1x1 正方形,我可以在上面不失真地添加纹理。

最佳答案

试试这个

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);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();

关于Android 和 glOrthof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9138257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com