İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

OpenGL API kullanımı

Giriş

Artik OpenGL nin ne oldugunu ogrendigimize gore yavas yavas OpenGL kodu yazmaya baslayabiliriz.Bu derste derleyicinizle beraber OpenGL yi nasil kullanacginizi ogrenebileceksiniz,bunu yaparken OpenGL kodlamasinda kullanilan fonksiyon ve degiskenlerinde standard isimlendirmesini ogrenecegiz.Sayet simdiye kadar bir OpenGL programi yazdi iseniz bunu kendi kendinize zaten farketmissinizdir.

OpenGL API

OpenGL'nin bir programlama dili olmadığını,bir uygulama programlama arayüzü oldugunu daha onceden soylemistik.OpenGL uygulamalarimizi biz Visual C++ ile gerceklestirecegiz.Bir API olarak OpenGL C cagri standardlarini kullanir.Bunun anlami C de yazilmis programlar OpenGL fonksiyonlarini rahatca cagirabilir.Bunun sebebi bu yordamlarin zaten C ile yazilmis olmasi diger bir sebebi de bu cagrilarin arada C veya baska bir assembler dili ile gerceklestiriliyor olmasidir.

OpenGL standard bir programlama kutuphanesi olmasina karsin bu kutuphanenin bircok degisik tanimi bulunmaktadir.Gercek Microsoft yazilim tanimi opengl32.dll dinamik baglanti kutuphanesidir ve bu windows un sistem klasorunun icinde bulunur.Bircok platformda OpenGL kendi islev kutuphanesi olan GLU ile birlikte gelmektedir ki bunun Windows uzerindeki karsiligi benzer sekilde glu32.dll dir(Yine sistem klasorunde).Bu kutuphanenin icerisinde yuzey egri ve bazi ozel matris operasyonlarini yapmaya yarayan yıordamlar tanimlanmistir.

Bu gibi DLL dosyalarinda bulunan bir fornksiyonu kullanabilmeniz icin programinizin bir ithalat kutuphanesine(import library) sahip olmasi gerekmektedir.Bunlari nasil gerceklesitireceginize ileride deginecegim yalnizca bunlari gerceklestirirken soylediklerimi hatirlamayi unutmayin.Cogunuzun benim gibi Windows uzerinde calisma yapacagini umarak bu kutuphanelerden opengl32.lib ve glu32.lib in sirasiyla yukarida bahsettigimiz dll dosyalarindaki yordamlari kullanmak icin ihtiyac duydumuz ithalat kutuphaneleri oldugunu soyleyebiliriz.

KISACA OpenGL ile Microsoft araclarini kullanarak programlama yapmak isterseniz bu iki kutuphaneyi import edilen kutuphanelerin oldugu dizine kopyalamamiz gerekecek.

Tum OpenGL fonksiyonlari icin prototip(Bir fonksiyonun kullanılabilmesi icin derleyiciye verilen tanimlama) tanimlamalari,tipler,ve macrolar gl.h isimli baslik dosyasinda bulunur(header file).Ayni seklide islev yordamlarinin prototipleri ise glu.h adli baslik dosyasinde bulunmaktadir.Bu tip dosyaşar genellikle progrmlama dilinizin kuruldugu konumda bulunan include dosyasinin icinde bulunurlar.Boylelikle C kodunuz yazarken icermek zorunda oldugunuz kutuphane ve baslik dosyalarini ogrendik.OpenGL kullanan bir Windows programi icin gereken basliklarimiz:

#include<windows.h>
 
#include<gl/gl.h> 
 
#include<gl/glu.h> 

seklindedir.gl/gl.h ve ya gl/glu.h bu dosyalarin gl adli bir klasorun icerisinde organize oldugunu gostermektedir.Klasor yerleskesine gore farklılık gosterebilir.

Donanım hızlandırması

Interaktif 3 botulu grafik uygulamalari en hizli islemcilerde bile oldukca zaman ahrcayan bir islemdir.Bu sebeple grafik karti ureticileri kartlarini,n uzerinde grafik hizlandiricilar bulundurmaya baslamistir.Bu kartlar üzerlerinde 3 boyutlu grafik uretmek icin ozellestirilmis islemciler tasirlar.Genel amacli CPU larin tersine bu islemciler 3D islemlerini onemli olcude hizlandiracak sekilde tasarlanmislardir.Eger bahsettigimiz OpenGL ithalat kutuphanelerini programiniza baglarsaniz programlariniz bilgisayarinizda bulunan 3D karinin uzerinde Windows tarafindan kullanilan surucuyu otomatik olarak kullanmaya baslayacaktir(Cogunlukla).İste bu kutuphaneleri ekleme sebebimiz budur.

