【问题标题】:OpenGL ES 2.0 projecting pointOpenGL ES 2.0 投影点
【发布时间】:2014-06-17 12:50:34
【问题描述】:

我需要使用

GLU.gluProject();

。函数需要 viewport (int [ ] ) 参数。我假设 int 数组包含 x,y,width,height,它们由以下设置:

GLES20.glViewport(0, 0, width, height);

我说的对吗?

OpenGL中的原点也在左下角吗?因此,当您检测到对 android 设备的触摸时。在 x = 255, y = 255 你要重新计算吗? (我正在计算光线的起点和终点;))

【问题讨论】:

  • 起源取决于很多东西。对于以 2D 绘制的最简单的情况,您通常使用 glOrtho,它包含参数 top、bottom、left 和 right,可以设置为左上角是原点 (0,0)。默认(不设置任何东西)我相信原点在中心,左边是-1,右边是1,顶部是1,底部是-1。

标签: android opengl-es


【解决方案1】:

是的,GLU.gluProject()的第8个参数,在documentation中命名为view,是一个包含视口的x,y,width,height的数组:

查看 |当前视图,{x, y, width, height}

OpenGL中窗口坐标的原点在窗口的左下角。

对于您用于绘图的坐标,您可以应用自己的变换,因此您可以选择要使用的坐标系。您的顶点着色器需要应用转换来将您的输入坐标转换为标准化设备坐标 (NDC),其范围为 [-1.0, 1.0] 从左到右以及从下到上。

【讨论】:

  • 所以,假设屏幕宽度为 400,高度为 700 的触摸输入 (x = 200, y = 350),您必须重新计算到 [-1, 1] 范围才能使它们正确形式?更具体地说,我在 vec3(0,0,-3) 处安装了相机,在没有其他世界变换的情况下查看 vec3(0,0,0) 和正射投影(左 -1,右 1,下 -1,上1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 2012-03-25
  • 1970-01-01
相关资源
最近更新 更多