SORU
6 AĞUSTOS 2012, PAZARTESİ


Köşe Dizi Nesneleri nelerdir?

Sadece bu öğretici OpenGL bugün öğrenmeye başlıyorum: http://openglbook.com/the-book/
Bölüm için bir üçgen çizerdim 2, var, ve her şey VAOs (bu kısaltma iyi mi?) dışında her şeyi anlıyorum. Öğretici bu kodu vardır:

glGenVertexArrays(1, &VaoId);
glBindVertexArray(VaoId);

Kodu gerekli olduğunu anlasam da, ne yapar hiçbir fikrim yok. Ben asla bu noktadan Vaoİd (onu yok etmek dışında) kullanıyor olsa da, kodu olmadan çalışmaz. Bağlı olmak gereklidir, çünkü bu olduğunu sanıyorum, ama neden bilmiyorum. Tam olarak bu kod sadece her OpenGL programının bir parçası olması gerekiyor mu? Öğretici VAOs olarak açıklıyor

Köşe Dizi bir Nesne (veya VAO) tepe Tepe Tampon bir Nesne (veya) DURUMLARINI saklanır özniteliklerini açıklayan bir nesnedir. Bu VAO gerçek nesne köşe veriler, ama köşe verilerin tanımlayıcı depolamak anlamına gelir. Köşe nitelikleri glVertexAttribPointer işlevi ve iki kardeş işlevleri tarafından glVertexAttribİPointer ve glVertexAttribLPointer, aşağıda arayacağımız ilk tarif edilebilir.

Bu VAO tepe özniteliklerini açıklar nasıl anlamıyorum. Herhangi bir şekilde nitelendirdi. Bu glVertexAttribPointer bilgi almak mı? Bu yüzden olmalı sanırım. Bu VAO sadece glVertexAttribPointer gelen bilgiler için bir hedef mi?

Bir yan not olarak, kabul edilebilir takip ediyorum öğretici? Dikkat gereken bir şey ya da takip etmek daha iyi bir eğitim var mı?

CEVAP
6 AĞUSTOS 2012, PAZARTESİ


""OpenGL BİRİNCİ alt Komitesi tarafından hazırlanmıştır Saçma İsimler için. tepe Dizi Nesne

Geometri bir nesne gibi düşün. (BİLGİSAYARINIZDA Sanatçı programcı eski bir saat gibi, onları geosets diyorum.) Nesnenin örnek değişkenleri/üyeleri köşe işaretçiyi, normal işaretçi, renk işaretçisi, işaretçi N öznitelik ...

Bir VAO ilk bağlandığında, (GL_VERTEX_ARRAY) glEnableClientState arayarak bu üyeler atamak; glVertexPointer...; glEnableClientState () GL_NORMAL_ARRAY; glNormalPointer...; ve benzeri. Etkin olan ve tedarik işaretçileri VAO saklanır.

Sen VAO tekrar bağladığınızda bundan sonra, bu nitelikleri ve işaretçileri de geçerli olur. Bir glBindVertexArray çağrı kodu daha önce tüm öznitelikleri ayarlamak için gerekli tüm eşdeğerdir. Geometri kendi yapılar ya da nesneleri oluşturmak zorunda kalmadan işlevleri veya yöntemleri arasında geçiş için kullanışlı.

(Bir kez kurulum, çoklu kullanım VAOs kullanmak için en kolay yoldur, ama aynı zamanda sadece bağlama ve daha fazla/işaretçi aramalar etkinleştir yaparak özniteliklerini değiştirebilirsiniz. VAOs sabit değildir.)

Patrick sorulara yanıt olarak daha fazla bilgi:

Yeni oluşturulan bir VAO için varsayılan değer boş (AFAIK). Eğer çizmek için çalışırsanız hiçbir geometri hiç değil, hatta tepe, yani OpenGL bir hata alırsınız. Bu oldukça mantıklı, "/BOŞ/sıfır Yanlış her şeyi başlatmak".

Sadece bazı şeyleri ayarladığınızda glEnableClientState gerekiyor. Bu VAO her işaretçi için Etkinleştir/devre dışı durumunu hatırlar.

Evet VAO glEnableVertexAttribArray mağaza ve glVertexAttrib. Köşe, normal, eski renk, ... diziler öznitelik dizileri aynı, = = #0 ve tepe noktası vardır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Vivona

    Ben Vivona

    24 Ocak 2010
  • TheDamnWreckless

    TheDamnWreck

    12 Temmuz 2010
  • WePlayWeWatch

    WePlayWeWatc

    3 Temmuz 2013