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

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Linha 289:
 
== Atualizando a Tela ==
 
Agora seria bem legal se a transparência pudesse continuar variando e voltando.
Para fazer isto,
* Precisamos verificar o numero de segundo desde que o usuário iniciou o aplicativo; o <code>glutGet(GLUT_ELAPSED_TIME)/1000</code> dá que
* Aplicando um função aritmética ''sin'' em nossa(a função ''sin'' volta ao primeiro entre -1 and +1 a cada 2.PI=~6.28 unidades de tempo)
* Pergunte ao aplicativo que atualizará o triângulo(com novo valor de transparência); isto é o <code>glutPostRedisplay()</code>
* O GLUT uma função ociosa "idle" que é chamada sempre que o GLUT não tem mais nada o que fazer. (ex. quando terminamos de mostrar o triângulo), nós podemos colocar nosso código lá.
 
No ''main'', vamos declarar a função "idle", depois <code>glutDisplayFunc(...)</code>:
 
<source lang="c">
glutIdleFunc(idle);
</source>
 
Vamos adicionar a nova função ociosa.
 
<source lang="c">
void idle()
{
float cur_fade = sinf(glutGet(GLUT_ELAPSED_TIME) / 1000.0 * (2*M_PI) / 5) / 2 + 0.5; // 0->1->0 a cada 5 segundos
glUseProgram(program);
glUniform1f(uniform_fade, cur_fade);
glutPostRedisplay();
}
</source>
 
também removeremos a chamada para <code>glUniform1f</code> da <code>onDisplay</code>
 
e por ultimo, nós vamos fazer uma declaração de um biblioteca aritmética do C.
<source lang="c">
#include <math.h>
</source>
no Makefile deixe assim:
LDLIBS=-lglut -lGLEW -lGL '''-lm'''
 
Compile e Rode...
 
[[File:OpenGL Tutorial Triangle alpha-blending.png|thumb|Um Triangulo Animado, parcialmente transparente]]
 
Temos nossa primeira animação!
 
É comum que uma implementação do OpenGL aguarde a atualização vertical da tela depois atualize o buffer da tela física = isto é chamado de vertical sync.
Quem neste caso, o triângulo será renderizado aproximadamente 60 vez por segundo (60 FPS). se você desativar o vertical sync, o programa manterá atualizando o triangulo continuamente, resultado em um alto uso da CPU. Vamos nós encontrar denovo com o vertical sync, quando nós criarmos aplicativos com alteração de perspectiva.
 
== Referências ==