OpenGL翻转或镜像图形对象

OpenGL翻转或镜像图形对象,opengl,Opengl,在onDraw方法中,如何翻转或向上/向左镜像图像对象,而不是屏幕 我尝试了一个不起作用的比例(1,-1,1) 我的代码: opengl.selectVertex(vertexname) .translate(x-1, y, -9); if (opengl.getPathModifier(vertexname).getAngle()>-180 &&am

在onDraw方法中,如何翻转或向上/向左镜像图像对象,而不是屏幕

我尝试了一个不起作用的比例(1,-1,1)

我的代码:

 opengl.selectVertex(vertexname)
                                .translate(x-1, y, -9);

                                if (opengl.getPathModifier(vertexname).getAngle()>-180 && 
                                    opengl.getPathModifier(vertexname).getAngle()<0 ) {
                                    opengl.selectVertex(vertexname).scale(-scale,scale,1);  
                                } else {
                                    opengl.selectVertex(vertexname).scale(scale,scale,1);
                                }

opengl.rotate(opengl.getPathModifier(vertexname).getAngle()+90, 0, 0, 1);
opengl.选择顶点(vertexname)
.翻译(x-1,y,-9);
if(opengl.getPathModifier(vertexname).getAngle()>-180&&

opengl.getPathModifier(vertexname).getAngle()如果您使用的是
glFrustum(l,r,b,t,n,f)
则将其更改为
glFrustum(l,r,t,b,n,f)
,以防需要垂直翻转。这也适用于
glOrtho
函数。

不是100%确定你在这里要问什么,但我认为你要做的是变换投影矩阵。如果你想翻转,使左边的东西显示在右边,那么你需要将投影矩阵缩放(-1,1,1).如果您希望顶部的内容显示在底部,则需要按(1,-1,1)进行缩放,如果您希望两者同时进行缩放,则可以按(-1,-1,1)进行缩放


基于额外信息编辑:如果您只想显示完全相同的对象,但纹理已翻转,则需要更改对象中顶点的纹理坐标-通过将旧的u纹理坐标替换为1-u来翻转纹理坐标。

是否要在x方向、y方向或两者上翻转?p请澄清您想要哪种翻转。是否启用了剔除?如果启用,请通过比例(1,-1,1)进行变换将导致以相反的顺序绘制所有三角形。绘制反射时,需要临时反转/禁用缠绕。问题在于剔除:D如果你回答,我将接受它。我是glPerspective,所以不是ortho,如果我使用scale(-1,1,1)那么我看不见我的物体,为什么?当我的旋转角度改变时,我必须改变我的纹理坐标?有没有一个简单的算法来改变我顶点的纹理坐标?@lacas:你到底想实现什么?我有一架“飞机”我旋转我的平面,但在180度后,我的平面旋转…在头部,听起来你想做的是使用ModelView矩阵上的旋转变换增量旋转对象。例如,围绕Z轴每帧旋转对象5度。这应该可以解决问题并简化代码。