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

GLUT: Men�lerin Kullan�m�

Yazar: Miguel Angel Sepulveda

�eviri: �T� Fen-Edebiyat Fak�ltesi ��rencilerinden Bir Grup


Mark  Kilgard  tarafindan  yazilan bu  makale  GL Utility Toolhit (GLUT) hakkindaki  serinin  ucuncusudur.GLUT,OpenGL  gelistirenleri  icin  cok kullanisli bir sistemdir  cunku  GLUT  , OpenGL uygulama  bolumune  bagli  API ' yi  basit bir sekilde  ogrenme ve  kullanma teknigini  ozetler 

Onceki  makalede  aciklandigi  gibi  OpenGL  deki  tasarlanan  sebepler  sadece  gelismis  bir  3D  API 'in  emirlerine  bagli  yapi  icerir . Windows'u  acmak  klavye  kullanmak , giris, etc..guclu  tasaridir  ve bu yuzden  o , OpenGL'nin  alani  disindadir.GLUT, bu problemin  cevabidir:  GLUT ,windows,  double  buffering, metin cevirisi , klavye girisi  ve  menu gibi  elle kullanilan  seyler gibi cok  yonlu  genel tasarilar sunar. 

Bugun  OpenGL uygulamalarimizin  icindeki  menulerin  kullanimini  arastiracagiz. Bir  menu , kullanim-uygulama  iletisiminin birden  fazla  nicelikleridir.Onceki  makalemizde (Windows  Management) ,giris yeni anahtar  kullanimi  icin  diger  teknigi  gosterdik.GLUT ,mouse olayi  kadar  iyi 
klavye  yerlestirme olaylari icerir  ve bu  olaylari  kullanmak icin  kaydedilmis  olaylari  geri cagirmamiza izin verir." Hot  key "in  dezavantajidirki onlar 
gorunmez, onlar  Key'in  ne  oldugunu  okuyan  veya  hatirlayan  bir kullanici  ister . Diger taraftaki  menuler  daha  aciktir cunku  onlar  sekillidir  ve 
bugunku  gecerli kullanim  tercihlerini   gosterir. 
 

Bir  ornek  olarak  burada  program  orneginin  ( example1. tar. gz)kaynaklari  vardir.Bu  program  bizim  onceki  makale Windows  Management  da ki 
gosterilen  ornegin  degisigidir.Download  programi  ve onun  derlenmesi  dosya olusturur.  

Derleme, bir OpenGL (ornegin  Mesa)ve  GLUT  kutuphanesine  ihtiyac duyar.Her  ikiside  acik  olarak  degerlidir ve  bir  cok  Linux  dagitimlarinin bir 
yolunu  kapsar.Derlemede  basarili  bir  dosyaya  sahip  olduk,ornek 1.Onu  kullan  ve renkli  ucgenli (kirmizi, yesil, mavi ) yeni  bir window goreceksiniz. 
(soldaki  sekle bakiniz). 
 

Cerceve,  arkadaki  siyah  ana pencereyi , ortadaki  ucgeni, arkadaki  gri  sub-window ve  onun  uzerine  yazilan  bazi  metinleri  icerir.Ornegimiz  gercekten 
heyecan  verici  gercek  bir  tempodur  bu  yuzden  sub-window'daki  zaman  alani  ileriye  hareket  ettirilmelidir. 

Mouse  okunu ana pencerinin  alaninda  hareket  ettir  sonra  mouse tikla  ve soldaki  mouse dugmesini  birakma.Bu olay  bizim  ornekteki  kullanimdir  ve o,  takip  edilen  menuyu  acar: 

Menu  uc olay  kapsar (ceviri ve donus yapma, renk degistirme) ve  girilen alandan  cikmak icin  son hak  icerir.Soldaki  mouse  dugmesini  tutarken her 
etkiyi  hareket  ettir  ve  neler  oldugunu  gozden  gecir. 

