Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenGL中的体积雾问题_C++_Opengl_Graphics - Fatal编程技术网

C++ OpenGL中的体积雾问题

C++ OpenGL中的体积雾问题,c++,opengl,graphics,C++,Opengl,Graphics,你好。 我正在尝试使用glFogCoordfEXT在OpenGL中生成体积雾。 为什么雾会影响场景中的所有对象,即使它们不在雾的体积中?这些物体会像雾一样均匀地变成灰色。这是一张照片 代码: 可能场景中没有灯光? 如果禁用所有光源,则所有对象都将以平坦的环境色显示。 检查以查看如果完全禁用fog会发生什么情况。这种情况还会发生吗?您似乎不清楚GL_fog_coord_EXT是如何工作的 您是说对象“在雾体积之外”,但OpenGL没有任何雾体积的概念。在任何一点上,要么雾完全关闭,要么雾处于打开

你好。 我正在尝试使用glFogCoordfEXT在OpenGL中生成体积雾。 为什么雾会影响场景中的所有对象,即使它们不在雾的体积中?这些物体会像雾一样均匀地变成灰色。这是一张照片

代码:


可能场景中没有灯光?
如果禁用所有光源,则所有对象都将以平坦的环境色显示。

检查以查看如果完全禁用fog会发生什么情况。这种情况还会发生吗?

您似乎不清楚GL_fog_coord_EXT是如何工作的

您是说对象“在雾体积之外”,但OpenGL没有任何雾体积的概念。在任何一点上,要么雾完全关闭,要么雾处于打开状态,在这种情况下,将使用雾系数应用雾方程,该系数取决于雾模式(在您的情况下为线性)和雾坐标

关于雾坐标。使用时

    glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT);
您告诉OpenGL,每次提供顶点时,您还将通过
glFogCoordfEXT

那么,这对你来说意味着什么?假设您在茶壶绘图代码中没有调用glFogCoordfEXT,那么最后一次调用glFogCoordfEXT的值将显示为
glFogCoordf(one)
。因此,在这种情况下绘制的所有内容都将完全处于雾中,这就是您所观察到的


现在,我不确定你到底想实现什么,所以我不知道如何帮助你解决这个问题。但是,如果目标是使用四边形来模拟雾,只需在绘制场景时关闭雾,并仅在绘制立方体时打开它(我非常确定它看起来不会像漂亮的雾)。

不,照明在那里,如果我在“场景渲染”功能中注释雾绘制和初始化,一切都很好谢谢你,Bahbar!!这句话的意思是:“最后一次调用glFogCoordfEXT的值,看起来像glFogCoordf(one)。”帮助!我刚更改了绘图顺序,一切都正常了:))
    glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT);