OpenGL使用雾坐标,找不到标识符???

没有昵称阿
阿里巴巴Java技术专家
博客专家认证
2011-11-30 04:31:31
我在编写红宝书《OpenGL编程指南(第六版)》上面的第六章使用雾坐标的程序时,出现错误,未声明的标识符和找不到标识符。是在搞不清楚是为什么了。求大侠指教!
另外,说一下我的机器是刚刚新买的,这是不是和版本有关系啊?那应该怎么改正呢?
源代码:
#include <GL/glut.h>
#include <iostream>
using namespace std;

static GLfloat f1,f2,f3;

static void init()
{
GLfloat fogColor[4] = {0.0,0.25,0.25,1.0};
f1 = 1.0f;
f2 = 5.0f;
f3 = 10.0f;

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_COORD_SRC,GL_FOG_COORD);

glClearColor(0.0,0.25,0.25,1.0);
}

void display()
{
glClear(GL_COLOR_BUFFER_BIT);

glColor3f(1.0f,0.75f,0.0f);
glBegin(GL_TRIANGLES);
glFogCoordf(f1);
glVertex3f(2.0f,-2.0f,0.0f);
glFogCoordf(f2);
glVertex3f(-2.0f,0.0f,-5.0f);
glFogCoordf(f3);
glVertex3f(0.0f,2.0f,-10.0f);
glEnd();

glutSwapBuffers();
}

void keyboard(unsigned char key,int x,int y)
{
switch(key)
{
case 'c':
glFogi(GL_FOG_COORD_SRC,GL_FRAGMENT_DEPTH);
glutPostRedisplay();
break;
case 'C':
glFogi(GL_FOG_COORD_SRC,GL_FOG_COORD);
glutPostRedisplay();
break;
case '1':
f1 += 0.25;
glutPostRedisplay();
break;
case '2':
f2 += 0.25;
glutPostRedisplay();
break;
case '3':
f3 += 0.25;
glutPostRedisplay();
break;
case '8':
if(f1 > 0.25)
{
f1 -= 0.25;
glutPostRedisplay();
break;
}
case '9':
if(f2 > 0.25)
{
f2 -= 0.25;
glutPostRedisplay();
}
break;
case '0':
if(f3 > 0.25)
{
f3 -= 0.25;
glutPostRedisplay();
}
break;
case 'b':
glMatrixMode(GL_MODELVIEW);
glTranslatef(0.0,0.0,-0.25);
glutPostRedisplay();
break;
case 'f':
glMatrixMode(GL_MODELVIEW);
glTranslatef(0.0,0.0,0.25);
glutPostRedisplay();
break;
case 27:
exit(0);
break;
default:
break;
}
}

int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutCreateWindow("Fog Coordinate");
init();
glutKeyboardFunc(keyboard);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}


错误信息:
1>正在编译...
1>fogcoord.cpp
1>g:\程序练习\opengl\fogcoord\fogcoord\fogcoord.cpp(20) : error C2065: “GL_FOG_COORD_SRC”: 未声明的标识符
1>g:\程序练习\opengl\fogcoord\fogcoord\fogcoord.cpp(20) : error C2065: “GL_FOG_COORD”: 未声明的标识符
1>g:\程序练习\opengl\fogcoord\fogcoord\fogcoord.cpp(31) : error C3861: “glFogCoordf”: 找不到标识符
1>g:\程序练习\opengl\fogcoord\fogcoord\fogcoord.cpp(33) : error C3861: “glFogCoordf”: 找不到标识符
1>g:\程序练习\opengl\fogcoord\fogcoord\fogcoord.cpp(35) : error C3861: “glFogCoordf”: 找不到标识符
1>g:\程序练习\opengl\fogcoord\fogcoord\fogcoord.cpp(47) : error C2065: “GL_FOG_COORD_SRC”: 未声明的标识符
1>g:\程序练习\opengl\fogcoord\fogcoord\fogcoord.cpp(47) : error C2065: “GL_FRAGMENT_DEPTH”: 未声明的标识符
1>g:\程序练习\opengl\fogcoord\fogcoord\fogcoord.cpp(51) : error C2065: “GL_FOG_COORD_SRC”: 未声明的标识符
1>g:\程序练习\opengl\fogcoord\fogcoord\fogcoord.cpp(51) : error C2065: “GL_FOG_COORD”: 未声明的标识符

感激不尽!
...全文
548 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
peng_weida 2012-02-16
  • 打赏
  • 举报
回复
啊,换驱动试试
[Quote=引用 6 楼 zhengw060024 的回复:]

看看,学习下。顺便问下,如果显卡不太支持openGL有什么好办法,貌似这两年的显卡对openGL支持的都不是太好。。。。
[/Quote]
风vs雷 2011-12-22
  • 打赏
  • 举报
回复
看看,学习下。顺便问下,如果显卡不太支持openGL有什么好办法,貌似这两年的显卡对openGL支持的都不是太好。。。。
peng_weida 2011-12-21
  • 打赏
  • 举报
回复
glew初始化
风vs雷 2011-12-19
  • 打赏
  • 举报
回复
是个问题,我感觉好像是缺了头文件,到网上下个完整的加到vs默认路径中吧,我现在也遇到这个问题正在寻找答案;
没有昵称阿 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 w305129275 的回复:]

版本有关。OpenGL2.0以上好像才有雾坐标这一说法
[/Quote]

要安装glew扩展库。我已经改好了~~~~~~~~~
w305129275 2011-12-01
  • 打赏
  • 举报
回复
版本有关。OpenGL2.0以上好像才有雾坐标这一说法

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