2011-02-03 13 views
11

どのようにして、onDrawメソッドの画面ではなく、オブジェクトOBJECTをミラーアップ/ミラーリングできますか?OpenGLは描画オブジェクトをフリップまたはミラー化します

私は

私のコードを働いていないことを(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); 
+1

x方向、y方向、またはその両方を反転しますか? –

+0

どのようなフリップをしたいのかを明確にしてください。 –

+2

カリングが有効になっていますか?もしそうなら、スケール(1、-1、1)を使って変換すると、あなたのすべての三角形が逆の順序で描かれます。リフレクションを描くときは、巻線を一時的に反転/無効にする必要があります。 – TheBuzzSaw

答えて

14

あなたがここで尋ねるものは100%ではありませんが、あなたがしたいことは投影行列を変換することだと思います。左にあるものが右に表示されるように反転したい場合は、投影行列を(-1、1、1)でスケールする必要があります。一番下のものが一番下に表示されるようにするには、(1、-1、1)でスケールする必要があります。両方を望むなら、スケールすることができます(-1、-1,1)。

追加情報に基づいて編集:オブジェクトを完全に同じように表示しながらテクスチャを反転させたい場合は、オブジェクト内の頂点のテクスチャ座標を変更する必要があります。古いuテクスチャ座標を1-uで置き換えます。

+0

私はスケール(-1,1,1)を使ったら、私のオブジェクトを見るのはなぜですか? – lacas

+0

いくつかのコードを挿入できますか? –

+0

コードが含まれています... – lacas

3

あなたがglFrustum(l,r,b,t,n,f)を使用している場合は、ヨーヨーglFrustum(l,r,t,b,n,f)それを変更し、場合にあなたが上下反転したいです。これはglOrthoの機能にも当てはまります。

関連する問題