Basit slayt:
Gereken dll: glut32.dll, glaux.dll
Dokuları ve kodu indir
-Beş adet doku dosyamızı artırarak ekrana aktarıyoruz. Basit bir ateş animasyonu elde ediyoruz.
///=================================================================
/// alev animasyonu
#include <gl\glaux.h>
#include <gl\glut.h>
unsigned doku[5];
float b;
int say;
int a;
void dokuyukle()// 5 adet dokuyu yükleme
{
AUX_RGBImageRec *dokular[5];
memset(dokular,0,sizeof(void *)*5);
if ((dokular[0] = auxDIBImageLoad("F0.bmp"))&&
(dokular[1] = auxDIBImageLoad("F1.bmp"))&&
(dokular[2] = auxDIBImageLoad("F2.bmp"))&&
(dokular[3] = auxDIBImageLoad("F3.bmp"))&&
(dokular[4] = auxDIBImageLoad("F4.bmp"))
)
{
glGenTextures(5, &doku[0]);
for(say=0;say<5;say++)
{
glBindTexture(GL_TEXTURE_2D, doku[say]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 4, dokular[say]->sizeX, dokular[0]->sizeY,
0, GL_RGB, GL_UNSIGNED_BYTE, dokular[say]->data);
}}
}
void kamera(int en, int boy)
{
dokuyukle();
glEnable(GL_TEXTURE_2D);
glClearColor(0.0, 0.0, 0.0, 0.5);
glViewport(0, 0, 250, 250);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(-250, 250, -250, 250);// 2d boyutlu pencere
}
void sahne()
{
glClearColor(0, 0.6,1 ,1.0);/// arka plan renk ayarlaması
glClear(GL_COLOR_BUFFER_BIT );
say=a;
b+=0.1; /// b degiskeninin değerini degistirerek anim. hızını degistirebiliriz
if(b>100){b=0;a+=1;} /// doku slaytini baslat
glBindTexture(GL_TEXTURE_2D, doku[a]);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0); glVertex3f(-200.0,-200.0, 0.0);
glTexCoord2f(1.0, 0.0); glVertex3f( 200.0,-200.0, 0.0);
glTexCoord2f(1.0, 1.0); glVertex3f( 200.0, 200.0, 0.0);
glTexCoord2f(0.0, 1.0); glVertex3f(-200.0, 200.0, 0.0);
glEnd();
if(a>4)a=0; /// slayti döngüye al
glutSwapBuffers();glutPostRedisplay();
}
int main(int argc, char** argv)
{
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize(250, 250);
glutInitWindowPosition(100,100);
glutInit(&argc, argv);
glutCreateWindow("resim ");
glutReshapeFunc(kamera);
glutDisplayFunc(sahne);
glutMainLoop();
return 0;
}
///=====================================================================
Hiç yorum yok:
Yorum Gönder