27 Şubat 2008 Çarşamba

Opengl-Glut İle Oyun Programlama

Opengl-Glut ile oyun programlama
OpenGL nedir?
Icinizde eskiden C ve C++ grafiklerini kullanarak oyun yapmaya calisan yoktur herhalde :D Ama sonucta cogumuz bir husrana ugradik ve istedigimiz destegi alamadik, Ama animasyonlari cok kolay ....... lari cok kolay yapabilecegimiz bir eklenti dir OpenGL
GLut nedir?:
Glut opengl in ozelliklerini tasiyon ama windows un pencere yaratma ..., memory islemlerini kolaylastirmis bir sekilde yapmamiza yarayan bir kit deiyebiliriz;

Ihtiyacimiz olanlar;
DevCpp yada Visual C(Borland C olmuyor, Ama yapanlar duydum :D )
Glut Kit(www.opengl.org da bulabilirsiniz)


glutdlls36.zip i indirdim ben
zip li dosyayi actik icinde .h .lib ve .dll ler var
.h leri Visual Studio nun Include\GL klasorune atariz
.lib leri Visual Studio nun Lib klasorune atariz
.dll leri de windows\system32 ye atariz
Simdi Visual C ile glut kullanarak basit bir ornek;
Visual C yi actik
File->New->Projects->WIn32 Console Application proje adi olarak istediginiz bisi girebilirsiniz 
File->New->Files->C++ source file istedigimiz adi girebiliriz


Proje Ayarlari:
NOT:Simdi yapacagimiz ayarlar her proje icin tekrarlanacak
Project->Settings->Link->Object/Library Modules e opengl32.lib glut32.lib glu32.lib leri ekliyoruz

ve KoD:

#include <GL/glut.h>


void renderScene(void){//cizimleri yapacak fnksyion her zmn void olur
glClear(GL_COLOR_BUFFER_BIT);
/*gl clear bir opengl fonksiyonu ve bu fonksiyon zorunlu bu genelde temizleme yani grafiklerin gorulmesi icin on hazirlik diyebilirz*/

glBegin(GL_TRIANGLES);
/*bir GL_TRIANGLES triangles cizimine basla, GL_TRIANGLES bize bir ucgen cize ve ucgenin 3 kosesi vardir, her kosenin koordinatlarini ayri ayri girecegiz*/

/*glVertex(x,y,z); burda x,y,z float tipinde olmali, z(derinlik) simdilik sifir,Burda simdilik bu degerler en fazla 1.0 olurm bu viewport la ilgili bu onumuzdeki derste anlatacagim */
/*glColor3f(red(max1.0),green(max1.0), blue(max1.0)); bu renklendirmek icin*/
glColor3f(1.0, 0.0, 0.0);//birinci noktanin rengi

glVertex3f(-0.5,-0.5,0.0);//birici nokta

glColor3f(0.0, 1.0, 0.0);//ikinci noktanin rengi

glVertex3f(0.5,0.0,0.0);//2. nokta

glColor3f(0.0, 0.0, 1.0);//3. noktanin rengi

glVertex3f(0.0,0.5,0.0);//3. nokta
glEnd();//cizimi bitir
glFlush();//memory yi temizle...
}//cizim fonksyionu bitisi

void main(int argc, char **argv) {/*bu ana fonksyionun pencere is.vb burda int argc,char **argv openglin gonderecegi komutlari almak icin yani kisacasi bunlar yazilmak zorunda, her zaman ayni kalir bunu anlamak icin kendinizi kasmayin */

glutInit(&argc, argv);//burda GLUT motorunu harekete gecirdik
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);

/* burda displaymod u ayarladik GLUT_DEPTH(derinlik olacagini soyluyor ama daha isimize yarimiyor zaten z ekseniyle oynasa niz bile bisey degismez :D), GLUT_SINGLE(program tek katmana sahip olacak, genelde animasyon,kaplama vb, de cift katman yani GLUT_DOUBLE olur), GLUT_RGBA (ise renk sinifi gibi bisi, hani rgb fln varya) | isareti ile hepsini birlikte kullanabiliyoruz*/

glutInitWindowPosition(100,100);
/*pencerenin x ve y si nereye gelecek onu belirler yani pozisyon*/
glutInitWindowSize(320,320);//pencere boyutu
glutCreateWindow("Burak Aydin");//pencere basligi
glutDisplayFunc(renderScene);
/*hng fonksiyonun cizim yapacagini belirttik*/
glutMainLoop();
/*programin surekli tekrarlamasi icin, bu olmassa pencere acilip kapanir*/
}

kaynak: www.programlama.com

1 yorum:

murat dedi ki...

teşekkürler başlangıç için iyi bir yazı olmuş