在dev c++的include目录中的gl目录下有三个opengl头文件,分别是gl.h,glu.h,glext.h没有你包含的glut.h所以会提示找不到头文件,改正后连接错误如图 :
可以看出来并没有定义你的main函数里的各种init函数,我在上述三个头文件里也没有找到这些函数,没有这些函数说明没有这些函数的库文件,当然就链接不到了。
dev c++是一个轻量级的IDE,缺少很多进行某项专门开发所需的api函数,要进行opengl开发建议你还是找下opengl sdk一类专门的开发工具,它们提供完整的这些api函数
如果已经添加了头文件,但是还是出现以上的错误,那你你应该检查是不是添加了所需的扩展库文件(*.a)了,上面的link error是因为虽然头文件有声明但链接不到库文件的原因。glut库解压后包含一个.h,一个.def,一个.lib和一个.dll文件。将.h拷贝到include目录下,.dll拷贝到windows的系统目录下(windows\system32),貌似你只将dll放在系统目录下而没有配置扩展库文件,对于库文件可以使用 reimp工具将.lib文件转换成.a文件。命令如下:
reimp glut32.lib
这样,就会在同一目录下生成一个glut32.def和一个libglut32.a文件,将libglut32.a拷贝到lib目录下。同时记得要删除原来的glut库(如果有的话),否则link时可能会出错。
上面所说的mingw-utils可在下面的地方下载到,解压后在bin里有reimp
mingw-utils-0.3:
http://sourceforge.net/project/downloading.php?groupname=mingw&ampfilename=mingw-utils-0.3.tar.gz&use_mirror=jaist
你的图形已经画出来了,但是reshape()函数写的可能有问题,所以看不到,可以在画图函数里画一个简单的红色矩形试试就知道了。关于reshape()可以参考超级宝典里的写法(直接复制可能要注意下格式):
完整代码(不含include):
GLUquadricObj *quadObj1
void reshape(int w, int h)
{
GLfloat aspectRatio
if(h == 0)h = 1
glViewport(0, 0, w, h)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
aspectRatio = (GLfloat)w / (GLfloat)h
if (w <= h)
glOrtho (-100.0, 100.0, -100 / aspectRatio, 100.0 / aspectRatio, 1.0, -1.0)
else
glOrtho (-100.0 * aspectRatio, 100.0 * aspectRatio, -100.0, 100.0, 1.0, -1.0)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
}
void drawAnnulus()
{
quadObj1 = gluNewQuadric()
glClear(GL_COLOR_BUFFER_BIT)
glPushMatrix()
gluQuadricDrawStyle(quadObj1,GLU_POINT)
glTranslatef(10.0,10.0,0.0)
glColor3f(1.0,1.0,1.0)
gluPartialDisk(quadObj1,15.0,25.0,15.0,10.0,10.0,100.0)
glPopMatrix()
gluDeleteQuadric(quadObj1)
glFlush()
}
int main(int argc, char *argv[])
{
glutInit(&argc,argv)
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB )
glutInitWindowPosition(0,0)
glutInitWindowSize(500,500)
glutCreateWindow("五环")
glutReshapeFunc(reshape)
glutDisplayFunc(drawAnnulus)
glutMainLoop()
return 0
}
关于补充问题:
不知道你是否已经试过改为我提供的代码。总之我改后能看到你说的圆盘。不用截图给你看吧。你的圆盘只有一小段,因为你的角度只有10-100...把整个代码贴给你吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)