OpenGL-翻译是如何工作的?

OpenGL-翻译是如何工作的?,opengl,Opengl,这可能是一个基本问题,但我在任何地方都找不到答案。 当我想转换场景中的对象时,OpenGL使用的坐标是什么 是X和Y中的-1,0到1,0吗?(因此,我必须使用介于-1和1之间的数字来移动对象)。 这取决于我设置的窗口大小吗?(所以我可以用100或200之类的数字) 例如,如果创建一个大小为500x500的窗口,如何确保创建的对象位于底部 谢谢。对于X和Y坐标,OpenGL总是以[-1.0,1.0]的间隔进行渲染。您可以创建自己的抽象来进行坐标变换。转换可以在OpenGL API调用或顶点着色器中

这可能是一个基本问题,但我在任何地方都找不到答案。 当我想转换场景中的对象时,OpenGL使用的坐标是什么

X
Y
中的
-1,0
1,0
吗?(因此,我必须使用介于
-1
1
之间的数字来移动对象)。 这取决于我设置的窗口大小吗?(所以我可以用100或200之类的数字)

例如,如果创建一个大小为500x500的窗口,如何确保创建的对象位于底部


谢谢。

对于X和Y坐标,OpenGL总是以[-1.0,1.0]的间隔进行渲染。您可以创建自己的抽象来进行坐标变换。转换可以在OpenGL API调用或顶点着色器中完成。“顶点着色器”对此更加方便,尤其是在进行3D渲染时


映射此空间的“矩形区域”被定义为“视图端口”,您可以使用OpenGL函数
glViewport()
来设置将映射到OpenGL空间[-1.0,1.0]x[-1.0,1.0]的区域(以像素为单位)。

因此我在顶点着色器中执行的任何类型的变换(平移、缩放..)应该在[-1.0,1.0]坐标系下进行吗?不,可以在任何坐标系下进行。以像素为单位,例如,如果您希望。。。但最终输出必须介于[-1.0,1.0]之间。比如
xInOpenGL=xinpoixel/(宽度/2.0)-1.0