OpenGL - Primitifler

OpenGL |

OpenGL'de sahnede oluşacak görüntü, yüksek seviye komutlar yerine temel tiplerle ifâde edilir. Yani üçgen çizdirmek için ucgenCiz(); şeklinde bir fonksiyon yoktur. İki ve daha fazla verteksin kesişim noktaları, oluşturdukları kapalı ya da açık yüzey, yani vertekslerin nasıl birleştirileceği primitiflerle belirlenir.

OpenGL'in, verteks verisini bir boyutlu diziler hâlinde kabul eder. Örneğin; üçgen çizdirebilmek için 3 noktaya ihtiyaç vardır. Bu noktalar N1(0, 0, 0), N2(0, 1, 1), N3(0, 2, 0) olsun. Bu noktaları kodla ifade edersek:

// one dimension vertex data
float triangle[] = {
    0.0f, 0.0f, 0.0f, // x1, y1, z1
    0.0f, 1.0f, 1.0f, // x2, y2, z2
    0.0f, 2.0f, 0.0f  // x3, y3, z3
};

Kodda göründüğü üzere verteks verisini float dizisi hâlinde oluşturduk.

Opengl Primitifler
Primitifler ve verteks sıralamaları

Verteks Sıralaması

Görseldeki primitiflerde, verteks verisi oluştururken dikkat edeceğiniz sıralamayı görebilirsiniz.

GL_POINTS nokta çizdirir. Her verteks bir noktayı temsil eder.
GL_LINES çizgi çizdirir. Her verteks çifti bir çizgi oluşturur.
GL_LINE_STRIP bağlı çizgiler çizdirir. Her verteks çiftinin oluşturduğu çizgileri birbirine bağlar.
GL_LINE_LOOP bağlı çizgiler çizdirir. İlk ve son verteksi birbirine bağlar.
GL_TRIANGLES üçgen çizdirir. Her üç verteks bir üçgen oluşturur.
GL_TRIANGLES_STRIP bağlı üçgenler çizdirir. Her ilk üç verteksten sonra olan verteks ile üçgeni birbirine bağlar.
GL_TRIANGLE_FANGL_TRIANGLE_STRIP gibi bağlı üçgenler çizdirir, fakat çizdirdiği üçgenler fan şeklindedir.
GL_QUADS dörtgen çizdirir. Her dört verteks bir dörtgen oluşturur.
GL_QUAD_STRIP bağlı dörtgenler çizdirir. Her ilk dört verteksten sonra belirtilen iki verteks ile bağlı bir dörtgen oluşturur.
GL_POLYGON çokgen çizdirir. Çokgen istenildiği kadar kenara sahip olabilir.