我正在研究3D渲染器,当我加载各种测试模型时,我注意到一切看起来都不错,除了纹理都在x轴上翻转这一事实。
这实际上是预览的,因为我将我的GBuffer blit到屏幕上,因此它不能成为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翻转?
答案 0 :(得分:3)
除了纹理都在x轴上翻转之外。
我认为实际发生的是,模型的几何体在Z轴上翻转。与OpenGL一起使用的常用转换设置使用右手坐标系。如果对象设计为左手保存,则交换一个轴,这当然也会影响纹理应用。
用1坐标替换坐标这样的事情并没有真正起作用
是的,因为......
因为那会翻转整个位图,而不仅仅是当前的三角形。
......如果这样做的话,这正是你所需要的。但首先我要检查模型几何是否正确加载,即右手。如果没有,我只需翻转几何体的Z轴。