unsigned

以后要是一事无成,还娶了个很龊的老婆,这些年的书都白读了啊!

导航

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

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

 

 

 

 

 

posted on 2010-03-19 19:44  unsigned  阅读(751)  评论(0编辑  收藏  举报