Bu tanimlardan baska tanimlarda mevcuttur fakat bunlara su an deginmeyecegim.Bunlari bilmeniz simdilik oldukca yeterlidir.

OpenGL veri tipleri

Bir platformdan digerine rahatca gecis yapabilmek icin OpenGL kendi ozgun veri tiplerini tanimlamaktadir.Bu veri tiplerinin isterseniz gercek C veri tiplerine donusturebilirsiniz.Fakat varolan derleyicilerin herbirinin C deki veri tipleri icin kendi belirledigi kurallar ve hafiza kisitlamalari bulunmaktadir.OpnGL veri tiplerini kullanarak bu kisitlamalarin onune gecmeniz mumkundur bu yuzden bunlari kullanmanizi oneririm.

Asagidaki tabloda OpenGL veri tiplerini ve karsilik gelen C tiplerini goreceksiniz.Bu veri tipleri 32-bitlik Windows ortamina uyumlu ve buna bagli on takilara sahiptir.

OpenGL Veri TipiHafiza tanimlamasiKarsilik gelen C tipiC Literal Ontakisi
GLbyte8-bit tamsayisigned charb
GLshort 16-bit tamsayishorts
GLint,GLsizei32-bit tamsayisongl
GLfloat32-bit ondalik sayifloatf
GLclampf32-bit ondalik sayifloatf
GLdouble64-bit ondalik sayidoubled
GLclampd64-bit ondalik sayidoubled
GLubyte8-bit isaretsiz tamsayiunsigned charub
GLboolean8-bit isaretsiz tamsayiunsigned charub
GLushort16-bit isaretsiz tamsayiunsigned shortus
GLuint,GLenum32-bit isaretsiz tamsayiunsigned longui
GLbitfieldtamsayi

Tüm veri tipleri OpnGL yi belirtmek icin GL ile baslamaktadir.Bazilarinda isretsiz tipi belirtmek icin u kullanilmaktadir.Bir boyutu veya renk derinligi gibi kavramlari belirtmek icin kullanilan degiskenlerde genellikle size adi verilen ozel taki kullanilmaktadir.Mesela GLsizei bir tamsayi tarafindan belritilen boyut parametresini tanimlar.Clamp takisi renk butunlugunu tanimlamak icin kullanilir ve rengin siddetini belirtir.boolean true ve false degerlerini tutmak icin(mesela isigin varligi ve yoklugu) num enumerated adi verilen ve veri kümesi tutan ve son olarak bitfield ikilik bit alanlarini tutmaya yarayan degiskenlerdir.

Bu baglamda isaretci ve dizi kavramlari farkli tutulmamaktadir.Benzer sekilde 10 luk bir GLshort dizisi

GLshort shorts[10]; seklinde ve 10 luk bir GLdouble veri tipi isaretcileri dizisi GLdouble *doubles[10]; seklinde tanimlanmaktadir.

Fonksiyon adlandırma standardları

OpenGL fonksiyonlari asagidaki ornek yapiya uyarlar:

Anlasildigi üzere OpenGL yordamlari basta kütüphane takisini daha sonra yapacagi isin ozetini tasiyan bir komut kokunun tasir.Bunu takip eden sayi yordamin aldigi paramatere sayisi,ve parametrelerin genel tipidir.

Platform bağımsızlığı

OpenGL 3D grafikler uretmek icin kullanilan cok guclu ve gelismis bir API olmanin yaninda 300 den fazla komut tasir.Bu komutlar matreyla renklerinin ayarlanmasi ve yansima ozelliklerinin belirlenmesinden kompleks kordinat donusturmelerine kadar bircok islevi yerine getirmektedirler.Tum bunlari yapan OpneGL nin pencere yonetimi veya klavye ve mouse tan girdi almak gibi basit islemleri gerceklestiren tek bir komutu dahi bulunmamaktadir.Bunun sebebi OpenGL nin platformdan bagimsiz amacli gelistirilmis olmasidir.Her platformun bu isler iicn kendi komutlari zaten bulunmaktadir.

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır