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(( 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*/
}
eger derlerken bir sorun cikarsa yada baska sorulariniz(biraz assembly,php,mysql fln biliyorum) icin mburakaydin24@hotmail.com ekleyin