C++ OpenGL 与 Visual Studio Release-Config-Bug

Posted

技术标签:

【中文标题】C++ OpenGL 与 Visual Studio Release-Config-Bug【英文标题】:C++ OpenGL with Visual Studio Release-Config-Bug 【发布时间】:2016-08-21 21:11:11 【问题描述】:

我正在使用 Visual Studio 2015 社区版,并且在发布配置中编译时遇到了一个奇怪的错误(该错误未显示在调试配置中)。 实际上,我使用 opengl 来简单地创建一个阴影贴图,然后用它渲染场景。正如我所说,在调试配置上编译会渲染阴影。 但是在发布配置上,它只是渲染没有阴影的场景。

我在互联网上搜索了一下,发现了一些关于错误配置的信息。 但我没有使用这些配置的经验。 (我不想摧毁一切;)) 有人可以帮我解决这个问题吗?

【问题讨论】:

明确 UB / 单元化变量。请发布您的代码 这是一个快速的...我的 LightPlane-Class 的构造函数有一个没有名称的参数...所以它使用了“类实例的远变量.. . 谢谢!没有你的建议,我没有看参数 ;) 我认为,如果您对自己的问题发表了明确的答案,SO 读者会很高兴(鼓励这样做)。我今天没能正确回答类似的“debug OK / release KO”问题! 【参考方案1】:

我的 LightPlane-Class 的构造函数有一个没有名称的参数......所以它使用了未初始化的类实例的“远”变量

LightPlane::LightPlane(glm::vec3& position, glm::vec3& lookAt, glm::vec3& up, GLfloat near,
                        GLfloat far, GLfloat fov, GLfloat aspect) 
                        //the "far"-parameter wasn't named
    this->far = far;
    this->near = near;
    this->position = position;
    this->fov = fov;
    view = glm::lookAt(position, lookAt, up);
    projection = glm::perspective(fov, aspect, near, far);

【讨论】:

以上是关于C++ OpenGL 与 Visual Studio Release-Config-Bug的主要内容,如果未能解决你的问题,请参考以下文章

如何在visual c++中使用OpenGL

使用 C++ 和 Visual Studio 2008 设置 OpenGL

在 Visual C++ 中的 Windows 窗体应用程序上使用 OpenGL

Visual Studio 2012 C++ OpenGL GLFW 链接器错误 [重复]

如何在 Windows 7 中使用 OpenGL、Glut 和 Visual Studio 2008 准备 C++ 项目

无法在 Visual Studio C++ 2013 中 #include freeglut 的 OpenGL