linux opengl 实例,OpenGL实例(1)-创建窗体

首先,这是在Ubuntu下运行的程序.下载opengl图形库花费了不少时间.在Windows上,你更应该先下载glut,然后解压出glut.h,glut.dll,glut32.dll放在相应的文件夹内,或者你保证他们每次和你写的opengl文件放在同一个位置。

我觉得学什么都要运用,否则太困难了,今天先写一个OpenGL入门级的小程序.

我们新建一个simple.c

#include

#include

void display()

{

glClear(GL_COLOR_BUFFER_BIT);

// glClearColor//清除颜色

glBegin(GL_POLYGON);

glVertex2f(-0.5,-0.5);

glVertex2f(-0.5,0.5);

glVertex2f(0.5,0.5);

glVertex2f(0.5,-0.5);

glEnd();

glFlush();

}

int main(int argc,char **argv)

{

glutInit(&argc,argv);

glutCreateWindow("Hello,world!");

glutDisplayFunc(display);//glutDisplayFunc(void (*func)(void))

glutMainLoop();//导致程序进入一个事件

}

保存,紧接着我们在相应的目录下:

gcc -g simple.c -o simple -lglut -lGL

你会发现后面多了两个-l参数,他们正是opengl的核心.glut[OpenGL Utility Toolki]是一个适用于所有现代视窗系统的函数库,GL是OpenGl的基础

前提:你要安装opengl图形库.

然后我们这样

./simple

b3ddbb4d52b75aa05699a375e90bbba8.png

就是这样子,一开始我以为opengl和Turbo图形库没有太大的区别,稍后我会把自己的想法驳倒.

先初步讲一下这段程序的结构,它是以后大型opengl程序的基础,其中的内容也是比较多的.

1.一个main()函数,它负责初始化glut.

2.一个init()函数,它设置初始量.

3.一个显示回调函数display().

4.负责处理输入和窗口事件的其他回调函数.

这些是什么东西啊,说实在的,我现在也是不太理解,在我没找到它的乐趣之前,我只能通过这种方式推动自己的学习啊

还是具体看代码吧,我就说我知道的吧!莫见怪啊.

头文件和下面连接的库遥相呼应,呵呵,其中glut.h中包含#include和#include这样子就把opengl的所有头文件包括进来了.gl是opengl核心库,它包含了所有必要的opengl函数;glu[OpenGL Utility Library]是OpenGL工具库,其中包含了用核心库的函数编写的扩展函数.核心库的函数名以gl开头,比如glClear(),而工具库以glu开头,比如...好吧,暂时没有.那么,以glut开头的函数你能想到什么呢?

还有,函数的命名真的很有特点.

void glutInit(int *char, char **argu)

负责初始化GLUT ,应在其他glut函数和OpenGL函数调用之前调用.它从主函数获取参数.

int glutCreateWindows(char *title)

负责创建一个窗口,并赋予其窗口标题,上面的例子就是hello,world.

glutDisplayFunc(void (*func)(void))

从字面上也能理解它是在回调一个名为func的函数.

void glutMainLoop()

它应该是main()函数的最后一个函数.

而整个display()函数就是在描绘一个矩形

void glClear(GL_COLOR_BUFFER_BIT)

还有

void glFlush()

是一对必不可少的语句,我不懂什么缓存,帧缓存,请注意他们的位置.

glBegin(GL_POLYGON) and glEnd()

是定义一个图元(opengl中有三类基本的几何图元:点(GL_POINTS),线段(GL_LINES)和多边形(GL_POLYGON))的起点和终点,也是成对出现的.

glVertex2f(-0.5,-0.5)的原型是

void glVertex{234}{sifd}(x轴,y轴...)

定义了顶点,允许你使用glVertex*()函数的各个变体定义二维还是三维的甚至更高的维度,sifd是类型了分别是short,int,float,double的缩写了。

相关阅读:

0b1331709591d260c1c78e86d0c51c18.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值