【问题标题】:OpenGL co-ordinate mapping to device co-ordinateOpenGL坐标映射到设备坐标
【发布时间】:2013-02-17 08:22:03
【问题描述】:

我已经阅读了很多教程并在 OpenGL 中实现了一些小应用程序。我仍然对 OpenGL 坐标系统到 android 视图坐标系统的映射感到困惑。 我在尝试将纹理显示为全屏时遇到了问题。不知何故,通过 hit&trial 方法,我能够将纹理显示为全屏,但有很多疑问,我无法快速进行。

  1. 在 OpenGL 坐标系中从左下角(作为原点)开始,而在设备左上角作为原点。事物如何正确映射到设备。

  2. 在 OpenGL 中,我们指定顶点范围从 -1 到 1。这些范围如何映射到范围从 0 到宽度和高度的设备。

  3. 顶点能否以与设备坐标完全相同的方式进行映射。就像具有 0,100 的顶点映射到具有 0,100 的设备坐标一样。

在尝试将纹理显示为全屏时,我根据一些博客更改了代码&它起作用了。这是更改。

glOrtho(0, width, height, 0, -1, 1);  from  glOrtho(0, width, 0, height, -1, 1);  

 &   vertices[] = {                            
       0, 0,
      width, 0,
      width, height,                
      0, height
      };

  from  {-1,-1,
          1,-1,
         -1,1,
           1,1}

请帮助我理解坐标映射。

【问题讨论】:

    标签: android opengl-es


    【解决方案1】:

    您将 glOrtho 设置为宽度和高度 opengl 将拉伸它以适合您正在使用的设备,例如当您制作 glOrth(0,width,height,0, 1,-1) opengl 将其拉伸以适合您的屏幕,因此通过设置 glOrth() 的宽度和高度,坐标可以是您想要的任何值

    【讨论】:

    • 确实如此。此外,正如您所注意到的,默认情况下 OpenGL 的 Y 轴向上增加。要将事物映射到它在设备上的行为方式,您可以执行 glOrtho(0, width, height, 0, -1, 1)。要获取像素中间的坐标,您可以执行 glTranslatef(0.5f, 0.5f, 0f);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多