读书人

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

发布时间: 2012-04-02 19:58:59 作者: rapoo

OpenGL使用雾坐标,找不到标识符???
我在编写红宝书《OpenGL编程指南(第六版)》上面的第六章使用雾坐标的程序时,出现错误,未声明的标识符和找不到标识符。是在搞不清楚是为什么了。求大侠指教!
另外,说一下我的机器是刚刚新买的,这是不是和版本有关系啊?那应该怎么改正呢?
源代码:

C/C++ code
#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”: 未声明的标识符

感激不尽!

[解决办法]
是个问题,我感觉好像是缺了头文件,到网上下个完整的加到vs默认路径中吧,我现在也遇到这个问题正在寻找答案;
[解决办法]
glew初始化

读书人网 >图形图像

热点推荐