Compartilhar via


Matriz de portabilidade e funções de transformação

O IRIS GL e o OpenGL manipulam matrizes e transformações de maneira semelhante. Mas há várias diferenças a serem pensadas ao portar código do IRIS GL:

  • No OpenGL, você está sempre no modo de matriz dupla; não há nenhum modo de matriz única.

  • Os ângulos são medidos em graus, em vez de décimos de graus.

  • Chamadas de matriz de projeção, como glFrustum e glOrtho, agora multiplicam para a matriz atual, em vez de serem carregadas na matriz atual.

  • A função OpenGL, glRotate, é muito diferente de girar. Você pode girar em torno de qualquer eixo arbitrário, em vez de ficar confinado aos eixos x, y e z. Por exemplo, você pode traduzir:

    rotate(200*(i+1), 'z');
    

    Para:

    glRotate(.1*(200*(i+1), 0.0, 0.0, 1.0);
    

    Ao traduzir de girar para glRotate você alternar para graus de décimos de graus e substituir 'z' por um vetor para o eixo z.

  • O OpenGL não tem equivalente à função de visão polar. Você pode substituí-lo facilmente por uma tradução e três rotações. Por exemplo, você pode traduzir:

    polarview(distance, azimuth, incidence, twist);
    
    

    Para:

    glTranslatef( 0.0, 0.0, -distance); 
    glRotatef( -twist * 10.0, 0.0, 0.0, 1.0); 
    glRotatef( -incidence * 10.0, 1.0, 0.0, 0.0); 
    glRotatef( -azimuth * 10.0, 0.0, 0.0, 1.0);
    

A tabela a seguir lista as funções de matriz OpenGL e suas funções GL do IRIS equivalentes.

Função IRIS GL Função OpenGL Significado
mmode glMatrixMode Define o modo de matriz atual.
glLoadIdentity Substitui a matriz atual pela matriz de identidade.
loadmatrix glLoadMatrixf,glLoadMatrixd
Substitui a matriz atual pela matriz especificada.
multmatrix glMultMatrixf,glMultMatrixd
Pós-multiplica a matriz atual com a matriz especificada (observe que multmatrix pré-multiplicado).
mapeado, mapw2 gluUnProject Projeta coordenadas de espaço mundial para o espaço do objeto (consulte também gluProject).
de orto glOrtho Multiplica a matriz atual por uma matriz de projeção ortográfica.
orto2 gluOrtho2D Define uma matriz de projeção ortográfica bidimensional.
perspectiva gluPerspective Define uma matriz de projeção de perspectiva.
picksize gluPickMatrix Define uma região de seleção.
popmatrix glPopMatrix Exibe a pilha de matriz atual, substituindo a matriz atual pela que está abaixo dela.
pushmatrix glPushMatrix Efetua push da pilha de matriz atual para baixo por um, duplicando a matriz atual.
girar,rotear
glRotated,glRotatef
Gira o sistema de coordenadas atual pelo ângulo fornecido sobre o vetor da origem por meio do ponto fornecido. Observe que girar girado apenas sobre os eixos x, y e z.
de escala glScaled,glScalef
Multiplica a matriz atual por uma matriz de dimensionamento.
traduzir glTranslatef, glTranslated
Move a origem do sistema de coordenadas para o ponto especificado, multiplicando a matriz atual por uma matriz de tradução.
da janela glFrustum Determinadas coordenadas para planos de recorte, multiplica a matriz atual por uma matriz de perspectiva.

O OpenGL tem três modos de matriz, que são definidos com glMatrixMode. A tabela a seguir lista os modos disponíveis como parâmetros para glMatrixMode.

Modo de matriz GL do IRIS Modo OpenGL Significado Profundidade de pilha mínima
MTEXTURE GL_TEXTURE Opera na pilha de matriz de textura. 2
MVIEWING GL_MODELVIEW Opera na pilha de matrizes de exibição de modelo. 32
MPROJECTION GL_PROJECTION Opera na pilha da matriz de projeção. 2