OpenGL使用雾坐标,找不到标识符???
本帖最后由 xiajun07061225 于 2011-11-30 16:51:52 编辑 我在编写红宝书《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”: 未声明的标识符
感激不尽!
[解决办法]
是个问题,我感觉好像是缺了头文件,到网上下个完整的加到vs默认路径中吧,我现在也遇到这个问题正在寻找答案;
[解决办法]
glew初始化