Programação com OpenGL/Modern OpenGL Tutorial 04: diferenças entre revisões

Origem: Wikilivros, livros abertos por um mundo aberto.
[edição não verificada][edição verificada]
Conteúdo apagado Conteúdo adicionado
Linha 2: Linha 2:


== Configurando as matrizes ==
== Configurando as matrizes ==

{{wikibook|GLSL_Programming/Vertex_Transformations{{!}} seção sobre transformação de vertices na linguaguem GLSL}}
Aqui estão algumas dicas para se lembrar quando se trabalha com matrizes:
* Transformações são aplicados pela multiplicação de matrizes 4X4 na ordem inversa. O <code> M = M_translation * M_rotation</code> diz para rodar primeiro, e depois movimentar.
* A Matriz é a matriz de identidade que não faz nada - absolutamente nenhuma movimentação.
* Para transformar um vertex, nós multiplicaremos ele pela matriz: <code>v' = M * v</code>
* As matrizes 4x4 pode ser aplicadas somente para vetores 4X1, que obtemos usando uma das quatro dimensões da vertice: (x, y, z, 1).

Para estas multiplicações, nós vamos precisar de bibliotecas aritmética(math). os Shader já possuem inclusas, um facil suporte para operações de matrizes, mas nós precisaremos manipular-las na linguaguem C. é também mais eficiente, porque os shaders são executados em cada vertice, então é melhor cacularmos as matrizes de antemão.

Neste tutorial nós usaremos [http://glm.g-truc.net/ OpenGL Mathematics] A biblioteca GLM, que esta escrita em C++. A GLM usa algumas convenções da GLSL, e então será facil nós começarmos. Esta documentação tambem mostrar substitutos para a defassada OpenGL 1.x e funções da GLU, como o <code>glRotate</code>, <code>glFrustum</code> ou <code>gluLookAt</code>, que vem a calhar se você já usou eles.

Existem alternativas, como [http://simdx86.sourceforge.net/ libSIMDx86] (que também trabalham em processador que não são da familia x86). você pode também escrever seus próprio códigos de matrizes, desde que não seja muito grande, veja o exemplo <code>mesa-demos-8.0.1/src/egl/opengles2/tri.c</code> no demos que vem no Mesa3D.

Nota: a partir de agora usaremos C++, vamos precisar mudar nosso programa para C++ - desculpe por isto, vamos então editar nosso primeiro tutorial para iniciarmos. Na verdade você só precisa mudar o nome <code>triangle.c</code> para <code>triangle.cpp</code>

O GLM é uma biblioteca header-only, então você não precisa modificar o Makefile, contando que os header esteja configurado no standard path.
Para instalar o GLM no Debian ou no Ubuntu:
<source lang="bash">
apt-get install libglm-dev
</source>

Agora nós podemos adicionar os cabeçalhos da GLM:
<source lang="c">
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>
</source>


== Usando 3D Points ==
== Usando 3D Points ==

Revisão das 22h02min de 7 de maio de 2013

Neste tutorial nśo vamos mergulhar no mundo da transformação de matrizes, assim nós poderemos movimentar, rotacionar e mudar a escala do nosso triangulo.

Configurando as matrizes

Predefinição:Wikibook Aqui estão algumas dicas para se lembrar quando se trabalha com matrizes:

  • Transformações são aplicados pela multiplicação de matrizes 4X4 na ordem inversa. O M = M_translation * M_rotation diz para rodar primeiro, e depois movimentar.
  • A Matriz é a matriz de identidade que não faz nada - absolutamente nenhuma movimentação.
  • Para transformar um vertex, nós multiplicaremos ele pela matriz: v' = M * v
  • As matrizes 4x4 pode ser aplicadas somente para vetores 4X1, que obtemos usando uma das quatro dimensões da vertice: (x, y, z, 1).

Para estas multiplicações, nós vamos precisar de bibliotecas aritmética(math). os Shader já possuem inclusas, um facil suporte para operações de matrizes, mas nós precisaremos manipular-las na linguaguem C. é também mais eficiente, porque os shaders são executados em cada vertice, então é melhor cacularmos as matrizes de antemão.

Neste tutorial nós usaremos OpenGL Mathematics A biblioteca GLM, que esta escrita em C++. A GLM usa algumas convenções da GLSL, e então será facil nós começarmos. Esta documentação tambem mostrar substitutos para a defassada OpenGL 1.x e funções da GLU, como o glRotate, glFrustum ou gluLookAt, que vem a calhar se você já usou eles.

Existem alternativas, como libSIMDx86 (que também trabalham em processador que não são da familia x86). você pode também escrever seus próprio códigos de matrizes, desde que não seja muito grande, veja o exemplo mesa-demos-8.0.1/src/egl/opengles2/tri.c no demos que vem no Mesa3D.

Nota: a partir de agora usaremos C++, vamos precisar mudar nosso programa para C++ - desculpe por isto, vamos então editar nosso primeiro tutorial para iniciarmos. Na verdade você só precisa mudar o nome triangle.c para triangle.cpp

O GLM é uma biblioteca header-only, então você não precisa modificar o Makefile, contando que os header esteja configurado no standard path. Para instalar o GLM no Debian ou no Ubuntu:

apt-get install libglm-dev

Agora nós podemos adicionar os cabeçalhos da GLM:

#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>

Usando 3D Points