zoukankan      html  css  js  c++  java
  • 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了。这个问题其实很简单,不过对菜鸟来说,有的时候还真是找不到办法。这个也算是经验的积累吧。

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

  • 相关阅读:
    javascript的字段值,私有变量,静态方法声明
    取得序列中某个点的范围边界
    使用wubi安装ubuntu11.04后无线网卡被禁用无法打开解决办法
    WEB前端性能优化
    jQuery的arrayLike
    在手机上安装BT5系统,没错就是破解无线密码的那个
    PHP在子类方法B调用父类的方法A时,不传参数时仍能得到方法B的名称
    讨厌的文本选区
    PHP遍历解析XML为一个数组
    “软工厂代码生成工具”的学习笔记
  • 原文地址:https://www.cnblogs.com/unsigned/p/1690103.html
Copyright © 2011-2022 走看看