喜再次歡迎管理glUniform功能,另一個「那豈不是巨大的,如果我們會結合兩件事情,我真的什麼都不懂about'-問題;)使用模板
本集: OpenGL製作和C++模板
想法:如果您可以編寫單個模板函數來設置OpenGL着色器中的制服,這不是很好嗎?
問題:使用一些glUniform *函數設置着色器中的制服。這些不同之處:
類型:有幾種類型的統一可以採取。這導致OpenGL中不同的函數名稱如下所示:glUniform1f,glUniform1i,glUniform1fv等。
這些可以使用函數重載輕鬆地「統一」。但是這會導致大量類似的功能。
第一個問題:是否可以在這個地方使用模板?據我瞭解模板,你將不得不專門爲每個新功能。最後,您將擁有與簡單重載相同數量的功能。
參數計數:在glUniform功能referes與數給定的參數的數量。有4個參數涉及簡單的值,直到有4個元素的向量。
第二個問題:是否可以使用模板實現「動態」參數計數?
矩陣:爲了使事情複雜化還有另一類其中發送矩陣均勻的功能,但因爲我沒有真正使用這些我不是他們真正的興趣。
可能沒有真正的方法來簡化統一的方法......但也許有人可以想出一個偉大的解決方案,使用強大的模板?
親切的問候, 弗洛裏安
你需要在某處映射'(Arity,Type) - > GL function',你只能使用聲明方法縮短它。儘管它是一個有限且相對較小的函數集,所以我只是爲了超載而去做。 – 2010-08-02 11:06:35
在Java中,使用反射會相對容易...但是這樣會變得混亂;) – fho 2010-08-03 07:50:27