如果我使用以下
进行屏幕设置 gl.glViewport(0,0,width,height); //Reset the current viewport
gl.glMatrixMode(GL10.GL_PROJECTION); //select the projection matrix
gl.glLoadIdentity(); //Reset the Projection Matrix
gl.glOrthof(0f,1f,0f,1f,-1f,1f);
和顶点设置如下
this._vertices=new float[]{
0.0f,0.5f,0.0f, //V1 bottom left
0.0f,1.0f,0.0f, //V2 top left
0.5f,0.5f,0.0f, //V3 Bottom right
0.5f,1.0f,0.0f //V4 top right
};
然后在绘图时我做了
gl.glTranslatef(0.0f,0.0f,0.0f);
它将方块放在左上角(我认为0,0在左下方?)
然后
gl.glTranslatef(0.5f,-0.5f,0.0f);
将正方形放在屏幕中间(暗示底部实际上是-1.0f而不是0.0f)
如何让我的屏幕左下角从0,0开始?
更新------
我发现如果我改变了行
gl.glOrthof(0f,1f,0f,1f,-1f,1f);
到
gl.glOrthof(0f,1f,1f,0f,-1f,1f);
然后没有任何变化(即左上角仍为0,0,左下角为0,-1)
但是如果我完全离开线,则原点位于屏幕的中心(即左上角为-1,-1)
答案 0 :(得分:0)
glOrthof
用于创建屏幕坐标系,因为它的输入参数是左,右,上,下我无法理解混淆的位置。如果您希望左上角是(0,0)点,那么只需将顶部和左侧参数设置为零,将底部和右侧参数设置为某些正值,使得正X向右,正Y向下。
使用glOrthof
的一些非常常见的情况是:
(0,0)
作为左上角插入,将(screenHeight , screenWidth)
作为右下角插入。在很多情况下,左下角位于(0,0)
。(0,0)
,然后左上角位于(1,-1)
,右下角位于(-1,1)
(0,0)
,但高度与宽度有关,具体取决于屏幕比例。左上角位于(-1,-(screenHeight/screenWidth))
,右下角位于(1, screenHeight/screenWidth)
。您应该注意,仅在第1和第3种情况下,您的方块将始终绘制为正方形而不是矩形(a/b = screenWidth/screenHeight
)。因此,选择最适合您应用的产品。
您应该知道glOrthof
对于平移和缩放也非常有用。您可以简单地更改glOrthof
参数,以便显示场景的某个部分,而不是进行一些奇怪的翻译和缩放。