0

我正在开发一个 3D 渲染器,当我加载各种测试模型时,我注意到一切看起来都不错,除了纹理全部在 x 轴上翻转的事实。

这实际上是在我将 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 翻转?

一切看起来都很好,除了它被侧翻了

4

1 回答 1

3

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

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

用 1 替换坐标之类的东西 - 坐标并没有真正起作用

是的,它会的,因为……</p>

因为这会翻转整个位图,而不仅仅是当前的三角形。

……这正是你所需要的,如果这样做的话。但首先我会检查模型几何是否正确加载,即用右手习惯。如果没有,我会简单地翻转几何的 Z 轴。

于 2013-05-20T13:06:33.270 回答