- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在为 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 调用的右/底部),但似乎没有任何方法可以解决问题。
这是屏幕的样子:
有什么想法吗?我错过了什么?我只想看到完美的 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/
我正在为 Android 2.3 开发一个简单的瓷砖世界游戏。我正在尝试在 opengl 中设置正交 View ,但我的 1x1 瓷砖显示为长方形 - 面向屏幕的方向 - 如果屏幕处于垂直位置,则正方
我有一个 iOS 应用程序(总是)横向运行,并使用 OpenGL 进行绘图。我的绘制方法中有这段代码: GLfloat width = self.frame.size.width; // 48
在 OpenGL-ES 上,我对设置之间的区别感到困惑 glOrthof() glViewPort() GLU.gluOrtho2D() 及其各自的参数。因为我相信这一切都将您可以看到的部分设置为指
我正在编写一个基本上是 2D 的游戏,我需要的是一个具有简单坐标的场景来模拟 Android Canvas 之类的东西,所以 0,0 是左上角,w/h 是右下角。到目前为止,我已经能够创建场景并绘制它
我是一名优秀的程序员,十分优秀!