c++ - 为什么 OpenGL 雾只是不出现?

标签 c++ visual-c++ opengl graphics fog

这就是我在 OpenGL 中启用雾的方式:

float fog_colour[4] = {1,1,1,1};
glEnable(GL_FOG);
glFogf(GL_FOG_MODE,GL_EXP2);
glFogfv(GL_FOG_COLOR,fog_colour);
glFogf(GL_FOG_DENSITY,0.5);
glHint(GL_FOG_HINT,GL_NICEST);
glFogf(GL_FOG_START,0.1);
glFogf(GL_FOG_END,100);

每个物体都在0.1-100范围内,但是雾就是不出现,这是怎么回事?

最佳答案

问题是 GL_EXP2 模式。

如果在 GL_EXP2 模式下检查雾混合因子的公式:

f = e ^ ((-density * z) ^2)(限制在 [0..1])

雾化曲线专门使用密度参数进行调整。如果您的范围是 0.1-100,我建议密度约为 0.001。

无论如何,测试雾最好先从 GL_LINEAR 模式开始。它只是更容易可视化。

关于c++ - 为什么 OpenGL 雾只是不出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242225/

相关文章:

python - 如何将光照应用于 pyopengl 上的 .obj 文件

c# - c++:使用类型作为 map /字典的键?

c++ - 如何优化 SDL 2 中许多纹理的渲染?

c++ - FFT Cooley Tukey 算法 - 不适用于多个数字

c - 使用 Microsoft Visual Studio '08 编译 libpng 时如何避免 "error LNK2005:"(已定义的 stdlib 函数)?

c++ - 使用 cmake 添加 _CRT_SECURE_NO_WARNINGS 定义

c++ - 模型在窗口调整 OpenGL 3.2 大小时拉伸(stretch)

c++ - 为什么 QT 中的布局管理器不起作用?

c++ - 如何通过用户输入在堆上分配内存?

c++ - 是否可以在着色器类中使用 "Key"设计模式?