OpenGL中关于坐标系原点在左上角还是左下角的一些整理

各轴之间的顺序要求符合右手法则,即以右手握住Z轴,让右手的四指从X轴的正向以90度的直角转向Y轴的正向,这时大拇指所指的方向就是Z轴的正向.这样的三个坐标轴构成的坐标系称为右手空间直角坐标系.与之相对应的是左手空间直角坐标系。

1.OPENGL设备坐标系(dns)是左手坐标系,屏幕坐标系原点在左下角向上向右增加
OPENGL屏幕坐标系原点在左下角向上向右增加,D3D屏幕坐标系原点在左上角向下向右增加。
2.OpenGL 默认的坐标原点是屏幕的正中心
3.OPENGL坐标系可分为:世界坐标系和当前绘图坐标系。

世界坐标系以屏幕中心为原点(0, 0, 0)。你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴。长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1)。

当前绘图坐标系是 绘制物体时的坐标系。程序刚初始化时,世界坐标系和当前绘图坐标系是重合的。当用glTranslatef(),glScalef(), glRotatef()对当前绘图坐标系进行平移、伸缩、旋转变换之后, 世界坐标系和当前绘图坐标系不再重合。改变以后,再用glVertex3f()等绘图函数绘图时,都是在当前绘图坐标系进行绘图,所有的函数参数也都是相 对当前绘图坐标系来讲的。
4.OpenGL默认屏幕坐标系原点在哪?屏幕左下角还是屏幕几何中心处?
这个能设置吗?
如果你用的是透视投影的话默认的应该是在屏幕的中心位置,如果用的是平行投影的话则要看你的glOrtho里面设置的参数了,如果是类似于 glOrtho(-320,320,-240,240,1,100)的话中心也在屏幕中心,这是你glVertex2d(0,0)就在中心,但如果 glOrtho(0,320,0,240,1,100)的话glVertex2d(0,0)就不在屏幕中心了,你可以试一试,当然glViewPort的设置也很重要,利用这个可以多视口显示。

OpenGL:正投影和透视投影

正投影
正射投影,又叫平行投影。这种投影的视景体是一个矩形的平行管道,也就是一个长方体,如图所示。正射投影的最大一个特点是无论物体距离相机多远,投影后的物体大小尺寸不变。这种投影通常用在建筑蓝图绘制和计算机辅助设计等平面图形方面,这些行业要求投影后的物体尺寸及相互间的角度不变,以便施工或制造时物体比例大小正确。

GLFrustum::SetOrthographic(GLfloat xMin,GLfloat xMax,GLfloat yMin,GLfloat yMax,GLfloat zMin,GLfloat zMax);

2.透视投影
透视投影符合人们心理习惯,即离视点近的物体大,离视点远的物体小,远到极点即为消失,成为灭点。它的视景体类似于一个顶部和底部都被切除掉的棱椎,也就是棱台。这个投影通常用于动画、视觉仿真以及其它许多具有真实性反映的方面

GLFrustum::SetPerspective(float fFov,float fAspect,float fNear,float fFar);
(来源https://www.jianshu.com/p/38c3d0d19993)

以上整理自网络

你可能感兴趣的:(计算机图形学)