如何正确地找出gl.glTranslatef(x,y,z)和类似方法必须使用的值。示例:我有一个正方形,并希望在左上角显示它,大约是屏幕的1/4。我认为glTranslate()的值为-0.5和0.5,但这并没有显示我预期的位置。
所以基本上我不知道如何在OpenGL-ES中找到对象的正确坐标。
答案 0 :(得分:1)
不幸的是还没有为Android开发opengl-es内容,但AFAIK需要将屏幕坐标(例如屏幕左上角)转换为世界坐标(OpenGL中3D世界中的坐标)。
对于3D,你可以通过射线投影来做到这一点。您可以通过google search找到大量示例,也可以通过OpenGL实现。
对于2D,你可以使用正交投影矩阵(基本上没有透视失真)并根据需要旋转它(例如用于景观模式):
// Initialize your projection matrix - current number are half the dimensions for the G1 I borrowed(320x480)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-240.0f, 240.0f, -160.0f, 160.0f, -1.0f, 1.0f);
// Rotate everything by 90 degrees
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(-90.0f, 0.0f, 1.0f, 0.0f);
HTH