"Rotation On" ucgenin agirlik  merkezi  etrafinda donmeye  baslayacak , "Translation  On"menu  parcasi window'un karsisindaki ucgenin  yatayinda hareket edecek  ve  onu  ekranda  kaplayacak  amac sona  erdigi  zaman."Change  Color"  hakki , bu yeni  haklarla  bir alt  menu  baslatacak: 
 
 
 

  • Red  ucgeni  kirmizi  yapar
  • Blue ucgeni  mavi   yapar
  • Green  ucgeni  yesil yapar
  • RGB  ucgeni  kirmizi,yesil ve mavi  yapar.
Bu , OpenGL uygulama  icindeki   usa'nin  en basit  bir  ornegidir.Menu ve alt  menunun  goruntusu  tasari  bagliligidir.Burada  gosterilenler  Linux  GLUT'in  bir  ornegidir.Windows 95\NT 'yi  derle  ve  calistir,  menuler  farkli bir  gorunume  sahip  olacak.Oyle  bir  kuraldir ki  gorev  sadece ve sadece  GLUT kutuphanesi  kullanildigi  zaman  tasinabilir 

Dikkat  etki , ana menu  menu  girislerinin  iki farkli  cesidine  sonraahiptir.Gereken  olay  basarildigi  zaman, ilk  tip (Rotation On, Translation  On) gercekten  degisir.Bunun anlami, donme tarzindaki  ucgeni baslattiktan    sonra   arkasindan  "Rotation  Off" yazisini  goreceksiniz.Menu girisindeki  baska bir  tip "Change  Color","Red","Blue"' and "Green"  gibi  sabit  kalir. 

Okuyucunun  yerinde  olup  bu  menuleri  nasil  programladigi  tanimina  devam etmeden  once  birkac ilginc  seylerden  haberdar  olmak  isterdim.Bu demo'nun  iki yeni  anahtari  oldugunu hatirliyormusun? Bu anahtarlar ; cikmak icin "q" , bilgi dosyasini acip kapamak icin"i" dir.Bunlari  simdi deneyin hala calisiyorlar.

Bilgi  dosyasi  acikken, curser'i  gri  alanda  herhangi  bir  yere  getir  ve faredeki  sol  tusa  tikla.Surpriz! Diger  menuyu  goruyor  olmalisiniz.
 

Bu g�sterir ki menuler yaln�z olaylara (sol mouse tu�u) ba�lanmakla kalmaz, OpenGL i�eri�ine g�re de �evirilirler.�nceki makalelerimizde belirtti�imiz gibi bir GLUT alt pencere kendi OpenGL i�eri�ini ta��r,burada o ger�e�in di�er sonucunuda g�r�r�z.�ki menu ayn� olaylara fakat farkl� i�eriklere ba�lan�rlar. Geli�tirenin,ba�vurusunu yazabilmesi i�in �ok kar��m�� aray�zeyi (yazabilmesi i�in) �imdi g��l� bir arac� var.

Daha da ilgin� olan ger�ek,I-keyi ve �er�evenin �zerindeki b�l�mdeki cursoru hareket ettirmesini kullanarak informat�onal banneri kapat�rsan Th�s �s a dummy menu� giri�ine geri d�nemezsin. Neden?��nk� alt pencereler sakland���nda, t�m i�erik (ba�lan�lan menuler dahil) oldu�u gibi gizlenirler.

