OpenGL bağlaması ve varlıklar arasındaki ilişkiler


12

Bu çoğunlukla bir dokümantasyon sorusudur. Umarım burası sormak için uygun bir yerdir, örneğin programcılar veya yığın akışı.

OpenGL spesifikasyonunu okumadım, ancak kitaplardan (Kırmızı Kitap) ve çeşitli öğreticilerden, API'nin farklı nesnelerinin ve bölümlerinin nasıl etkileşime girdiğini ve ilişkisini doğru bir şekilde kavrayamıyorum.

Örneğin, bir VAO bağlıysa, bir VBO'nun bağlanması ve bir özniteliğin ayarlanmasının VBO'nun VAO'ya bağlı olmasına neden olacağını biliyorum.

Ancak birçok nesne var, ilişkileri değişebilir. Örneğin, VAO mevcut gölgeleme programı ile tamamen ilgisizdir, ancak çizim işlemlerinin sonucu her ikisine de bağlı olabilir.

Tüm çeşitli OpenGL bileşenleri arasında, A-B'ye-B veya A-ve-B-C-tarafından-kullanılan-bazı-ilişkiler görebiliyorum. Tüm bu ilişkiler, kişinin bağlamın durumunu nasıl değiştirebileceğini, şeyleri nasıl değiştirebileceğini, işleri birlikte nasıl kaydedebileceğini ve optimize edebileceğini belirlemeye katılıyor.

Sadece bu ilişkileri açıklayan kaynaklar arıyorum . Çağrılara odaklanmayan, ancak çeşitli OpenGL bileşenlerinin birbirleriyle nasıl etkileşime girdiklerini ve birbirleriyle nasıl ilişkili olduklarını anlatan bir UML diyagramı, bir grafik veya hatta bir metin belgesi gibi.

Böyle bir kaynağı nerede bulacağınızı biliyor musunuz?


3
Harika bir soru. Tüm OpenGL kütüphanemi / motorumu bu kilit soruya süper net bir cevap vermeden çalıştırdım.
david van brink

1
Bir VBO'nun bağlanması onu bir VAO'ya bağlamaz. Bunun yerine ile elde edilir glVertexAttribPointer(). OpenGL nesneleri için diyagram oldukça sığ ve basit olacaktır, aslında OpenGL'de bir avuç farklı nesneden daha fazlası yoktur. VAO'lar öznitelikler için tamponlar kullanır. Tampon dokuları tamponlarla desteklenir. Çerçeve tamponlarının doku ekleri vardır. Çizim komutları geçerli VAO'yu, geçerli programı, geçerli çerçeve arabelleğini, geçerli örnekleyici ayarlarını ve geçerli dizin arabelleğini / dolaylı arabelleği kullanır. Diyagramı muhtemelen kendiniz çizebilirsiniz.
Dietrich Epp

1
Üzgünüm, senin için bir resim çizmeyeceğim.
Dietrich Epp

2
İyi soru, ve nerede durduğumdan, iyi bir şans, üzerine önemli bir ödül vermeden kapsamlı bir cevap almak.
Mühendis

2
;)
OpenGL'nin

Yanıtlar:


7

Kendi diyagramımı çizmeye çalıştım. Kapsamlı değil, çoğunlukla şu anda bazı şeylerde ilginç olmadığım için, aynı zamanda okunabilir olmasını istediğim için (resmi olarak belirlenmiş bir grafik olmasa bile, kolayca okunabilir olması gerektiğini düşünüyorum).

Ayrıca, bazı insanlar için ilgi çekici göründüğü için, geri bildirim almak ve kontrol ettirmek için burada paylaşmak istiyorum. Doğruluğunu kontrol etmek için OpenGL wiki'sini referans olarak kullandım, ancak hatalar getirmiş olabilirim.

Ayrıca, sağlanan bilgiler sizin için yeterli değilse veya şemaya dahil edilmeye değer önemli ilişkileri dışladıysam, bunu önermekten çekinmeyin ve güncel tutmaya çalışacağım.

OpenGL bağlanma-ilişki diyagramı

Yine, hataları, sorunları veya önerileri bildirmekten çekinmeyin, memnuniyetle karşılıyorlar.

DÜZENLE

  1. Çizim ve nitelikler arasındaki ilişki eksik: nitelikler oluşturma sırasında etkili olabilmek için etkinleştirilmelidir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.