2016-11-23 52 views
-1

所以,我几乎完成了我的小程序。问题是,游戏应该是这样的:OpenGL + VC++ - 照明在发布配置中随机搞砸

Bright game

...但它有时看起来是这样的:

Dim game

这永远不会发生在调试配置,只在发行。我使用VS 2015

设置我的灯是这样的:

GLfloat lightPos[] = { 0, 20, 0 }; 
glEnable(GL_NORMALIZE); 
glLightfv(GL_LIGHT0, GL_POSITION, lightPos); 
glEnable(GL_LIGHTING); 
glEnable(GL_LIGHT0); 

球和比赛场地设在(0,0,0)和(0,-1,0 ), 分别。有谁知道这是什么原因造成的?游戏是否保留了最后一次使用设置弄乱的东西?

现在整个项目都非常大,所以我没有包含所有的代码,但是如果您需要它,我可以提供更多的信息。

+0

未来:隔离[再生问题的最小完整部分代码](http://stackoverflow.com/help/mcve)并发布。同时停止使用弃用的传统固定功能API并转到现代OpenGL可编程管道。 – ybungalobill

回答

0

GL_POSITION得到齐次坐标,所以它应该是:这取决于你是否希望有一个点光源或定向光

GLfloat lightPos[] = { 0, 20, 0, 1 }; 

GLfloat lightPos[] = { 0, 20, 0, 0 }; 

+0

问题似乎通过将光线设置为点光源来解决,即最后一个坐标为“1”。 – mkkekkonen