�imdi program�n i�ndekiileri tan�maya ba�l�yal�m. Art�k okuyucular�n daha �nceki makalelerde sunulan GLUT ve OpenGL malzemelerini yak�ndan tan�d���n� zannediyorum. main() baz� farkl� b�l�mleri i�erir, s�ra �nemlidir!:

  • GLUT ba�lat�m�. G�sterim penceresini a�, command-line arguments�e ge�,d�splay modu ve opt�ons se�eneklerini kur.
  • Ana Pencere Tasar�m�. Ana pencereyi yarat pencereyle ilgili uygun callback fonksiyonlar�n� kur, idle callback fonksiyonlar�n� kur.
  • Bir Alt Menu Yarat. Bu alt menu �Renk De�i�imi� ni i�erir ve sonra ana menuye dahil olur.
  • Ana Menu Yarat. Ana menu kur,menu par�alar�n� ekle ve par�alardan biri gibi alt-menuyu (�nceki) dahil et, sonra da mouse�un sol tu�uyla bu menuyu ba�la. �unu bil ki hala ana pencerenin i�erdi�i b�l�mdeyiz.
  • GL Call Listesi Yarat. Bu geli�tirilmi� Open GL konusudur ve �imdi ayr�nt�l� bir �ekilde bakmayaca��z. Call List hakk�nda, OpenGL objelerinin y�klenmesi esnas�nda yap�lan bir �e�it yoldur dememiz yeterli. Bu b�l�mde d�rt tane Call List yani �a��rma listesi vard�r: k�rm�z� ��gen,mavi ��gen, ye�il ��gen ve de RGB ��geni.
  • Alt Pencere Yarat.Bir alt pencere yarat, handle�I koru, uygun geri �a��rma fonksiyonlar�n� kur. Alt pencere kurulduktan sonra, yeni bir i�erik o yere girer.
  • Alt-Pencere ��in Yeni Menu Yarat. Tam olarak �nceki yapt�klar�m�z, yeni bir menu yapma menu ayr�nt�lar�n� ekleme ve bunu mouse�un sol tu�uyla ba�lamak. �imdi menu alt pencerenin i�eri�iyle ba�lanacak.

Menu haz�rlaman�n haricinde, okuyucu i�in di�er b�t�n ayr�nt�lar (b�l�mler) ilgili olabilir. Menu yarat�m code�unun h�zl� bir denetimin, nas�l basit oldu�unu ortaya ��kar�r. Menuler int glutCreateMenu ( void (f*) (int) ),y�netiminde yap�l�r, f fonksiyonu hareketi do�rudan yapan ve hedeflenmi� menu ayr�nt�s� taraf�ndan geri d�nd�r�len numaralar� geri al�r. glutCreatemenu taraf�ndan �evrilen de�er,yeni yap�lm�� penceres� i�in bir tamsay� ay�r�c�s�d�r.

Geri �a��r�m fonksiyonlar�n�n �nceden menu olaylar�n� ele almas� �ok basitt�r.void mainMenu (int) ya da void subMenu (int) �I incele. Temel olarak istenilen bir switch ile ba�l�d�rlar.void glutAddMenuEntry (char *s, int nr) fonksiyonunu kullanarak ayr�nt�lara eklenerek menu yap�lmas�ndan sonra,menu ayr�nt� alan�na s textinin yaz�ld��� yere,menu ayr�nt�s� se�ildi�inde �id� ge�i�i olan nr geri �a��rma fonksiyonu olur. Ayn� menude menu ayr�nt�lar� i�in id�nin kullan�m�ndan ka��n�n�z.

Fonksiyonu kullanarak benzer �ekilde Alt menuler eklenirler vo�d glutAddSubMenu (char *s, int nr).

Sonunda menuyu tamamlamak i�in glutAttachMenu fonksiyonunu kullanarak (mouse�un sol tu�unu kullanarak) input olay�na ba�lan�l�r. Bu fonksiyon ayn� zamanda GLUT_SA�_TU�,GLUT_ORTA_TUޒu da al�r.

Menu ayr�nt�lar� ayn� zamanda void glutChanceToMenuEntry (int entry, char *s,int value ) komutu ile de�i�tirilebilir. �rne�imizde biz

   glutChangeToMenuEntry(2, "Translation On", 2);
yi ana menunun 2. Numaras�na giri�te kulland�k.

Glut ba�ka imkanlara da izin verir: men� ayr�nt�s�n� alt-menu ve v�se-verse �e �evirmede, menular� yok etmede, menu ayr�nt�lar�n� kald�rmada. Bunlar� �u an a��klayam�yoruz ��nk� inan�yorum ki verdi�imiz �rnek gayet basit ve kullan�labilir�ekilde uygulay�c�lar i�in yeterlidir. E�er glut�un extra fonksiyonlar�n� ��renmek istiyorsan�z glut�un el kitab�na bak�n�z.


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