BG PDF 13

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

DPÜ Bilgisayar Mühendisliği Bölümü

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

• OpenGL’in fiyatı ne kadar?


• OpenGL bugün dünyada birçok yazılımcı tarafından kullanılmakta ve yazılımcılar bu
kütüphane için hiçbir ücret ödememektedir.

• Peki, ama SGI - Khronos bu üründen nasıl para kazanmaktadır?


• Ekran kartı üreticileri eğer OpenGL destekli bir ekran kartı üretecek ise (bugün bütün
ekran kartları destekliyor) SGI’ya bir telif ödemek zorundadır. Bu telif kapsamında SGI
bu üreticilere gerekli sürücüleri sağlamakta ve ekran kartının performans testlerini
yapmaktadır.

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.

• İşletim sisteminden bağımsızdır


• İş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.

• Yüksek seviye komutlar içermez


• OpenGL'de yalnızca en temel nesneler (nokta, çizgi, çokgen) bulunur. Bunlarla kompleks
modeller (molekül, uçak, ev, araba vb.) oluşturulur.

• Pencere yöneticisinden bağımsızdır


• OpenGL kullanılarak yazılmış programlar, Win32, MacOS ve X-Window pencere
yöneticilerinde sorunsuz çalışırlar.

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?

OpenGL nasıl çalışır?


Programlar birçok çağrıda bulunurlar. Bunlardan bir kısmı programcı, bir kısmı işletim
sistemi ve bir kısmı da programlama dilinin kendi kütüphaneleri tarafından
yapılmaktadır. Windows uygulamaları, çıktıları ekranda göstermek için Grafik Cihaz
Arayüzü denilen bir Windows API kullanırlar. Bu GCA(İngilizce de GDI-Graphics Device
Interface), pencereye yazılar yazmak, çizgiler çizmek için kullanılır. Genellikle grafik
kart üreticileri GCA nın çıktı üretmek için etkileştikleri bir grafik sürücüsünü de kart ile
birlikte verirler. İşte oyun oynarken, bazen grafik kartlarının problem çıkarmasının
sebeplerinden biri de GCA ile kullanılan sürücünün uyuşmaması üzerine ortaya çıkar.
OpenGL’in yazılım tanımlaması, grafik isteklerini bir uygulamadan alarak, 3 boyutlu
grafiklerin renkli bir görüntüsünü oluşturur. Bu görüntünün oluşturulmasından sonra
onu GCA ya vererek monitöre yansıtılmasını sağlar. Windows dışındaki işletim
sistemlerinde de benzer durumlar söz konusudur ancak onlarda GCA nın yerini o
işletim sistemine özgü grafik servisi almaktadı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.

OpenGL Boru Hattı (PipeLine)

• 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:

glTranslatef (TYPE x, TYPE y, TYPE z) : Oluşturulan nesnenin başlangıç koordinatlarını belirler.


glRotatef (TYPE angle, TYPE x, TYPE y, TYPE z) : Orjin ve (x,y,z) noktalarından geçen eksen etrafında,
angle parametresinin tanımladığı açı kadar saat ibresi yönünde döndürülür.
glColorf (TYPE r, TYPE g, TYPE b) : Mevcut köşenin rengini belirler.

You might also like