13 Nisan 2014 Pazar

Opengl de çizim ve Pencere temizleme

Opengl de çizim :

Karmaşık ve ilgiç resimleri Opengl kullanılarak oluşturmak mümkündür,tamamı ilkel grafik ögelerden oluşan küçük sayı sistemi olmaktadır.Bu insana şaşırtıcı gelsede yapılan işlemin yüzeysel olarak ressamlıktan pek bir farkı olmamaktadır.




Hüseyin Zekai Paşa (1860- 1919)

ressamlar cizim işlemini kalemler ve boya fırçaları ile yapıyordu,Soyut olarak cizim işlemlemleri bir kaç temel işleme dayanmaktadır.Pencere temizleme,geometrik nesne cizimi gibi ve bu işlemler noktalar düz cizgiler poligonlarla oluşmaktadır.

Pencere Temizleme

Bir bilgisaray üzerinde cizim ile bir kagıt üzerinde cizim farklıdır.Kagıt beyazdır yapmanız gereken sadece resmi cizmek, bilgisaray ise cizimleri hafızaya alarak işlemektedir. Bu nedenle pencerenin arka plan rengi temizlenmesi gerekmetedir. Bir cizim işlemi örnegin uzay gemisi ve diger etkenler, cizim işlemi ilk olarak arka plan rengi siyah olarak ayarlanır ardından yıldızlar, gezegenler diger cisimler ve uzay gemisi olarak devam etmektedir.Bu noktada pencereyi özel bir komutla temizlemekteyiz

pencere temizlenmesi makinalarda grafik donanımına baglı olarak arabellekler de
depolanmaktadır, renkler için ek olarak birden fazla arabellek te depolanır.Pixseller işlendikten sonra
arabelleklerden temizlenir.

Bu depolamanın iki yöntemi vardır,mavi,yeşil,kırmızı,alpha(RGBA) bir pixselin dogrudan kaydedilebilir
degerleri (bitplanse) veya tek bir renk index alınarak referanslar bir arama tablosunda saklanır.
RGBA renkli ekran modunda daha yaygın ve en cok kullanılan renk kipidir.

örnegin : aşşagıdaki kodlar siyah bir RGBA mod pencere acar.

glClearColor(0.0, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);

İlk satır siyah ve bir sonraki komutu temizleme renk setleri ile temizlenir.
Geçerli temizleme parenetresi renk için bütün pencereyi. Tek parametresi
glClear () ile tamponları temizler. Bu durumda, program da
tek renk tamponolarak tutulur, burada görüntüyü ekranda temizler.
Tipik olarak, bir kez, erken başvurunuzda ve temizleme rengi ayarladıktan
Sonra sık olarak gerektiği şekilde arabellekleri temizleyin. OpenGL de ki gecerli reklere atanan
değişkenler yerine size gerekli renk degişkenlerini atayarak bir tamponu temizleyin.

Tabi temizleme işlemi bu kadar basit olmamaktadı örnegin aşşadaki kod ile hem renk hemde derinlik tamponlarını temiz
leye bilirsiniz


glClearColor(0.0, 0.0, 0.0, 0.0);
glClearDepth(1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

Burada glClearColor için belirtigimiz renk degerleri gibi glClearDepth içinde derinlik rengini belirlememiz
gerekmektekir.Şu anda pixsellerin renk ve derinlik tanponlarını ayarlamak için hazır durumdadır.

glClear alabilecegi paremetreler

Renk Tanponu GL_COLOR_BUFFER_BIT

Derinlik Tanponu GL_DEPTH_BUFFER_BIT

Birikim Tanponu GL_ACCUM_BUFFER_BIT

Kalıp Tanponu GL_STENCIL_BUFFER_BIT
birden fazla arabellegi temizlemek istersek ,renk (GL_COLOR_BUFFER_BIT ) ve derinlik (GL_DEPTH_BUFFER_BIT ) degerlerini verdigimiz glClearColor ve glClearDepth gibi birikim ( GL_DEPTH_BUFFER_BIT )ve kalıp (GL_STENCIL_BUFFER_BIT) tanponları içinde glClearIndex(), glClearAccum ve glClearStencil (), degerlerini belirlememiz gerekmektedir

Örnek Kullanım :


void pencere(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT );
glFlush();
}

Hiç yorum yok:

Yorum Gönder