Home Index Search Links About Us
[LinuxFocus Image]
[Navegation Bar]
  Duyumlar   Belgelikler   Kuruluþlar  Öðütler  

OpenGL Nedir?

Yazar: Miguel Angel Sepúlveda

Çeviri: Ayça Nermin


[OpenGL logo]
Silicon Graphics
OpenGL specs
OpenGL SSS
3Dfx Etkileþimli

Bu yazý OpenGL ve onun Linux'daki desteði hakkýnda bir yazý dizisi baþlatmaktadýr. Yazý, uygulamalarýna yüksek performanslý 2D ve 3D grafikler ekleme konusunda bilgi edinmek isteyen programcýlar için düþünülmüþtür.

Hiç kuþkusuz, OpenGL , 2D ve 3D uygulamalarý geliþtirmede üstün bir API endüstrisi olup bilimsel, mühendislik ve özel etki geliþtirimlerinde yeðlenen bir platform olan ünlü SGI iþ istasyonlarýný yapan Silicon Graphics IRIS GL-kitaplýðý'na izleyicisi olabileceði düþünülmektedir. SGI, gelecek için kolay kullanýmlý, sezgiyle anlaþýlabilen, taþýnabilir ve network uyumlu API yapmak için OpenGL'e deneyimleri ile destek olmuþtur. Ayný zamanda SGI'ý açýk sistemlerin önemini farkettikleri için kredilendirebiliriz. Birçok yazýlým ve donaným üreticisi geri planda OpenGL'in özelliklilendirilmesinde rol almýþlardýr. Bu yaklaþým nedeniyle, OpenGL uygulamalarý; kiþisel bilgisayarda windows95'den, görkemli linux sistemimize, UNIX iþ istasyonlarýndan, anayapý süperbilgisayarlara, piyasada bulunan tüm platformlara kolaylýkla yerleþtirilebilmektedir. Mimari Ýnceleme Kurulu  deðiþiklikleri onaylayarak ya da geri çevirerek veya uygunluk testleri öngörerek OpenGL özelliklilendirilmelerini denetim altýnda tutmaktadýr.

SGI'ýn eski IRIS GL-kitaplýðýnýn tersine, OpenGL taslak olarak platform ve iþletim sisteminden baðýmsýzdýr. Network'u algýlayabildiði için OpenGL uygulamasýný bir sunumcu ve çoðunlukla grafikleri görüntüleþtiren bir istemciye ayýrmak mümkündür. OpenGL komutlarýný network üzerinden sunumcu ve istemci arasýnda kullanmak için bir protokol vardýr. Sunumcu ile kullanýcýnýn ayný tür platformda çalýþma zorunluluðu olmamasýný saðlayan iþletim sistemi baðýmsýzlýðý da büyük bir avantaj olarak gözükmektedir. Çoðunlukla, sunumcu karmaþýk bir simülasyon çalýþtýran bir süper bilgisayar ve istemci de grafik görüntülemeye tahsis edilmiþ basit bir iþ istasyonudur.

