像素完美glTranslatef

时间:2014-08-11 20:01:21

标签: android opengl-es textures

我怎么能这样做,所以我可以将像素坐标插入gl.glTranslatef()? 目前,我这样做是为了让纹理出现在屏幕的底部:

    gl.glPushMatrix();
    gl.glTranslatef(1.45f, -2.76f, 0);
    gl.glScalef(1 / scaleX, 1 / scaleY, 0);
    Square sq = getTexture(resourceId);

    sq.draw(gl);
    gl.glPopMatrix();

无需插入" 1.45f,-2.76f,0"值,纹理出现在屏幕的中心。如何使用像素坐标定位纹理?我纹理的大部分尺寸都是32x32,还有几个16x16。

在我使用((GL11Ext)gl).glDrawTexfOES()渲染我的纹理之前,我无法对纹理执行任何转换,例如我无法旋转它们等等。

1 个答案:

答案 0 :(得分:0)

我不知道您如何设置投影,但您应该使用glOrthoglViewport来设置您的场景。给出一个大小(宽度,高度)的窗口:

// init opengl at some previous point
gl.glViewport(0, 0, width, height);
// choose bottom-left corner, e.g. (0,0)
// use your own values for near and far planes
float left = 0, bottom = 0, near = 0.1f, far = 1000.0f;
gl.glMatrixMode(GL_PROJECTION);
gl.glOrtho(left, left + width, bottom, bottom + height, near, far);
gl.glMatrixMode(GL_MODELVIEW);
gl.glLoadIdentity();

您将获得应用程序的像素坐标(左下角(左下角))