Chinaunix首页 | 论坛 | 博客
  • 博客访问: 834170
  • 博文数量: 489
  • 博客积分: 475
  • 博客等级: 下士
  • 技术积分: 3087
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 16:28
文章分类

全部博文(489)

文章存档

2013年(7)

2012年(301)

2011年(181)

分类: LINUX

2012-08-09 17:34:12

简单介绍下openGL:

OpenGL(全写Open GraphicsLibrary)是个定义了一个跨编程语言、跨平台的编程接口(Application programming interface)的规格,它用于生成二维、三维图像。这个接口由近三百五十个不同的函数调用组成,用来从简单的图元绘制复杂的三维景象。

再介绍下GLUT:

GLUT(英文全写:OpenGL UtilityToolkit)是一个处理OpenGL程序的工具库,负责处理和底层操作系统的呼叫以及I/O,并包括了以下常见的功能:

  • 定义以及控制窗口
  • 侦测并处理键盘及鼠标的事件
  • 以一个函数调用绘制某些常用的立体图形,例如长方体、球、以及犹他茶壶(实心或只有骨架,如glutWireTeapot())
  • 提供了简单选单列的实现

但是,由于Kilgard's的GLUT函数库已经不再被维护,且其授权亦不允许对其函式库的再发布或是做出改版。程式设计师开始意识到必须重新制作一个开放源代码应用程式接口。于是第一个开源的OpenGL API:freeglut,以尽可能地保留原本接口的方式实现。于是有了freeglut.

下面安装freeglut:

1) sudo apt-get install build-essential --------(如果已经安装过了可免)

这一步是为编译源代码安装基本的开发工具。

2) sudo apt-get install freeglut3-dev
这一步是安装freeglut的开发包和头文件。

安装完成后可以发现路径:

include 的路径是 /usr/include/GL

libraries的path是 /usr/lib, 引用的libraries名称有三个: 包含字符串glut, GL,GLU

ls -l | grep glut
-rw-r--r--  1 root root   340342 2010-01-19 02:31 libglut.a
lrwxrwxrwx  1 root root       16 2012-08-09 16:27 libglut.so -> libglut.so.3.9.0
lrwxrwxrwx  1 root root       16 2012-08-09 16:27 libglut.so.3 -> libglut.so.3.9.0
-rw-r--r--  1 root root   216620 2010-01-19 02:31 libglut.so.3.9.0
ls -l | grep GL
lrwxrwxrwx  1 root root       13 2012-08-09 16:27 libGL.so -> mesa/libGL.so
-rw-r--r--  1 root root   716290 2010-04-29 13:43 libGLU.a
lrwxrwxrwx  1 root root       11 2012-08-09 16:27 libGLU.so -> libGLU.so.1
lrwxrwxrwx  1 root root       20 2012-08-09 16:27 libGLU.so.1 -> libGLU.so.1.3.070701
-rw-r--r--  1 root root   456380 2010-04-29 13:43 libGLU.so.1.3.070701

至此完成安装。

另外需要注意的是,在编译的时候,需要在gcc中加入命令行参数-lglut,否则会报undefined reference errors之类的错误。

举例说明:

 

点击(此处)折叠或打开

  1. #include <GL/glut.h>

  2. void lineSegment(void) {
  3.         glClear(GL_COLOR_BUFFER_BIT);

  4.         glColor3f(1.0, 0.0, 0.0);
  5.         glBegin(GL_LINES);
  6.                 glVertex2i(180, 15);
  7.                 glVertex2i(10, 145);
  8.         glEnd();

  9.         glFlush();
  10. }

  11. int main(int argc, char **argv) {
  12.         glutInit(&argc, argv);
  13.         glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  14.         glutInitWindowPosition(50, 100);
  15.         glutInitWindowSize(400, 300);
  16.         glutCreateWindow("Hello OpenGL");
  17.         glClearColor(1.0, 1.0, 1.0, 0.0);
  18.         glMatrixMode(GL_PROJECTION);
  19.         gluOrtho2D(0.0, 200.0, 0.0, 150.0);
  20.         glutDisplayFunc(lineSegment);
  21.         glutMainLoop();
  22.         return 0;
  23. }


gcc main.c -lglut -lGL -lGLU

阅读(974) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~