Bütün bunlardan baþka OpenGL veriyollulaþtýrýlmýþ, yüksek performanslý grafik görüntüleþtirme kitaplýðý olmakla birlikte OpenGL'in enbasitögelerini donaným düzeyinde devreyesokan grafik hýzlandýrýcý kartlar ve özelyapýlý 3D kartlarý da vardýr. Yakýn zamana kadar bu geliþmiþ grafik kartlarý çok pahalýydý ve sadece SGI iþ istasyonlarý ile diðer UNIX iþ istasyonlarý için olanlarý bulunmaktaydý. Herþey çok çabuk deðiþiyor! Silicon Graphics'in cömert lisanslarýna ve sürücü geliþtirme programlarýna teþekkürler.Böylece kiþisel bilgisayar kullanýcýlarý için çok daha fazla OpenGL donanýmý göreceðiz. Linux kullanýcýlarý bu fýrsattan hoþnut olabilirler. Evet 3Dfx Interactive adýnda bir firma bir seri 3D grafik kartý ve Kayar Kitaplýk Linux Ýþletim sistemine destek sunmaktalar. Bu yazý dizisinde Philip Ross ( 3Dfx Grafik Katlarý bizim iþimizde kullanacaðýmýz 3Dfx grafik kartlarýný ayrýntýlarýyla anlatmaktadýr. Bu, Linux pazarýnýn burada kalýcý olduðunu anlayan bazý donaným üreticilerinde büyük bir tutum deðiþikliðine neden olmuþtur. Linux taraftarlarý bu tür atýlýmlara destek olmalýlar ya da bunlarý özendirmelidirler.

OpenGL'in donanýmdan baðýmsýz olmasýný saðlamak için; kullanýcý girdisini saðlamak için kullanýlan komutlar ile pencere iþlemleri için kullanýlan komutlar devre dýþý býrakýlmýþtýr. Bu OpenGL kullanýmý için büyük bir kýsýt gibi görünebilir. Fakat ilerde göreceðimiz (Bakýnýz GLUT Programlama Serisi), gibi OpenGL'i pencere iþlemlerini ve kullanýcý giriþleriyle ilgilenecek diðer esnek program kitaplýklarýyla birleþtirmek mümkündür. Ayrýca, OpenGL zor modellemeler (moleküller, uçaklar, evler, kuþlar vb) için hiçbir komut bulundurmaz. OpenGL'de sadece çok basit geometrik cisimler bulunur (nokta, doðru ve çokgenler). Program geliþtiren kiþi modellerini bu birkaç basit cisimi kullanarak oluþturmalýdýr. Daha karmaþýk modelleri yapmaya olanak saðlayan OpenGL'le iliþkili kitaplýklar da bulunmakta olup herhangibir kullanýcý bu kitaplýklarý kendi modellerini yaratmak için kullanabilir.

OpenGL ile ilgili bu yazý dizilerimizde OpenGL için en yaygýnbilinen C arayüzünü kullanacaðýz. Bununla birlikte okuyucu baðlayýcýlarýn diðer diller : FORTRAN, C++, Ada ve Java için de kullanýþlý olduðunu bilmelidir. Dizimizin sonraki yazýlarýnda, okuyucu OpenGL için C arayüzüne alýþtýktan sonra, Open-Inventor'dan : OpenGL'e C++ kitaplýðýndan bir uzantý'dan sözedeceðiz.

Aþaðýdaki yazý fazla ayrýntýsýna girmeden OpenGL'in yerine getirdiði bazý özellikleri anlatmaktadýr.

  • Geometrik Enbasitögeler Nesnelerin matematiksel tanýmlamalarýný yapmamýzý saðlar. Þimdiki basit enbasitögeler: noktalar, doðrular, çokgenler,þekiller ve . bitmap'lerdir;
  • Renk Kodlamasý RGBA (Kýrmýzý-Yeþil-Mavi-Alpha) 'da ya da renk kataloðunda .  modunda .
  • Gözdengeçirme ve Modelleme nesneleri 3 Boyutlu ortamda düzenlemeye kameramýzý uzayda dolaþtýrýp, gözdengeöirilecek resim için istenilen noktayý seçmeye izin verir.  ;
  • Doku Dönüþtürümü modelimizdeki çokgenlere gerçek görünüþlü yüzeyler görüntüleyerek modelimize gerçekçilik katar. 
  • Malzeme Aydünlatma tüm 3 boyutlu grafiklerin vazgeçilmez bir parçasýdýr. OpenGL maddenin özelliklerini veren her noktanýn rengini ve odadaki ýþýk kaynaðýný hesaplayan komutlar saðlar. 
  • Çift Tamponlama animasyonlarda oluþan titremeyi gidermeye yardým eder. Animasyonda birbirini izleyen her bir çerçeve ayrý bir bellek tamponunda oluþturulur. Ve sadece çerçevenin görüntülenmesi tamamlandýðýnda ekranda görülebilir.  
  • Anti-aliasing bilgisayar ekranýnda çizilmiþ doðrularýn uçlarýnda oluþan çentikleri azaltýr. Çentik uçlu doðrular genellikle düþük çözünürlükte çizildiklerinde oluþular. Anti-aliasing, mimari zig-zag larý azaltmak için rengi ve doðrularýn yakýnýndaki pixellerin yoðunluðunu deðiþtirir.  
  • Gouraud gölgelemesi3 boyutlu cisme düzgün bir gölgeleme uygulamak için kullanýlan bir yöntemdir ve cismin yüzeyleri boyunca ince renk farklarý saðlar.  
  • Z-buffering Üç boyutlu cismin Z koordinatýnýn izini tutar. Z-buffer'ý  'nin; gözlemcinin cisminin yaklaþýk izini sürer. Z-Buferring ayný zamanda saklý yüzeyin yerinin deðiþtirilmesimde önemlidir.  
  • Sis, duman ve pus gibi Atmosfer Etkileri bilgisayarda þekillerin daha gerçekçi olmasýný saðlar. Atmosfer etkileri olmaksýzýn þekiller bazen çok sert hatlý ve gerçek dýþý gözükür. Sis terimi gerçekten pusu, nemi, dumaný, kirliliði ya da þekillere bir derinlik katarak basitçe hava etkilerini taklit eden bir algoritmayý tanýmlar. 
  • Alfa Birleþtirimi, çerçeve tamponunda depolanmýþ pikselle renk birleþtirimine izin vererek, RGBA kodunun Alfa deðerini (daðýtýilmýþ malzeme deðeri) kullanýr. Örneðin, kýrmýzý bir kutu önünde geçirgen açýk mavi bir pencerenin çizimini düþünelim. Alfa birleþtirimi pencere nesnesinin geçirgenliðini öylesine âenzeþtirir ki cam içinden görünen kutu bir çingene mavisi tonuyla gözükür. 
  • Ýince Metal Düzlemler ekranýn bazý bölümlerine çizim kýsýtlamasý getirir. 
  • Görüntü Listeleri çizim komutlarýnýn daha sonraki bi görýntýleþtirme için depolanmasýna olanak saðlar. Uygun biçimde kullanýldýðýnda, görüntü listeleri görüntüleþtirme performansýný büyük oranda yükseltebilir. 
  • Çokterimlisel Hesaplayýcýlar düzgün olmayan oransal B-spline'lara destek vermeyi saðlarlar. Bu, arada çok sayýda noktanýn kullanýmýna gereksinim duyurmaksýzýn birkaç referans noktasý üzerinden düzgün eðriler çizilebilmesine olanak saðlar. 
  • Geribesleme, Seçim ve Gerialým özellikleri kullanýcýya ekran üzerinde çizilmiþ bir nesnenin gerialýmý ya da ekran üzerinde bir bölgenin seçimi iöin olanak saðlar. Geribesleme modu görüntüleþtirme hesaplamalarýnýn geliþtirici tarafýndan elde edilebilmesine olanak saðlar. 
  • Raster enbasitögeleri (bitmap'ler and piksel dikdörtgenleri) 
  • Piksel Ýþlemleri 
  • Dönüþümler: dönme, ölçekleme, Ötelemelers, 3 Boyutta perspektifler, etc. 

Sözettiðimiz gibi, OpenGL'i gerçekten taþýnabilir ve platformdan baðýmsýz yapabilmek için pencereleme sistemi ile arayüzleþen tüm komutlarýn, sözgelimi: pencere açma, pencere kapama, pencere ölçekleme, pnecere yenidenbiçimlendirme, imleç konumunun okunmasý; ve ayný zamanda verigiriþ aygýtlarýyla aray¢uzleþen tüm komutlarýn (sözgelimi klavyeden bilgi giriþi) kurban edilmesi gerekmekteydi. Bu etkinliklerin tümü yüksek derecede iþletim sistemine baðlýdýr. Kökeninde, GL-kitaplýðý pencere ve çevrebirim etkileþimlerinde kendi komutlarýna sahipti. Ancak, bunlar IRIX'e (SGI iþletim sistemi) özgü bulunmaktaydý. Kendi platformunu bilmek ve pencere etkileþimlerini özgün platformunda gerçekleþtirmek OpenGL geliçtiricisine kalmýþ bir konudur.

SGI'dan J. Kilgard tarafýndan oluçturulan ve bu sorun üzerinde iþlevi olan bir ek kitaplýk bulunmaktadýr. Mark, eski AUX kitaplýðýnýn (AUX kitaplýðýnýn ne olduðunu umusamayýn, onu unutun!) yerine geçebilecek bir GL elaygýttakýmý kitaplýðý yazdý. GLUT kitaplýðý ücrtsiz olarak elde edilebilmektedir.  OpenGL gibi GLUT'nun da, ikitabanlý sýrýmleri yanýsýra Linux için kaynak kodlarýný bulabilmeniz mümkündür. GLUT kitaplýðý platform'dan baðýmsýz olup pencereleme ve çevrebirimler için ortak bir yapý sunar. Dolayýsýyla, bir OpenGL uygulamasý bir grafik canlandýrým için bir pencere açmak istediðinde, tabandaki pencere sistemini egemenliðine alacak biçimde GLUT komut takýmýný kullanýir. GLUT, bir anlamda, eldeki pencereleme sisteminin (X11, windows, Motif, vs..) pis ayrýntýlarýný geliþtiriciden saklayarak onun eldeki iþe yani OpenGL koduna yoðunlaþmasýna olanak saðlar. GLUT diðer bir güzel avantajý da kodunuzun platformdan baðýmsýz olmasýný saðlamasýdýr. Kiþisel olarak, GLUT ve OpenGL kullanan protein ve jel benzeþtirimleri yazmýþ olup herhangi bir problem olmaksýzýn ve de bir tek makine baðýmlý satýr içermeksizin Linux-Intel, Linux-Alpha, ya da Windows 95'te derleyip çalýþtýrmýþ bulunmaktayým. ( Zaman zaman windows 95 kullandýðýmý itiraf etmekteyim ;-)  OpenGL uygulamalarý yazmak isteyen herkese GLUT'u bir pencere iþleyicisi olarak kullanmalarýný kuvvetle salýk veririm.

GLUT kullanýmýnýn OpenGL'i öðrenmek kadar önemli olduðunun bilincinde olarak, bu andaki OpenGL hakkýndaki Linux Focus serisinde, adým adým GLUT kullanýmýný ve çevrebirim aygýtlarýnýn rahatça iþlenebilmesinin anlatýmýný içeren birkaç yazý da sunulacaktýr.

Bu kýsa giriþi kaparken "Evrenin Ustalarýndan" bir diðerini, Linux için Mesa adlý bir OpenGL benzeri kitaplýðý düzenle ve sabýrla geliþtiren Brian Paul'dan sözetmeden geçemeyiz. Bu an iðin Mesa yalnýzca yazýlýmsal görüntüleþtirme yapmaktadýr. Yani, tüm görüntüleþtirme görevleri CPU'ya aksi halde 3 Boyutlu yetenekleri olan donanýma kalmýþ bir konudur. Ama, Mesa içeriden devreye sokulabilen olanaklarla hýzlandýrýlmýþ donanýmlar için sürücü yazümüna olanak saðlayabilmektedir. Bu an için, yalnýzca Mondello, S3 Virge (sadece Win95), GLINT, ve Voodoo 3Dfx yongatakýmlarý için sürücüler bulunmaktadýr. David Bucciarelli tarafýndan yazýlan Voodoo sürücüsü sayesinde Mesa, pahalý SGI istasyonlarý düzeyinde performansa ulaþabilmektedir. Dolayýsýyla, yüksek performanslý 3Boyut-hýzlandýrýlmýþ grafikle ilgilenmek istiyorsanýz gidip bir 3Dfx kart alabilirsiniz.

Sonuçta,benim Alpha-PC (21164 550MHz 164MRam Linux 2.0.32)'im üzerindeki deneyimimden sözetmeden geçemeyeceðim. Yazmakta olduðum bir jel benzeþtirim programý için Mesa kitaplýðýný kullanmaktayým. Bu ana kadar Alfa sistemleri için Glide kitaplýðýnýn piyasaya sürülmemesinden dolayý (LÜTFEN ÇABUK OLUN!!!) sisteminde Mesa kitaplýðý için destek bulunmamaktadýr. Neyse, Phil Ross ve ben kýsa bir süre önce onun Pentium PC + 3Dfx'inin ve benim Alpha PC + Matrox Millennium kartýnýn performanslarýný karþýlaþtýrdýk. Benim jel canlandýrýmýmýn benim PC'imde onunkindeki kadar düzgün çalýþtýðýný görmek oldukça sürpriz oldu. OpenGL demo programlarý benim PC'imde daha da iyi (kuþkusuz doku kullanmayanlardan sözetmekteyim) çalýþmaktaydý. Diðer bir deyiþle OpenGL için donaným desteðinin eksikliði Alfa CPU'nun acýmasýz gücý tarafýndan dengelenmekteydi. Ýþ hakkýnda bir fikir verebilmek için, jel canlandýrýmýnýn her çerçevesinde onbinlerce küre ve silindir ve de aydýnlatma hesaplamalarýna gereksinim olduðundan sözedilebilir.PC üzerinde, hesaplamalarýn zavallý Intel CPU'su için çok fazla olmasýndan dolayý, bu kadar çok sayýda monomer göremedik. Öte yandan, Alfa'da bu tür sorun gözlenmedi. Alfa PC'mi bir 3Dfx kartý ve Mesa için donaným desteði ile donatýlmýþ olarak görmeyi bekleyemem.

Daha Çok Bilgi Ýçin::

© 1998 Miguel Angel Sepulveda
Bu sanal yörenin bakýmý Miguel A Sepulveda tarafýndan yapýlmaktadýr..