Home Index Search Links About Us
[LinuxFocus Image]
[Navegation Bar]
  News   Archives   Companies   Tips  

Donan�m Tarama:
Voodoo 3Dfx ak�lda tutularak OpenGL ve GLUT Programlama

Yazar: Phil Ross

�eviri: Esma Meral


Son yaz�mda 3Dfx ve onun Mesa donan�m�n� h�zland�rma s��as�n�n ne kadar iyi oldu�unu yazm��t�m. Mesa+3Dfx kullanman�n �st�nl�kleri ve yitirimleri (disadvantages) �zerinde durmu�tum. Bu kez bu �st�nl�klerin baz�lar�n�n ayr�nt�s�na girmek ve bir geli�tirmecinin bunlara nas�l ula�abilece�ine de�inmek istiyorum.

Ana pencere i�inde altpencere yaratmak i�in GLUT kitapl���n�n nas�l kullan�laca��n� a��klayan, Miguel'in yaz�s�ndan ba�layal�m. Altpencere kulland���n�z zaman ana pencerenin i�eri�inden ba��ms�z olarak yeni bir i�erik yarat�l�r. Ne yaz�k ki Mesa i�in kullan�lan 3Dfx s�r�c�s� bir anda sadece tek bir i�eri�i destekler. E�er 3Dfx �zerinde altpencere kullanmaya �al���rsan�z ana pencere i�inde alt pencere g�r�nt�le�tirmek yerine, ana pencerenin �zerinde bir alt pencere g�r�nt�le�tirilir. Bu durum s�rayla ana pencerenin ve alt pencerenin �ok h�zl� g�r�nt�le�tirilmesi etkisi yarat�r. A��kt�r ki bu, alt pencereden bekledi�imiz etki de�ildir. Bu y�zden alt pencerelerde matris y���tlar�n� kullanarak nas�l bu sorundan uzakla��laca��n� ��renmek i�in Miguel'in ilerideki a��klamalar�n� beklemek zorundas�n�z.

�kinci olarak 3Dfx ile tam ekran kullan�rken mouse odaklamas�n� korumak sorununun nas�l a��laca��n� g�stermek istiyorum. 3Dfx ile tamekran g�r�nt�le�tirmeyi kullan�rken, g�r�nt�le�tirme 2 boyutlu video adapt�r�n�n �er�eve arabelle�i yerine 3Dfx'in �er�eve arabelle�ine yap�l�r. Sonu�ta pencere 2 boyutlu masa�st�bilgisayar�n�z �zerindeki program�n�z i�in yarat�l�r fakat program i�in g�r�nt�le�tirmenin t�m� 3Dfx'e tam ekran olarak yap�l�r. Tek kafal� sistem �zerinde, 3Dfx monit�r �zerinde yer al�r ve 2 boyutlu masa�st�bilgisayar �zerinde pencere g�remeyebilirsiniz, ama iki kafal� bir sistemde, bir monit�r 2 boyutlu masa�st�bilgisayar ve program i�in yarat�lan pencereyi g�sterir ve di�er monit�r de program� tam ekran g�rebilirsiniz.

Pencereyi g�remedi�iniz i�in 2 boyutlu masa�st�bilgisayar �zerinde tek kafal� sistemlerde pencere odaklamas�n� korumak genelde zordur. 2 boyutlu masa�st�bilgisayar �zerindeki program�n penceresi odaklamas�n� kaybederse, bilgi giri�ini almas� m�mk�n olmayabilir. Kullan�c�, tasarlanan ��k�� tu�una bast��� zaman, program giri�i kabul edemezse ve kullan�c�, pencere �zerindeki ��k�� d��mesinin yerini g�remezse, kullan�c� program� kapatamayabilir!

