我写过一个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