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