Bu sorunu gidermek amac�yla glutFullScreen() ve glViewport() fonksiyonlar�n� kullanabilirsiniz. glutFullScreen() fonksiyonu program penceresini 2 boyutlu masa�st�bilgisayar�n boyutlar�na getirir ve b�ylece pencere 2 boyutlu masa�st� bilgisayar �zerinde tam ekran durumuna gelir. Bir pencereyi, yarat�m�ndan sonra 2 boyutlu masa�st�bilgisayar �zerinde tam ekran durumuna getirmek i�in yapabilece�iniz �ey glutFullScreen()'i �a��rmakt�r. Pencere tam ekran durumunda oldu�u zaman farenin pencere d���na ��kmas� gibi bir durum yoktur, bu y�zden pencere odaklamas�n� kaybedemez.

glViewport() fonksiyonu program i�in hangi b�y�kl�kte viewport'un kullan�laca��n� belirtir. Viewport'u belirledi�iniz zaman g�r�nt�le�tirmenin t�m� bu viewport i�inde yap�l�r. Viewport'u pencerenin yeni boyutlar�na uyarlamak i�in ola�an olarak, bir yenidenbi�imleme geri�a��rma fonksiyonu i�inde glViewport()'u �a��raca��n�z, 3Dfx i�in glViewport()'u 3Dfx ��z�n�rl���n�n boyutlar�yla �a��r�n�z. Bu fonksiyonu; 640x480 ��z�n�rl�kte 3Dfx'i �al��t�r�yorsan�z glViewport(0,0,640,480) �eklinde, 800x600 ��z�n�rl�kte �al��t�r�yorsan�z glViewport(0,0,800,600) �eklinde �a��rabilirsiniz. Bu, pencere tam ekran olmas�na ra�men viewport'un boyutlar�n� 3Dfx kart�n�z�n ��z�n�rl��� olarak vermenizi sa�lar.

Bu yaz�ya Miguel'in 3Dfx �zerinde �al��mak i�in de�i�tirilmi� d�zg�n �ekilli ��geninin bir s�r�m�n� dahil ettim ( ../../common/March1998/example3.c, ../../common/March1998/Makefile). Altpencereleri d��lad�m, glutFullscreen() fonksiyonunu uygun yere ekledim (pencere yarat�lmas� sonras�na), ve glViewport()'u yenidenbi�imleme geri�a��rma fonksiyonunda, viewport'u 640x480'e (benim 3Dfx kart�m�n ��z�n�rl���) zorlamak i�in de�i�tirdim. 3 boyut olmaks�z�n program� �al��t�r�yorsan�z ( MESA_GLX_FX donan�m de�i�kenlerini ayarlamaks�z�n) program penceresinin masa�st�bilgisayar�n�z�n boyutlar�nda a��laca��na dikkat edin. Fakat g�r�nt�le�tirme bu pencere i�inde yaln�zca 640x480 alan�nda yap�l�r. E�er program� 3Dfx ile �al��t�r�yorsan�z i�lemlerin 3Dfx'in tam boyutlar�nda yap�ld���n� g�receksiniz ve program bu durumda odaklamas�n� kaybedecektir.

Dikkat edilecek di�er bir nokta da, program� 3Dfx olmadan �al��t�rd���n�zda, yaln�zca viewport'un g�ncellenmesi yerine t�m ekran�n g�ncellenmesinden dolay�, program�n ger�ekten �ok yava� �al��aca��d�r. Bu 2 boyutlu masa�st�bilgisayar kulland���n�zda olduk�a b�y�k bir ba�ar�m (performans) sorunudur fakat 3Dfx'de tam ekran kullan�ld���nda olduk�a iyidir. Bu nedenle, 3Dfx'in kullan�l�p kullan�lmad���n� alg�layabilmek i�in programlar�n�z� ( MESA_GLX_FX �evre de�i�kenini alg�lay�p okuyarak) yazmak isteyebilirsiniz. 3Dfx'in alg�lanmas� durumunda glutFullScreen()'le glViewport()'u zorlama d�zenini kullanmak 3Dfx'in alg�lanmamas� durumundaysa kullanmamak se�enekleri de programda i�erilir.


Daha �ok Bilgi ��in:
© 1998 Phillip Ross
Bu sanaly�renin bak�m� Miguel A Sepulveda taraf�ndan yap�lmaktad�r.