OpenGL 翻转或镜像绘图对象

问题描述 投票:0回答:2

如何在 onDraw 方法中翻转或镜像图像

对象
(不是屏幕)?

我尝试了

scale(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
2个回答
22
投票

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

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


4
投票

如果您正在使用

glFrustum(l,r,b,t,n,f)
,则将其更改为
glFrustum(l,r,t,b,n,f)
,以防您想要垂直翻转。这也适用于
glOrtho
功能。

© www.soinside.com 2019 - 2024. All rights reserved.