2013-05-20 78 views
0

我正在一个3D渲染器上工作,并且当我加载各种测试模型时,我注意到一切都看起来不错,除了事实上纹理都在x轴上翻转OpenGL网格纹理水平翻转

这实际上是预览的,因为我将我的GBuffer移动到屏幕上,所以它不能成为FBO渲染问题。

在我加载每个.obj文件后,我准备它的VBO。这里的片段设置纹理坐标:

for(Face f : master.faces) { 
    for(int i = pointsPerFace - 1; i >= 0; i--) { 
     uv[0] = f.texCoords[i].x; 
     uv[1] = f.texCoords[i].y; 
     texcoords.append(uv); 
    } 
} 

之类的东西替换为1 - coordinate坐标真的不工作,因为这将翻转整个位图,而不仅仅是当前三角形。

什么可能会导致一切呈现x翻转?

Everything looks fine, except it's flipped sideways

回答

3

除了事实的纹理都翻转在x轴上。

我认为实际发生的情况是,模型的几何体在Z轴上翻转。与OpenGL一起使用的常用转换设置使用右手坐标系。如果物体被设计为左手保存,则会交换一个轴,这也会影响当然的纹理应用。

之类的东西替换为1坐标 - 坐标真的不工作

是的,它会,因为......

因为这将翻转整个位图,而不只是当前三角形。

......这正是你所需要的,如果这样做的话。但首先我会检查模型几何是否正确加载,即使用右手操作。如果不是,我只需要翻转几何图形的Z轴。

+0

这很有道理......我加载的资产来自D3D游戏。然而,加载时仅仅是几何形状会产生破碎的结果,就像只显示背面一样。 –

+0

没关系 - 我必须扭转面的顶点被渲染的顺序。现在正在工作。 –