Şub
26
2012

OpenGl Örnekleri

opengl

opengl

OpenGL ile ekrana kare çizdirme ve bu karenin boyutlarne dğiştirme örneği.

Klavye tuşlarında a s z x sağa sola dönder genişlet fonksiyonlarını atadım. Cisim ekranda çıktığında  a  s  z  x tuşlarını kullanara dönderebiliyorum  genişlete biliyorum. Yön tuşlarını kullanarak şekli saga sola öne arkaya hareket ettire biliyoruz.

Böylelik kareyi istediğimiz şekle sokabiliyoruz.

Kodlar ve Erkran Görüntüleri

Kodlar:

#include "stdafx.h"
#include <GL/glut.h>
#include <GL/glut.h>
#include <math.h>
float xgotur = 0, ygotur = 0, zgotur = 0;
float derece = 0;
float xolcu  = 1, yolcu = 1, zolcu = 1;
int en = 400,boy = 400;

void GoturSag(void)
{

glLoadIdentity();

xgotur += 0.1;
}

void GoturSol(void)
{

glLoadIdentity();

xgotur -= 0.1;
}

void GoturYuk(void)
{

glLoadIdentity();

ygotur += 0.1;
}

void GoturAsa(void)
{

glLoadIdentity();

ygotur-=0.1;
}

void GoturIleri(void)
{

glLoadIdentity();

zgotur -= 0.1;
}

void GoturGeri(void)
{

glLoadIdentity();

zgotur += 0.1;
}

void YanUzat(void)
{

glLoadIdentity();

xolcu += 0.1;
}

void BoyUzat(void)
{

glLoadIdentity();

yolcu += 0.1;
}

void CevirSag(void)
{

glLoadIdentity();

derece += 0.5;
}

void CevirSol(void)
{

glLoadIdentity();

derece -= 0.5;
}

void Basla(void)
{

glClearColor (0.0, 0.0, 0.0, 0.0);

glShadeModel (GL_FLAT);

glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);
}

void Klavye(int dugme, int x, int y)
{

switch(dugme)
{
case GLUT_KEY_LEFT:GoturSol(); break;
case GLUT_KEY_RIGHT:GoturSag(); break;
case GLUT_KEY_UP:GoturYuk(); break;
case GLUT_KEY_DOWN:GoturAsa(); break;
case GLUT_KEY_PAGE_UP:GoturIleri(); break;
case GLUT_KEY_PAGE_DOWN:GoturGeri(); break;
}

glutPostRedisplay();
}

void Klavye(unsigned char dugme, int x, int y)
{

switch(dugme)
{
case 'a':YanUzat();break;
case 's':BoyUzat();break;
case 'z':CevirSol();break;
case 'x':CevirSag();break;
}

glutPostRedisplay();
}

void UcdCokgen(void)
{

glPushMatrix();

glColor3f(1.0, 0.0, 0.0);

glTranslatef(xgotur,ygotur,zgotur);

glRotatef(derece, 0.0, 1.0, 0.0);

glScalef(xolcu, yolcu, zolcu);

glBegin(GL_QUADS);

glVertex3f(-0.4, 0.3, 0.1); //önyüz
glVertex3f( 0.4, 0.3, 0.1);
glVertex3f( 0.4, -0.3, 0.1);
glVertex3f(-0.4, -0.3, 0.1);

glEnd();

glBegin(GL_QUADS);

glVertex3f(-0.4, 0.3, -0.1); //solyanyüz
glVertex3f(-0.4, 0.3, 0.1);
glVertex3f(-0.4,-0.3, 0.1);
glVertex3f(-0.4,-0.3, -0.1);

glEnd();

glBegin(GL_QUADS);

glVertex3f(-0.4, 0.3, -0.1); //arkayüz
glVertex3f( 0.4, 0.3, -0.1);
glVertex3f( 0.4, -0.3, -0.1);
glVertex3f(-0.4, -0.3, -0.1);

glEnd();

glBegin(GL_QUADS);

glVertex3f(0.4, 0.3, -0.1); //sağyanyüz
glVertex3f(0.4, 0.3, 0.1);
glVertex3f(0.4, -0.3, 0.1);
glVertex3f(0.4, -0.3, -0.1);

glEnd();

glBegin(GL_QUADS);

glVertex3f(-0.4, 0.3, 0.1); //üstkapak
glVertex3f( 0.4, 0.3, 0.1);
glVertex3f( 0.4, 0.3, -0.1);
glVertex3f(-0.4, 0.3, -0.1);

glEnd();

glBegin(GL_QUADS);

glVertex3f( 0.4, -0.3, 0.1); //altkapak
glVertex3f(-0.4, -0.3, 0.1);
glVertex3f(-0.4, -0.3, -0.1);
glVertex3f( 0.4, -0.3, -0.1);

glEnd();

glPopMatrix();
}

void CizimYeri(void)
{
glClear(GL_COLOR_BUFFER_BIT);

glColor3f(1.0, 1.0, 1.0);

glLoadIdentity();

gluLookAt(0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

UcdCokgen();

glutSwapBuffers();
}

void TekrarBoyut(int en, int boy)
{

glViewport (0, 0, en, boy);

glMatrixMode (GL_PROJECTION);

glLoadIdentity ();

gluPerspective(90, (float)en / (float)boy, 1.0, 100.0);

glMatrixMode (GL_MODELVIEW);
}

int main(int argc, char **argv)
{

glutInit(&argc, argv);

glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);

glutInitWindowSize (en, boy);

glutInitWindowPosition (0, 0);

glutCreateWindow ("HARUN BALTA");

Basla();

glutReshapeFunc(TekrarBoyut);

glutDisplayFunc(CizimYeri);

glutSpecialFunc(Klavye);

glutKeyboardFunc(Klavye);

glutMainLoop();

return 0;
}
opengl

opengl

opengl2

opengl2

opengl3

opengl3

Herkeze kolay Gelsin :)

 

 

 

Yazar Hakkında

Harun Balta 63 adet yazısı bulunuyor..

Bilgisayar Mühendisliği Üzerine çalıştığım konular: C# , .Net , Silverlight , WPF , Entity Framework ,MVVM, Oracle ,Pl/Sql

Print Friendly