2013-03-18 18 views
6

Ben glVertexAttribDivisor jenerik köşe instanced oluşturulması sırasında avans bağlıyor hızını değiştirmek için kullanılabilir biliyorum ama örneklilik OLMADAN belirli oranda özelliklerini ilerletmek için herhangi bir yolu olup olmadığını merak ediyorum.İzdüşüm yapmaksızın öznitelik bölücü mü?

Diyelim ki çizgilerin bir dizi oluşturan tepe pozisyonları bir listesini tanımlayan ve her satırı ile bir kimliği ilişkilendirmek istediğiniz diyelim: Burada

ne demek istediğimi bir örnektir. Bu nedenle, bu özelliklerden biriyle ilgili verileri barındıran iki tane biyo'yu (tüm dikey konumlar veya tüm köşe kimlikleri) oluşturursunuz. Geleneksel olarak, bu her vbo'nun X2 satırlarının (her nokta iki satır içerdiği) boyutunun (eleman olarak) olması gerektiği anlamına gelir. Bu elbette bir satırdaki her nokta için aynı ID değerini kopyaladığım anlamına gelir. Bunun yerine yapmak istiyorum ne

kimlikleri her 2 elemanları köşe pozisyon tampon gelişmeler için 1 elemanı ilerlemek olduğunu belirtmek olduğunu. Biliyorum bu benim vertex konum arabamı ilk olarak bildirildi (böylece OpenGL'ye ne sıklıkla ID arabelleğini ne kadar ilerleteceğini söyleyebilirim) ama yine de mümkün gibi görünüyor. Bununla birlikte, OpenGL spesifikasyonunda böyle bir manevraya izin veren herhangi bir işlev bulamıyorum. Ne istiyorsun

cevap

2

OpenGL'de genellikle mümkün değildir. Bu etkili bir şekilde multi-indexed rendering kısıtlanmış bir form, bu yüzden onu almak için bu tekniklerden birini kullanmak zorunda.

+0

Bu durumda, bir satırın bir segmentini çizmek, ID VBO üzerinden öznitelik bölücü 1'i kullanmak ve dizin başına artışı artırmak için dolaylı komut yapısının "baseIndex" bölümünü kullanmak için 'glMultiDrawArraysIndirect() 'kullanmak mümkün mü? VBO ID çizmek? Bu muhtemelen GPU belleğinde daha fazla veri alacaktır, ancak teoride mümkün olabilir mi? – Samik

+0

Bu özel durum için çalışır, ancak * genel * değil. –

İlgili konular