2011-02-03 13 views
11

OnDraw yöntemindeki ekran değil, resme OBJECT (yansıt) yansıtma/sollama nasıl çevrilir?OpenGL çizim nesnesini ters çevirin veya yansıtın

I (1 1, -1)

çalışmamış o ölçeği çalıştı kodum:

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önünü, y yönünü veya ikisini birden çevirmek ister misiniz? –

+0

Lütfen ne tür bir flip istediğinizi açıklığa kavuşturun. –

+2

Silmeyi etkinleştirdiniz mi? Eğer öyleyse, ölçek (1, -1, 1) ile dönüştürmek, tüm üçgenlerinizin karşıt düzende çizilmesine neden olur. Yansıma çizdiğinizde sargınızı geçici olarak geri almanız/devre dışı bırakmanız gerekir. – TheBuzzSaw

cevap

14

değil% 100 Burada soruyoruz, ama ne yapmak istediğiniz projeksiyon matrisi olduğunu düşünüyorum emin. Soldaki şeylerin sağ tarafta görünmesi için ters çevirmek isterseniz, projeksiyon matrisini (-1, 1, 1) ile ölçeklendirmeniz gerekir. Üst kısımdaki şeylerin altta görünmesini istiyorsanız, (1, -1, 1) ile ölçeklendirmeniz gerekir ve eğer isterseniz hem ölçekleyebilirsiniz (-1, -1, 1).

Ek bilgilere dayanarak düzenleme yapın: Tek yapmanız gereken nesneyi tam olarak aynı görüntüdeyse, ancak doku çevrilirse, nesnelerdeki köşe noktalarının doku koordinatlarını değiştirmeniz gerekir - doku koordinatlarını değiştirerek eski u doku 1-u ile koordinat.

+0

ben glPerspective'dayım, yani ortoda değil, ölçek kullanırsam (-1,1,1) sonra nesneyi göremiyorum, neden? – lacas

+0

Bazı kodları ekleyebilir misiniz? –

+0

kodu dahil ... – lacas

3

Eğer glFrustum(l,r,b,t,n,f) kullanıyorsanız o zaman yo glFrustum(l,r,t,b,n,f), eğer dikey çevirme istiyorum bunu değiştirmek . Bu, glOrtho işlevine de uygulanır.