OpenGL。如何反转X轴?

OpenGL。如何反转X轴?,opengl,Opengl,伙计们。我正在做网络游戏,所有单位的移动都将在服务器端处理。对于服务器调试,我必须将物理引擎集成到OpenGL中,或者将OpenGL集成到物理引擎中,实际上我只想使用OpenGL可视化服务器端的单元和其他对象。 但我面临一个问题。在游戏引擎里我有下一个轴方向 但在OpenGL世界中,我看到了这个方向 这段代码清楚地解释了这一点。我刚画了轴 gl.glBegin(gl.GL_QUADS); //z gl.glColor3f(0,0,1); gl.glVertex3f(-width,0,lengt

伙计们。我正在做网络游戏,所有单位的移动都将在服务器端处理。对于服务器调试,我必须将物理引擎集成到OpenGL中,或者将OpenGL集成到物理引擎中,实际上我只想使用OpenGL可视化服务器端的单元和其他对象。 但我面临一个问题。在游戏引擎里我有下一个轴方向

但在OpenGL世界中,我看到了这个方向

这段代码清楚地解释了这一点。我刚画了轴

gl.glBegin(gl.GL_QUADS);
//z
gl.glColor3f(0,0,1);
gl.glVertex3f(-width,0,length);
gl.glColor3f(0,0,1);
gl.glVertex3f(width,0,length);
gl.glColor3f(0,0,0);
gl.glVertex3f(width,0,-length);
gl.glColor3f(0,0,0);
gl.glVertex3f(-width,0,-length);

//x
gl.glColor3f(1,0,0);
gl.glVertex3f(length,0,-width);
gl.glColor3f(1,0,0);
gl.glVertex3f(length,0,width);
gl.glColor3f(0,0,0);
gl.glVertex3f(-length,0,width);
gl.glColor3f(0,0,0);
gl.glVertex3f(-length,0,-width);

//y
gl.glColor3f(0,1,0);
gl.glVertex3f(-width,length,0);
gl.glColor3f(0,1,0);
gl.glVertex3f(width,length,0);
gl.glColor3f(0,0,0);
gl.glVertex3f(width,-length,0);
gl.glColor3f(0,0,0);
gl.glVertex3f(-width,-length,0);
gl.glEnd();
所以线条的彩色部分在世界的正部分,黑色部分在负部分。 请看下一张图片

你看到了吗? 这是我截图时相机和兴趣点的位置

Camara: (-18.778223, 26.576332, -77.65113)  
Point of interest: (-18.571165, 26.34204, -76.672806)

那么如何反转X轴呢?

我想您的矩阵相关代码如下所示:

...
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// Matrix calculations
...
然后,您可以执行以下操作:

...
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glScalef(-1, 1, 1); // Each number represents scale for one axis
// Matrix calculations
...
您还需要调用
glFrontFace(GL_CW)OpenGL初始化后一次,以补偿多边形缠绕方向反转。

但我建议您不要这样做,而是在发动机中反转Z轴。

如果引擎中的坐标系与OpenGL相同,则更容易:

            +Y

          _______
         /  -Z   \
-X      /         \     +X
       /           \
      /     +Z      \
      """""""""""""""

            -Y

我想您的矩阵相关代码如下所示:

...
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// Matrix calculations
...
然后,您可以执行以下操作:

...
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glScalef(-1, 1, 1); // Each number represents scale for one axis
// Matrix calculations
...
您还需要调用
glFrontFace(GL_CW)OpenGL初始化后一次,以补偿多边形缠绕方向反转。

但我建议您不要这样做,而是在发动机中反转Z轴。

如果引擎中的坐标系与OpenGL相同,则更容易:

            +Y

          _______
         /  -Z   \
-X      /         \     +X
       /           \
      /     +Z      \
      """""""""""""""

            -Y

HolyBlackCat,也许我只是不明白“朝向”的含义,但+z指向相机视图的方向。Z轴最近的部分是黑色的。哦,我明白了。起初我没有注意到你们的引擎坐标系。HolyBlackCat,也许我不明白“朝向”的意思,但+z指向相机视图的方向。Z轴最近的部分是黑色的。哦,我明白了。一开始我没注意到你的发动机坐标系,真是太棒了!不幸的是,我无法更改游戏引擎中的某些内容,因为我没有源代码=(很好的艺术!不幸的是,我无法更改游戏引擎中的某些内容,因为我没有源代码=(