[英]Convert to pixel coordinates in JOGL OpenGL
我遇到了OpenGL坐标系的问题。
我有一个小类,使用以下代码创建六边形:
for(int i = 0; i < 6; ++i) {
gl.glVertex2d(radius * Math.sin(i/6.0*2*Math.PI)-(radius*(x*1.75)),
radius * Math.cos(i/6.0*2*Math.PI)+(radius*(y*1.25)));
}
注意,所有这些都是在Java中使用JOGL库实现的。
创建六边形时,它们的坐标系的屏幕中心为0,0,左上角为-1,1
我想将这些坐标转换为屏幕坐标,因此左上角为0,0,中心为windowX / 2,-windowY / 2。 因此,如果窗口为500像素乘500像素,则中心将为250,-250。
这些坐标( 其中 <0,0>
是中心,而 <-1,1>
是左上角 )被称为“规范化设备坐标”。 它们通常是像素在投影之后但在视口映射之前所在的中间坐标空间。
现在,关于此坐标空间的有趣之处在于,如果将恒等矩阵用于Projection
和ModelView
,则可以按原样使用这些坐标。 也就是说,您永远不需要知道视口的尺寸来绘制完全填充视口的六边形。
否则,您应使用与窗口尺寸相同的正投影投影矩阵。 glOrtho (...)
是执行此操作的传统方法...
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho (0.0, 500.0, -500.0, 0.0, -1.0, 1.0);
我很好奇,为什么在此示例中,您希望Y坐标的范围是0到-500,而不是0到500?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.