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..