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();
}