2013-02-06 11 views
7

Ben gölgelendiriciyeKodda glsl tekdüzen konumunu önbelleğe almaya değer mi?

myProgram.uniform3fv("uniformVector", 0.0f, 0.1f, 1.0f); 

onların gerçek adları yoluyla üniforma ayarı yapabilme özelliğine sahip istiyorum ben bir harita çeşit önbellek yerlere var?

std::map<std::string, unsigned int> // or unordered_map 

ya da belki OpenGL (masaüstünde) zaten bu önbelleğe, bu yüzden herhangi bir performans farkı olmazdı?

cevap

6

OpenGL belirtimi, işlevsellik değil performansı tanımlar. Bu nedenle, herhangi bir OpenGL uygulamasının aktif üniformaların listesini veya 'un ne kadar hızlı bir şekilde std::map performansına göre kaydedileceğini bilmenin bir yolu yoktur.

Gerçekten size kalmış. Eğer tutarlı, bilinen performans istiyorsanız, kendiniz yapın. OpenGL uygulamasının kararsızlıklarına bir şans vermek istiyorsanız, istediğiniz zaman sorgulayın. Şahsen, hendek isimleri söyler ve yerleri ile giderdim. Böylece maksimum performans elde edersiniz.

+0

Çoğu durumda olduğu gibi, varsayımlara dayanamayız (sürücü uygulaması hakkında) ve kendi başına basit bir önbellekleme yapmak daha iyidir. – fen