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