我寫過一個Vector類,用於3D「引擎」。它在編譯調試模式時的工作方式與預期相同,但在發佈模式下編譯時,顏色完全錯誤。不是我指定的顏色,它變成了隨着相機改變的純色。在發佈模式下編譯時出現奇怪的結果
我拍下了照片來展示它的樣子:debug mode和release mode。請注意,我也使用這個類來轉換我的頂點,並且在調試和發佈模式下都可以正常工作。
這是我如何將顏色向量傳遞給我的着色器(僞代碼)。
Vector3 Diffuse = Vector3(0.3f, 0.5f, 1.0f);
Vector3 Ambient = Vector3(0.3f, 0.3f, 0.3f);
Shaders.SetUniformData("AmbientColor", sizeof(float) * 3, 1, &Ambient);
Shaders.SetUniformData("DiffuseColor", sizeof(float) * 3, 1, &Diffuse);
如果你需要看到更多的代碼,請告訴我們。
這裏是我的Vector類源代碼:http://pastebin.com/spy7FWFg(必須刪除http://因爲我只允許發佈2個超級鏈接)。 這一直困擾我一段時間,所以任何幫助非常感謝。
編輯:好吧我解決了它!呵呵,這是沒有錯的Vector類,它是我如何將它發送到着色器...
事情是我有2個功能,我已經把數據傳遞給着色器,第一個是我展示的在第一篇文章和其他(我真正使用的)需要一個UNIFORM結構(自定義結構)的數組,顯然這是一個在發佈模式下不工作...
對不起,浪費你的時間和謝謝爲你的幫助=)
你的Vector類對我來說看起來非常完美。由於這種情況只發生在發佈模式中,所以請在所有代碼中查看(或尋找)未初始化的變量(通常在調試模式下,變量會被初始化,但它們不處於發佈模式)。 –
如何向我們提供矢量類本身的源代碼?否則,這只是猜測,什麼是沒有正確初始化。 – datenwolf
@datenwolf源代碼在我的文章中鏈接,你可能錯過了它,因爲它是純文本而不是真正的鏈接。這裏再次是:http://pastebin.com/spy7FWFg – Traxmate