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 つの軸が交換され、もちろんテクスチャの適用にも影響します。

座標を 1 に置き換えるようなもの - 座標は実際には機能しません

はい、そうなります。なぜなら…</p>

現在の三角形だけでなく、ビットマップ全体が反転するためです。

… このようにすれば、それはまさにあなたが必要とするものです。しかし、最初に、モデル ジオメトリが正しくロードされているかどうか、つまり右利きであるかどうかを確認します。そうでない場合は、ジオメトリの Z 軸を反転するだけです。

于 2013-05-20T13:06:33.270 に答える