Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么OpenGL会把东西画颠倒?_Opengl_Drawing_Rendering_Flip - Fatal编程技术网

为什么OpenGL会把东西画颠倒?

为什么OpenGL会把东西画颠倒?,opengl,drawing,rendering,flip,Opengl,Drawing,Rendering,Flip,我还没有看到有人回答这个问题。我所看到的只是人们告诉他们有些东西是颠倒的,然后其他人告诉他们翻转代码。但我想知道的是,为什么OpenGL会翻转Y坐标?这毫无意义。OpenGL假设Y坐标从下到上。如果您的代码假设相反,则会颠倒显示内容 有关详细信息,请使用Google Foropengl坐标系这一切取决于您如何设置场景。有很多事情会导致这种效果 例如,摄影机位置/方向会影响您查看最终场景的方式 gluLookAt(camera[0], camera[1], camera[2], /* look

我还没有看到有人回答这个问题。我所看到的只是人们告诉他们有些东西是颠倒的,然后其他人告诉他们翻转代码。但我想知道的是,为什么OpenGL会翻转Y坐标?这毫无意义。

OpenGL假设Y坐标从下到上。如果您的代码假设相反,则会颠倒显示内容


有关详细信息,请使用Google Foropengl坐标系

这一切取决于您如何设置场景。有很多事情会导致这种效果

例如,摄影机位置/方向会影响您查看最终场景的方式

gluLookAt(camera[0], camera[1], camera[2],  /* look from camera XYZ */ 
                  0,         0,         0,  /* look at the origin */ 
                  0,         1,         0); /* positive Y up vector */
使用纹理时,指定错误的纹理坐标会翻转图形


但最常见的问题可能是人们忘记了OpenGL将坐标(0,0)定义为显示器的左下角(Y向上)。

OpenGL使用笛卡尔坐标。在笛卡尔坐标系中,0,0位于中心,正坐标向上和向右延伸。任何坐标都可以映射或转换为程序员希望的任何坐标,但这是默认值。当您给出纹理坐标时,OpenGL希望这些坐标是Catresian坐标,而不是自顶向下的坐标。程序可以变换这些坐标,但最快的修复方法是翻转纹理