Professional Documents
Culture Documents
BG PDF 13
BG PDF 13
BG PDF 13
Hafta 13
10
1
(Open Graphics Library)
OpenGL nedir?
• Gelişmiş donanım desteğini kullanarak, hem iki hem de üç boyutlu grafikleri
ekrana çizmek için kullanılan ücretsiz bir grafik arabirimidir.
• Grafik donanımı için tanımlanmış bir yazılımdır. Mesela bir oyun programı yazmak
için bir programlama dili tarafından kullanılır.
• Bir programlama dili değildir.
• Fonksiyon çağrılarına cevap veren bir yazılım kütüphanesi ya da bir donanım
sürücüdür, 300 den fazla komut ve fonksiyon bulunur:
• Bu komutlar nokta , çizgi , çokgen gibi temel grafik öğelerini 3 boyutta çizmeye
yaramaktadır.
• Işıklandırma, gölgeleme, kaplama, yansıma vb.
1
OpenGL nedir?
• OpenGL kütüphanesi ekrana grafik çizmeyi standartlaştırmıştır. Yani OpenGL
sayesinde :
• Grafik kartının modeli veya işlemcinin mimarisi gibi donanımsal etkenlerden
bağımsız programlama yapılır.
• İşletim sisteminden de bağımsız programlama yapılır.
• OpenGL içerisinde pencere yönetimi, kullanıcı girişleri veya dosya girdi/çıktı
işlemlerine dair herhangi bir fonksiyon bulunmaz (GLUT kullanacağız)
OpenGL Lisans
• Sahibi: SGI (Silicon Graphics Inc.) firması & Khronos Group
2
Neden OpenGL ?
• Kitaplıktır (Kütüphane)
• Open Graphics Library, 2 veya 3 boyutlu grafik çizdirmek için kullanılan bir API’dir, bir başka
deyişle kitaplıktır. Bu kitaplık yazılım geliştiricilere grafik donanımını yönetme şansı verir.
• Taşınabilirdir (donanım-bağımsız)
• İşletim sisteminden ve işletim sisteminin çalıştığı platformdan bağımsızdır.
• Grafik kartının modeli veya işlemcinin mimarisi gibi donanımsal etkenlerden bağımsız
programlama yapılır.
Neden OpenGL ?
• Birçok programlama dilinde kullanılabilir
• Ada, C, C++, C# (SharpGL adı verilen sınıflar sayesinde), Fortran, Python, Perl ve Java
programlama dilleri kullanılarak OpenGL kitaplığından faydalanılabilir.
3
GLUT nedir?
• GLUT : OpenGL Utility Toolkit (OpenGL Araç Kiti)
• İşletim sistemine aktarılmış bir kitaplıktır:
• Örn : pencereler oluşturmak, klavye ve fareden veri almak vb.
• Amacı OpenGL uygulamaları için pencere yöneticisinden bağımsız bir arabirim
eksiğini gidermektir (taşınabilirlik)
Dikkat !
• OpenGL platformdan bağımsız olduğu için bazı işlemler bu kitaplık ile yapılamaz.
Örneğin kullanıcıdan veri almak, bir pencere çizdirmek gibi işler hep kullanılan
pencere yöneticisi ve işletim sistemine bağlıdır. Bu yüzden OpenGL'in bu
durumlarda platforma bağımlı olduğunu düşünülebilir. Çünkü penceresini her
pencere yöneticisinde farklı çizdirecek bir grafik programı yazmak demek her
bilgisayarda çalışacak ayrı pencere açma kodu yazmak demektir. Bu durumda
OpenGL Araç Kiti (GLUT) yazılım geliştiricileri bir platforma bağlı olmaktan kurtarır.
• GLUT olmadan da OpenGL programlama yapılabilir, örneğin Linux'ta kullanılan X-
Window sistemin kendi işlevleri kullanılarak pencere çizdirilebilir fakat bu kod
sadece X-Window'da çalışır. Kod Windows'a götürülüp derlendiğinde çalışmaz,
çünkü Windows'da X-Window işlevleri yoktur.
4
OpenGL nasıl çalışır?
5
OpenGL Boru Hattı (PipeLine)
• Bir uygulama OpenGL fonksiyon çağrıları yaparken istekler bir komut tamponuna konur. Bu
tampon ilgili komut (grafik dönüşüm, kaplama bilgileri vb) bilgileri ile dolar. Tampon temizlenince
programcı veya grafik sürücüsünün mimarisine bağlı olarak komutlar bir sonraki aşamaya geçerler.
• Grafik bilgileri ilk başta uygun forma dönüştürülüp ışıklandırılır. Dönüştürme işlemi matematiksel
olarak yoğun işlemlerin kullanıldığı ve grafik bilgilerinin kullanılarak objenin yer ve durum
bilgilerinin alınıp görüntüde tekrar çizilme işlemidir. Işıklandırma ise objeye her yönden verilen ışık
ile objenin nasıl görüneceğinin belirlendiği kısımdır.
• Bir önceki aşama tamamlandığında, bilgi Grafik İnşaa bölümüne yüklenir. Geometrik, renk ve doku
bilgilerini alınması ve renkli görüntünün oluşması bu aşamada gerçekleştirilir.
• Bundan sonra işlenen görüntü, görüntü tamponuna (frame buffer) gönderilir. Görüntü tamponu
aslen ekran kartının hafızasıdır. 3D oyunlar oynarken karşılaşılan frame(görüntü karesi) tabiri bu
anlama gelir. Görüntü kartının hafıza büyüklüğü ne kadar faal görüntü karesini tutabileceği, işlemci
gücü ise bunları ne kadar hızlı işleyebileceği anlamına gelmektedir. Kısaca daha güçlü görüntü kartı
daha akışkan ve ayrıntılı görüntü demektir.
6
OpenGL Fonksiyonları
OpenGL yordamları başta kütüphane takısını (gl) daha sonra yapacağı işin özetini taşıyan bir komut
kökünü (Color) taşır. Bunu takip eden sayı yordamın aldığı parametre sayısı (3), ve parametrelerin genel
tipidir (f).
Fonksiyon örnekleri: