Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


GLUT Dersleri - 1

(1052 kelime)
(2256 okuma)   Yazdırılabilir Sayfa




GLUT Nedir?:

GLUT bir OpenGL uygulaması yazarken başımıza dert olan pencere açma, kullanıcıdan girdi alma, menüleri yönetme gibi işlemleri kolaylıkla yerine getirmemize olanak tanıyan küçük bir C/C++ kütüphanesidir. GLUT kullanarak çok az sayıda kod satırı ile platformdan bağımsız bir biçimde yukarıda belirttiğimiz işlemleri yapabiliriz. İster windows ister unix programcısı olun, konudunuzda en küçük değişiklik yapmadan uygulamanızın arabirimini oluşturabilirsiniz. Daha önce WinAPI kullanmak veya X Windows fonksiyonları ile ilgilenmek zorunda kalan programcılar GLUT kütüphanesinin sağladığı yalın ortamı inanıyorum ki çok sevecekler. Eğer bir OpenGL uygulaması yazmak istiyorsanız bunun en kolay yolu GLUT kullanmaktır.

GLUT 'ı Programlarımda Nasıl Kullanabilirim?:

Öncelikle şu web sitesinden çalışma platformunuz için GLUT kütüphanesinin en son versiyonunu indirin. GLUT WIN32 sayfası Elinize en son dinamik kütüphane ve bir adet C header kütüğü geçecek. Windows sürümü için ayrıcana glut32.lib isimli ekstra bir kütük de elde edeceksiniz Visual C++ kullanıcıları: header kütüğü derleyicinizin include dizinine koyun, glut32.lib isimli kütüğü ise lib dizinine kopyalayın. Glut32.dll kütüğünü sisteminizdeki SYSTEM yada SYSTEM32 dizinlerinden birine koyabilir yada ana çalışma dizininize (exe kütüğünün oluşturulacağı dizine) yerleştirebilirsiniz Daha sonra bir Win32 application projesi oluşturun ve Proje için Settings->Link menüsünden kütüphaneler kısmına "glut32.lib" i ekleyin. Unix derleyicilerini kullanan arkadaşlar yine aynı şekilde header kütüğünü sistemde erişebilecekleri bir yerde konumlandırmalı, glut32.a kütüğünü ise PATH 'in erişebileceği bir yere koymalıdırlar. Programlarınızda GLUT yordamlarını çağırdığınız kütükler içerisinde "glut.h" isimli header include edilmelidir.

Şimdi adım adım GLUT kullananarak nasıl OpenGL uygulamaları oluşturabileceğimizi inceleyelim.

1. Kütüphaneyi Hazır Duruma Getirmek:

Bu bölümde uygulamamızın ana (main) yordamını oluşturacağız..Ana yordam GLUT kütüphanesi kullanımı için gerekli olan temel fonksiyonları çağırıp bir pencere oluşturduktan sonra GLUT ana mesaj döngüsüne girecek (bu konuya ileride açıklık getireceğiz.). Tüm GLUT yordamları "glut" ön eki ile başlamaktadır. GLUT kütüphanesini kullanmaya başlamadan önce ilk olarak glutInit isimli yordam çağırılmalıdır. Bu yordamın tanımı aşağıdaki gibidir.

void glutInit(int argc, char **argv);

Parametreler:

argc :: programımızın ana (main) yordamından gelen modifiye edilmemiş argc parametresi
argv :: programımızın ana (main) yordamından gelen modifiye edilmemiş argv parametresi

glutInit yordamını çağırdıktan sonra sıra pencere oluşturmaya geldi. Pencereyi oluşturmak için bir dizi yordam çağırmamız gerekmekte. Bu yordamlar ile pencerenin konum, boyut gibi özelliklerini belirtiriz. İlk yordamımız olan glutInitWindowPosition yordamı ile penceremizin sol üst köşesinin x ve y kordinat değerlerini veriyoruz.

void glutInitWindowPosition(int x, int y);

Parametreler:

x :: sol üst köşenin x değeri. -1 olması durumunda pencere yöneticisi konuma kendisi kara verir.
y :: sol üst köşenin y değeri. -1 olması durumunda pencere yöneticisi konuma kendisi kara verir.

Penceremizin konumunu belirttikten sonra sıra pencere büyüklüğünü bildirmeye geldi. Bu iş için glutInitWindowSize yordamını kullanacağız.

void glutInitWindowSize(int w, int h);

Parametreler:

w :: pencere genişliği
h :: pencere yüksekliği

Bir sonraki adım olarak pencere görüntüleme şeklini glutInitDisplayMode yordamını kullanarak belirtiyoruz.

void glutInitDisplayMode(unsigned int mode)

Parametreler:

