gpt4 book ai didi

java - OpenGL 未按预期渲染

转载 作者:太空宇宙 更新时间:2023-11-04 14:51:35 24 4
gpt4 key购买 nike

如果我的屏幕设置如下

    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)

最佳答案

glOrthof 用于创建屏幕坐标系,因为它的输入参数是左、右、上、下,我无法理解其中的困惑之处。如果您希望左上角为 (0,0) 点,则只需将顶部和左侧参数设置为零,将底部和右侧参数设置为一些正值,以便正 X 位于右侧,正 Y 位于向下。

glOrthof 的一些非常常见的使用情况是:

  • 查看坐标系,其中插入 (0,0) 作为左上角,(screenHeight , screenWidth) 作为右下角。但在很多情况下,左下角位于 (0,0) 处。
  • 图形坐标系,其中屏幕中心位于 (0,0),左上角位于 (1,-1),右下角位于 (-1,1)
  • 标准化 View 系统,其屏幕中心位于(0,0),但高度与宽度相关,具体取决于屏幕比例。因此,左上角位于 (-1,-(screenHeight/screenWidth)) ,右下角位于 (1, screenHeight/screenWidth)

您应该注意,仅在第一种和第三种情况下,您的正方形将始终绘制为正方形而不是矩形(其中a/b = screenWidth/screenHeight)。因此,请选择最适合您的应用程序的选项。

您应该知道 glOrthof 对于平移和缩放也非常有用。您只需更改 glOrthof 参数即可显示场景的特定部分,而不需要进行一些奇怪的平移和缩放。

关于java - OpenGL 未按预期渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23705063/

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