Anasayfa Eğitseller Oyun Yapımı OpenGL ile İlk Kare ve Üçgenimizi Çizelim

OpenGL ile İlk Kare ve Üçgenimizi Çizelim PDF Yazdır e-Posta
Kullanıcı Değerlendirmesi: / 2
ZayıfEn iyi 
Eğitseller - Oyun Yapımı
Salı, 15 Ocak 2008 00:40

 

OpenGL ile İlk Kare ve Üçgenimizi Çizelim (Çeviri) 

 

Nasıl OpenGL pencere yapacağımızı öğrendik. Şimdi sırada ekran bişiler çizelim. Bu derste üçgen ve kare çizeceğiz.

Birşeyler çizmek için vertexler ile çalışacağız. Bu vertexler bize geometrik şeklimizin  görünüşünün nasıl olacağını belirler. OpenGL 'de bir vertex çizmemiz için glVertex3f veya glVertex2f komutlarından birisini kullanırız. 3D 'de OpenGL 'ye odaklandığımız için glVertex3d 'i kullanacağız.glVertex3f komutunda "f" bize OpenGL 'de float bir değer kullandığımızı anlatır yani glVertex3i olan tamsayıyı değil.

Çizme işlemine başlamadan önce ilk olarak X ekseninde sola ve sağa hareketi, Y ekseninde yukarı ve aşağı, Z ekseninde de ekranın içine ve dışına hareketi yapacağımızı anlatmak için glLoadldentity() 'i çağıracağız. OpenGL ekranının ortasındaki X ve Y eksenleri 0.0f 'dir. Sol ortaya doğru negatif bir sayı olmalıdır. Sağ taraf pozitif bir sayı olmalı. Ekranın tepesine hareket ettirdiğimizde bir pozitif sayı, ekranın ortasına doğru da negatif bir sayı olmalı. Ekranın derinlerine doğru bir negatif sayı, bize doğru ise pozitif bir sayı olmalı.

Şimdi ne tür polygon ile çizim yapmak istiyoruz onu seçeceğiz. Üçgenimizi ve karemizi çizmek için glBegin(GL_TRIANGLES); ve glBegin(GL_QUADS); kullanıyoruz. Geometrik şeklimizi çizmeye başlarken herzaman glBegin fonksiyonu ile çağırma işlemini yapar, glEnd ile de bitiririz. glEnd; OpenGL 'ye bizim çizme işlemini bitirdiğimizi söyler. glBegin 'in GL_TRIANGLES gibi bir argümente ihtiyacı vardır. GL_TRIANGLES üç adet doğru ile bir üçgen oluşturacağımız anlamına gelir. GL_QUADS da dört doğru ile bir kare çizeceğimiz anlamına gelmekte. (Ayrıca GL_POINTS, GL_LINES vs.. de çizebilirsiniz ).

Geometrik şeklimizi hareket ettirmek için glTranslet(x,y,x) 'yi kullanıyoruz. glTranslatef ; X, Y, Z ekseni doğrultusunda hareket ettirmeye yarar. Bunu üçgenimizi ve karemizi oluşturmadan önce kullanacağız. Eğer glTranslatef(-1.5f, 0.0f, -6.0f) olarak kullanırsak bu demmeki eksi x yonune dogru 1.5 unite (sol) ve eksi  z yonune dogru  6.0 unite (ekrana dogru).


 int DrawGLScene(GLvoid)        // Bütün Çizimin Yapıldığı Bölüm
{
    // ekranı temizle
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    // Reset The Current Modelview Matrix
    glLoadIdentity();

//////////////////////////////////////////////////////////////////////////////////////////////////////////

    glTranslatef(-1.5f,0.0f,-6.0f);    // 1.5 sola hareket ettir ve 6.0 da ekranın içine.
    glBegin(GL_TRIANGLES);        // Üçgen Kullanılarak Çizim
    glVertex3f( 0.0f, 1.0f, 0.0f);        // Üst
    glVertex3f(-1.0f,-1.0f, 0.0f);        // Orta Sol
    glVertex3f( 1.0f,-1.0f, 0.0f);        // Orta Sağ
    glEnd();                    // Çizim Bitti

    glTranslatef(3.0f,0.0f,0.0f);            // Hareket ettir
    glBegin(GL_QUADS);                // Kare Çiz
    glVertex3f(-1.0f, 1.0f, 0.0f);        // Sol Üst
    glVertex3f( 1.0f, 1.0f, 0.0f);        // Sağ Üst
    glVertex3f( 1.0f,-1.0f, 0.0f);        // Sağ Orta
    glVertex3f(-1.0f,-1.0f, 0.0f);        // Sol Orta
    glEnd();

//////////////////////////////////////////////////////////////////////////////////////////////////////////

    return TRUE;            // Devam Et
}

Eğer bir süre fonksiyona çalışırsanız,kendiniz nasıl daha detaylı yapabilirsiniz anlarsınız.Bu kodu OpenGL window dersinin render fonksiyonuna eklemeyi deneyin ve çalıştıp çalışmadığını görün. Deneme yanılma yöntemi en iyi öğrenme yoludur.

 

KAYNAK

 

Çeviren: Orhun 'Promethium' YURTTAŞ - Görsel Tasarım - Çeviri Editörü

 

 

Son Güncelleme ( Salı, 15 Ocak 2008 00:52 )
  Yorum yok.
Yorum ekle. (0 yorum)

 

OyunGelistirici.net - Türk Oyun Yapımcılarının Buluşma Noktası

Bu sitede yazılan tüm yazıların hakları yazarlarına aittir. İzin alınmadan yayınlanamaz.

Bu sitede Firefox kullanmanız önerilir. En az 1024 x 768 masaüstü çözünürlüğü tavsiye edilir.