mode :: pencere görüntüleme şeklini belirten sabit değer.

Pencere görüntüleme şekli ile ilgili değerler GLUT kütüphanesinde (glut.h kütüğünde) tanımlanmışlardır. Bu değerleri OR işlemine sokarak bir seferde yordama parametre olarak yollamak durumundayız. mode değeri ile kullanacağımız renk modelini belirtebilir, double buffering kullanabilir, ya da çeşitli OpenGL bufferlarını aktif hale getirebiliriz.

Renk modelini belirten sabitler şunlardır:

  • GLUT_RGBA veya GLUT_RGB :: Varsayılan renk modeli belirtilmediği taktirde RGBA dır.
  • GLUT_INDEX :: indisli bir renk modeli seçmekte kullanılır.

Buffer'lama şeklini belirten sabitler şunlardır:

  • GLUT_SINGLE :: single buffer
  • GLUT_DOUBLE :: double buffer (genel kullanım için bu model idealdir.)

Bazı OpenGL buffer larını aktif hale getirmek için aşağıdaki sabitler kullanılmalıdır:

  • GLUT_ACCUM :: accumulation buffer
  • GLUT_STENCIL :: stencil buffer
  • GLUT_DEPTH :: depth buffer

Örneğin genel olarak kullanabileceğimiz bir yordam çağırımı şu şekilde olabilir:

. . .
glutInitDisaplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
. . .

Tüm bu hazırlık yordamlarından sonra glutCreateWindow yordamı ile penceremizi oluşturuyoruz.

int glutCreateWindow(char *t);

Parametreler:

t :: pencere başlığı

Yordamın geri dönüş değeri pencereyi belirten bir sayıdır. Bu sayıyı daha sonra başka yordamlar içerisine parametre olarak gönderebiliriz. GLUT ile birden fazla pencere ile çalışırken pencereleri ayırt etmekte bu sayıları kullanacağız.

Şimdiye kadar öğrendiğimiz yordamları kullanarak en basit GLUT uygulamasını kodlayalım. Aşağıdaki kodu derleyin ve daha sonra çalıştırın.

#include <gl/glut.h>

void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("GLUT Dersleri - 1");
}

Programı hatasız olarak derleyip çalıştırdığınız taktirde çabucak açılıp kapanan bir pencere göreceksiniz ve programınız sonlanacak.Pencereniz içinde bir şeyler çizdirebilmek ve bu pencereyi ekranda kullanıcı tarafından kapanıncaya kadar tutmak için öncelikle bir render() yordamı oluşturmalı, bu yordamı GLUT sistemine bildirmeli ve daha sonra GLUT mesaj döngüsü olarak adlandırdığımız ve GLUT sisteminin kullanıcı girdileri ile programımızı yönlendirdiği sonsuz döngüye girmesini sağlamalıyız. İlk olarak renderScene isimli bir yordam oluşturalım. Bu yordam içerisinde arka fon siliniyor ve OpenGL kullanılarak ekrana bir üçgern çiziliyor. glutSwapBuffers() yordamı ile çizim işleminin pencereye uygulanması sağlanılıyor.

...
void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glutSwapBuffers();
}
...


Yukarıdaki yordamın ismi sizin belirleyeceğiniz herhangi bir isim olabilir. Fakat bu yordamın pencerenize birşeyler çizilme zamanı geldiği sırada GLUT sistemi tarafından otomatik olarak çağırılmasını sağlamak için glutDisplayFunc isimli yordamı kullanarak fonksiyonunuzun ismini GLUT sistemine kaydettirmelisiniz.

void glutDisplayFunc(void (*func)(void));

Parametreler:

func :: render yordamı olarak gerek duyulduğunda GLUT sistemi tarafından otomatik olarak çağıralacak yordamın adı. Bu yordam hiç parametre almamalı ve geriye hiç bir değer döndürmemelidir.

Son olarak yapmamız gereken GLUT sistemini daha önce bahsettiğimiz sonsuz mesaj işleme döngüsüne sokmak. Bu işlemi glutMainLoop() yordamını çağırarak gerçekleştiriyoruz.

void glutMainLoop(void)

Şu ana kadar anlattıklarımız eşliğinde ekrana beyaz basit bir üçgen çizdiren GLUT uygulamasının kodunu aşağıda veriyoruz.

#include
#include

void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glutSwapBuffers();
}

void main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("GLUT Dersleri - 1");
glutDisplayFunc(renderScene);
glutMainLoop();
}

Deniz Aydınoğlu tarafından www.lighthouse3d.com sitesindeki belgeden Türkçeye çevrilmiştir :: 2002 ::
  

[ Geri Dön: OpenGL | Bölümler İndeksi ]




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.032 Saniye