OpenGL Tesselation'da Vertex Başına Hesaplama


9

Donanım tesselation kullanarak pozisyon tabanlı bir bez simülasyonu uygulamaya çalışıyorum. Bu, grafik kartına bir kontrol dörtlüsü yüklemek ve ardından bezdeki düğümleri oluşturmak için tesselation ve geometri gölgelendirmesini kullanmak istediğim anlamına geliyor.

Bu fikir makaleyi takip ediyor:

Huynh, David, "Donanım mozaiklemesi kullanarak kumaş simülasyonu" (2011). Tez. Rochester Teknoloji Enstitüsü http://scholarworks.rit.edu/theses/265/

Benzetilmiş noktaları oluşturmak için tesselasyonu nasıl kullanacağımı biliyorum. Bilmediğim, hesaplanan bilgilerin bir çerçeve tamponuna nasıl kaydedileceği.

Geometri ve ayrıca tesselasyon değerlendirme gölgelendiricileri köşe başına hesaplamalar için gerekli bilgilere sahiptir. Ancak doğrudan çerçeve arabelleğine yazabilirler mi?

Tanıdığım parça gölgelendirici çerçeve arabelleğine yazabilir, ancak bilgilerim enterpolasyonlu olacak ve artık hangi konumda ne yazacağımı bilemeyeceğim.


geribildirim tamponları dönüştürmek
cırcır ucube

Kulağa çok hoş geliyor. Kumaş simülasyonunun kısıtlamaları, bir parçacığın tüm komşularına erişebilmeyi gerekli kılar (yay kuvvetlerini hesaplamak için). Bu böyle tamponlarla yapılabilir mi? Bir geometri gölgelendiricide belki? her köşeyi birden çok kez yazdırmak için geri bildirim arabelleğini saptırmak için GL_POINTS kullanmak istiyorum. İlk bakıştan sonra bu yayları hesaplamayı zorlaştırıyor gibi görünüyor.
Dragonseel

Yanıtlar:


3

"Cırcır ucube" yorumuna dayanarak Transform Feedback Bufferları araştırdım ve sorunumu bu şekilde çözdüm.

Şimdi CPU üzerinde simüle edilmiş noktalar üretiyorum ve bir VertexBufferObject içine koyuyorum. Noktalar için ikinci bir VBO (hız için başkalarıyla birlikte) üretiyorum. Bezin bağlanabilirliği ivec4'te tepe noktası özelliği olarak verilir.

İki VBO'yu kullanarak dönüştürme geri besleme arabellekleri ve bir Çift arabellek kullanarak, her zaman son adımdan (bağlantı bilgilerini kullanarak) okuyabilir ve başka bir ara belleğe yazabilirim. Bu, eşzamanlılık ile ilgili sorunları çözmek içindir.

Hesaplamalar köşe gölgeleyicisinde GL_POINTS olarak yapılır. İlk gölgelendiricinin çıktısını başka bir normal gölgelendiriciye bağlamak için ek dizin tamponu kullanarak üçgenler oluşturmak için bezi sorunsuz bir şekilde istediğim gibi yapabilirim.

Bu fikir "OpenGL Superbible" kitabında yapılan dönüştürme geri bildirim arabelleği örneğini izliyor http://www.openglsuperbible.com/

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.