• MFC下OpenGL关于Fog的练习——2


    直接从我的思路开始吧,那些前期的工作就省略了,练习——1里面已经说过了。

    1.加入SetupFog()用于初始化

    代码
    void COpenGLDemo20100319View::SetupFog(void)
    {
    GLfloat fogColor[
    4] = {0.0f, 0.25f, 0.25f,1.0f};
    glewInit();
    glEnable(GL_FOG);
    glFogi (GL_FOG_MODE, GL_EXP);
    glFogfv (GL_FOG_COLOR, fogColor);
    glFogf (GL_FOG_DENSITY,
    0.25);
    glHint (GL_FOG_HINT, GL_DONT_CARE);
    glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT);
    glClearColor(
    0.0, 0.25, 0.25, 1.0); /* fog color */

    }

    2.修改OnCreate()

    int COpenGLDemo20100319View::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
    if (CView::OnCreate(lpCreateStruct) ==-1)
    return-1;

    // TODO: Add your specialized creation code here
    InitializeOpenGL();
    SetupFog();
    return0;
    }

    3.修改RenderScene()

    void COpenGLDemo20100319View::RenderScene(void)
    {
    glPushMatrix();
    glTranslatef(
    0.0f,0.0f,-5.0f);
    glColor3f (
    1.0f, 0.75f, 0.0f);
    glBegin (GL_TRIANGLES);
    glFogCoordfEXT (f1);
    glVertex3f (
    2.0f, -2.0f, 0.0f);
    glFogCoordfEXT (f2);
    glVertex3f (
    -2.0f, 0.0f, -5.0f);
    glFogCoordfEXT (f3);
    glVertex3f (
    0.0f, 2.0f, -10.0f);
    glEnd();
    glPopMatrix();
    }

    本来嘛,这个比练习——1画球还简单的,实施上却浪费了不少时间。首先,这个glFogCoordEXT或者书上写的是glFogCoord,貌似没什么大的差别。不过这个两个函数是在glew.h中的,所以务必包含这个。我刚开始没包含,结果说找不到这个函数,然后加了glew32.lib这个库,加上#include <gl/glew.h>,运行,还是找不到,把我郁闷了很久。咱是菜鸟,这个咱不否认。本来以为我的glew32.lib或者glew.h太老土了,里面没有这个函数,打开找了一下,有的啊。当时是大惑不解。后来试了下“clean solution”,再F5,一切OK了。这个问题其实很简单,不过对菜鸟来说,有的时候还真是找不到办法。这个也算是经验的积累吧。

    好了,老规矩,还是贴个结果图吧。

  • 相关阅读:
    [网鼎杯 2018]Comment-Git泄露部分
    Google Hacking 详解
    macOS修改Docker容器的端口映射配置
    CentOS6 7 8更换阿里yum源
    XSS代码合集(含测试效果详细版)-HTML4与更早版本的向量2
    VMware 启动Ubuntu时黑屏
    XSS代码合集(含测试效果详细版)-HTML4与更早版本的向量1
    APP安全在线检测网站
    Juice-Shop 二星题
    慕课网-安卓工程师初养成-4-5 练习题
  • 原文地址:https://www.cnblogs.com/unsigned/p/1690103.html
Copyright © 2020-2023  润新知