17 Nisan 2013 Çarşamba

Opengl ile Kare Çizimi



GLsizei wh=500,ww=500; // Pencerenin başlangıç pozisyonu
GLfloat size=50.0; // Karenin kenar uzunluğu
int x=10,y=10; 

/* Kareyi Çiz */
void drawSquare() 
{
    y=wh-y;
    glColor3f(0.0,0.0,1.0); // Karenin rengini belirliyoruz - Mavi
    glBegin(GL_POLYGON);
       glVertex2f(x+size,y+size);
       glVertex2f(x-size,y+size);
       glVertex2f(x-size,y-size);
       glVertex2f(x+size,y-size);
    glEnd();
    glFlush();
}

/* Yeniden şekillendiğinde ne olacak */
void myReshape(GLsizei w, GLsizei h)
{
    /* matris işlemlerini yap */
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, (GLdouble)w, 0.0, (GLdouble)h, -1.0, 1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    /* arkaplan rengi ve bakış açısını ayarla */
    glViewport(0,0,w,h);
    glClearColor (0.0, 0.0, 0.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glFlush();
    /* Pencere boyutlarını yeniden yapılandırıyoruz */
    ww = w;
    wh = h;
}
/* Uygulama başlatıldığında birtakım ayarlamalar yapıyoruz */
void myinit(void)
{
    glViewport(0,0,ww,wh);
    /* Pick 2D clipping window to match size of screen window
    This choice avoids having to scale object coordinates
    each time window is resized */
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, (GLdouble) ww , 0.0, (GLdouble) wh , -1.0, 1.0);
    /* Arkaplanı siyah olarak ayarlıyoruz ve pencereyi temizliyoruz */
    glClearColor (0.0, 0.0, 0.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glFlush();
    /* Reshape callback fonksiyonu */
    glutReshapeFunc(myReshape);
}
/* Fare tıklanınca ne olacak */
void mouse(int btn, int state, int x, int y)
{
    if(btn == GLUT_RIGHT_BUTTON && state == GLUT_DOWN) 
        exit(btn); // Pencereyi kapat
}
/* Ana Program */
void main(int argc, char** argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
    glutCreateWindow("square");
    myinit ();
    glutReshapeFunc (myReshape);
    glutMouseFunc (mouse);
    glutDisplayFunc(drawSquare);
   
    glutMainLoop();
}