gl/glu/glut/gltools等的区别

发现学OpenGL总是容易忘,其实好多都只是似懂非懂的。从今天起打算重新再学。为了方便查阅,买了
《OpenGL编程指南》和《OpenGL超级宝典》两书。有兴趣的大家可以一起来学啊。我新建个QQ群:296853962
大家有打算学OpenGL的或有兴趣帮助我们刚学OpenGL的孩子们,可以加入该群哈。
    好啦,该说说gl.h/glu.h/glut.h/gltools.h的区别啦。
    之前写代码都是这样几行:
    #include<windows.h>
    #include<gl/gl.h>
     #include<gl/glut.h>
    这样写不影响编译问题。为啥没问题?还是自己亲自试下比较好。
    在安装的VC目录VC/include/GL里找到glut.h文件,打开可以看到这两句:
#include<GL/gl.h>
#include<GL/glu.h>
再往下看,就可看到好多像glutInitWindowPosition()这样以glut为首的函数声明。 
    同理,打开gl.h可看到好多以gl为首的函数声明:例如glClear();打开glu.h就可看到好多以glu为首的函数声明。亲眼打开文件看了,我想记忆就要深刻得多了。
    GLU(OpenGL Utility library),叫做OpenGL工具函数库。
    GLUT(OpenGL Utility Toolkit),叫做OpenGL实用工具库。二者叫法易混淆,稍微注意一下即可。
    现在贴上超级宝典里的一段简单代码,再针对代码分析:
#include "stdafx.h"
#include<windows.h>
#include<gl/glut.h>
//#include"gl/superbible/gltools.h"

void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}

void SetupRC(void)
{
glClearColor(0.0,0.0,1.0,1.0);
}
int main(int argc,char *argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(400,400);
glutCreateWindow("first program");
glutDisplayFunc(RenderScene);
SetupRC();
glutMainLoop();
return 0;
}
    首先要#include<windows.h>,因为gl.h和glu.h里用到了在windows.h里定义的宏定义。
    然后#include<gl/glut.h>,你尝试不要这句,运行一下,错误就会告诉你原因的。
    至于gltools.h,超级宝典第4版P30里说它包含了gl.h和glut.h,其实这里错了,应该是gl.h和glu.h,打开文件看看你就会相信我说的。而且书上程序清单只有#include"gl/superbible/gltools.h",这明显是有问题的,打开gltools.h,里面并没有glutInit()等以glut为首的函数声明。
    好啦,相信你此时对这几个头文件的包含不会再含糊了吧。
  
另:建群期间,许多朋友还是不大明白gltools.h是什么东东。这里再简单说一下。
    《Open个GL超级宝典》里有好多函数是大师为了开发需求自己编写的。gltools.h就是将gl.h、glu.h以及大师自己写的函数包装起来。对于初学者,完全不需要用gltools.h。需要的话,群共享里即可下载。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值