5 Eylül 2021 Pazar

12-Basit Slayt

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