Ubuntu 14.0系统下OpenGL平台C语言测试图形代码
来源:互联网 发布:软件质量管理体系 编辑:程序博客网 时间:2024/05/21 09:17
Ubuntu 14.0系统下OpenGL平台C语言测试图形代码
1. 给系统配置OpenGL环境:
【转】 http://blog.csdn.net/evenness/article/details/9150351
2. 编写test.c文件:
键入code如下:
#includevoid init();void display();void DrawGLScene();int main(int argc, char* argv[]){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(0, 0); glutInitWindowSize(300,300); glutCreateWindow("OpenGL 3D View"); init(); glutDisplayFunc(display); glutMainLoop(); return 0;}void init(){ glClearColor(0.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glOrtho(-5, 5, -5, 5, 5, 15); glMatrixMode(GL_MODELVIEW); gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);}void display(){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_BLEND); glBlendFunc(GL_ONE,GL_ONE); glLoadIdentity(); glTranslatef(-1.0f,0.0f,-6.0f); glBegin(GL_TRIANGLES); glColor3f(1.0f,0.0f,0.0f); glVertex3f( 0.0f, 2.0f, 0.0f); glColor3f(0.0f,1.0f,0.0f); glVertex3f(-1.0f,-1.0f, 0.0f); glColor3f(0.0f,0.0f,1.0f); glVertex3f( 1.0f,-1.0f, 0.0f); glEnd(); glDisable(GL_BLEND); glFlush();}
3.编译运行
编译:
gcc test.c -o test -lGL -lGLU -lglut
运行:
./test
运行正常结果是绘制了一个茶壶
4.代码解释:
先说init( )中的:
glClearColor():
最底下的也就是背景,用()中的RGB模式参数来绘制,四个参数依次的意思是:R , G , B ,Alph 。也就是说是红绿蓝和深度(图形学里面也叫混合度)。1.0f=100%的意思,对应的0.5f=50%的意思;
glMatrixMode():
矩阵(线性代数和离散数学中的概念,用来表示点的集合)的模式,因为图像的填色是像素点的填色,每一个像素点可以看作是矩阵的一个一个点。该函数有很多可以调用的参数,具体有哪些,自己查去。
glOrtho():
【转】:http://www.cnblogs.com/onlycxue/archive/2013/08/14/3256623.html
gluLookAt():
这个函数是设定观察者的视角,也就是说人,参照物(一般为地面),和物体的位置关系。六个参数,每三个一组,第一二组表示人眼和物体中心原点在参考系中的坐标(记作n1,n2),第三组表示的是人脑袋的朝向,如图:
再说display( )中的:
glClear():
对新建的窗口进行初始化,清除窗口中的脏内容,因为分配给我们使用的窗口区域,在分配之前都是显示当前这一次显卡显示的图片,对于我们要绘制的图形来说是属于脏内容,所以要清除。
glEnable():
打开颜色的混合模式。
glBlendFunc():
设置颜色混合模式为怎样的,例如,一种颜色和另一种颜色的混合,或者是一种颜色和另外多种颜色的混合,里面的参数代表着不同的颜色混合模式,对应的算法不同效果也不同。
glLoadIdentity():
重置当前指定的矩阵为单位矩阵。
glTranslatef():
在三维平面内上下左右前后的移动,三个个参数按顺序分别代表的是在x,y,z轴方向上的偏移,坐标轴情况在前面的图片中已经指出。
glBegin():
表示开始绘制图形,括号中的参数表示要绘制的图形是什么。
glEnd():
作为绘制图形结束的标志,和glBegin()配套使用。
glColor3f():
设置绘制图形所用的画笔的颜色。
glVertex3f():
设置点的位置。三个参数分别代表x,y,z轴上的偏移量。
glDisable():
表示图形的绘制的顺序是怎样的,比如说先绘制离得远的物体,那么就会产生透视效果,如果是正常绘制那么就会显示正常遮蔽的东西。
glFlush():
把绘制好的图形送到显卡或者cpu里面,具体送到哪里,得看绘制的图形调用得具体函数用到的是显卡计算还是cpu计算。最后把得到得图形结果送到显卡上让显示器显示出来,并强制刷新整个计算机屏幕。
最后说主函数main()中的:
glutInit():
初始化GLUT库;在绘制图形之前,要开启事件循环机制,也就是说打开开关,我们才能用GLUT绘图;
glutInitDisplayMode():
设置初始显示模式。比如GLUT_RGB,就是指定 RGB 颜色模式的窗口。
glutInitWindowPosition():
窗口左上角出现的位置。计算机屏幕左上角为坐标原点,x+轴向右,y+轴向下。
glutInitWindowSize():
设置窗口的大小。
glutCreateWindow():
创建一个窗口。
glutDisplayFunc():
glutDisplayFunc()用于注册一个绘图函数,这样操作系统在必要时刻就会对窗体进行重新绘制操作。类似于windows程序设计中处理WM_PAINT消息。具体来说呢,就是设置一个函数当需要进行画图时就调用这个函数如:glutDisplayFunc(display)调用display()这个函数进行重绘。
glutMainLoop():
glutMainLoop会让我们的命令进入GLUT事件处理循环。在一个GLUT程序中,这个例程被调用一次 。
- Ubuntu 14.0系统下OpenGL平台C语言测试图形代码
- ubuntu 系统下图形软件
- linux平台下C语言调用python代码示例
- C语言:打印图形练习测试
- ubuntu下c语言编程获取系统时间
- 输出“心” 图形的C语言代码
- Linux系统下的OpenGL图形程序框架
- 求一个C语言Opengl代码
- UNIX下c语言的图形编程
- C语言运算测试系统
- 测试一段C代码的执行时间(windows系统和ubuntu系统)
- 解决Ubuntu平台下Matlab中OpenGL警告信息
- ubuntu下c语言程序
- Linux平台下从零开始写一个C语言访问MySQL的测试程序
- OpenGL图形代码封装记
- Ubuntu系统平台下安装Libpcap
- Ubuntu系统下搭建Java平台
- Ubuntu下编写C代码
- 安卓开发中所使用的网络连接工具类
- java系列(十二)神奇的math类·继承和大神器API
- jQuery设计思想
- iOS Cell异步图片加载优化,缓存机制详解。
- Oracle drop table 和 truncate table对grant授权的影响
- Ubuntu 14.0系统下OpenGL平台C语言测试图形代码
- 4-7 统计某类完全平方数 (20分)
- 算法原理详细讲解
- iOS 9新特性
- 禁忌搜索算法(Tabu Search)
- 日志结构的合并树 The Log-Structured Merge-Tree
- 如何替换过时的方法
- Oracle中的正则表达式(及函数)详解
- 深入理解RunLoop