2015-06-30 14 views
6

Ho codice cpp che mostra semplici forme OpenGL in Maya. Se si utilizza la finestra legacy, allora devo proprio quello che voglio: frecce che va lungo l'asse x:
Comportamenti OpenGL diversi a seconda della vista di Maya utilizzata

enter image description here

Tuttavia se uso lo stesso codice nella finestra 2.0 quindi le frecce stanno seguendo fotocamera movimenti:

enter image description here

enter image description here

Questo sta accadendo solo se applico glTranslatef (che dovrò usare).

Questo è il pezzo di codice:

for (int i=0;i<10;i++) 
{ 
    glPushMatrix(); 
    glTranslatef(i,0,0); 
    glBegin(GL_LINES); 
    // Arrow 
    glVertex3f(0, y, z); 
    glVertex3f(1, y, z); 

    glVertex3f(1, y, z); 
    glVertex3f(0.5, y, z+0.5); 

    glVertex3f(1, y, z); 
    glVertex3f(0.5, y, z-0.5); 

    glEnd(); 
    glPopMatrix(); 
} 

Come posso avere un comportamento corretto nella "nuova" viewport Maya?

+0

Una parte di me si sente come vi state perdendo un 'glLoadIdentity()' dopo quello 'glPushmatrix()', l'altro sembra troppo facile per essere vero. – Borgleader

+0

L'altra parte purtroppo ha ragione. Grazie per la proposta comunque :-) –

+0

Lo strano comportamento della matrice mi fa domandare se le diverse viewport hanno legami matrix differenti legati, e in quest'ultimo caso, stai applicando una trasformazione alla matrice di proiezione piuttosto che al modelview, o qualcosa del genere. .. – JasonD

risposta

2

Seguendo il mio commento, questo sembra che la traduzione stia accadendo in una diversa cornice di coordinate al rendering, il che mi suggerisce che è associato un diverso stack di matrici.

Così alla vecchia finestra (dove il risultato è 'corretto') si sta concatenato traduzione sulla matrice modelview, ma nel caso 2.0, si sta forse concatenato traduzione sulla proiezione matrice - che risulterebbe nella traduzione sembra essere relativo allo schermo, piuttosto che alla vista.

Suggerirei assicurare che tutto lo stato rilevante è impostato correttamente nella chiamata di rendering, come l'impostazione del glMatrixMode desiderata() prima di fare scherzi con la pila a matrice, ecc

+0

Questo ha reso il trucco, grazie! Ho dovuto implementare glMatrixMode (GL_MODELVIEW) –

Problemi correlati