再见西城 发表于 2015-1-16 11:05:02

CentOS教程之OpenGL 简介

初学阶段只要把上课时候学习过的命令练熟就可以了.单靠学习各种命令而成为高手是不可能的。
  OpenGL是一个底层图形库标准。它为程序员供应了一个小的多少图元(点、线、多边形、图片和位图)库和一个撑持2D/3D多少工具画图命令库,经由过程所供应的图元和命令来把持工具的出现(画图)。
  因为OpenGL的画图命令仅限于画一些复杂的多少图元(如点、线和多边形),以是OpenGL有用工具包(GLUT)应运而生,它可以匡助绘画出更庞大的三维工具(好比球体、圆环乃至茶壶)。假如你要构建必要使用到OpenGL全体特征的使用的话,GLUT一定合适,可是对刚进修OpenGL的人来讲GLUT就十分有效。
  GLUT是为满意windows体系下OpenGL程序自力编程接口的需求而计划的,接口被计划的十分复杂而又有用。从OpenGL中移除windows体系的操纵是一个十分贤明的决意,由于这意味着OpenGL图形体系可以被使用于更普遍的体系中(包含功效壮大但高贵的图形事情站和必要大批图形运算的视频游戏、互动电视机机顶盒和团体电脑)。
  GLUT简化了用OpenGL举行衬着的程序的完成。GLUT使用编程接口(API)只必要挪用很少的接口就能够用OpenGL来衬着图形场景,而且GLUT接口所需的参数也绝对较少。
  衬着管线
  年夜多半OpenGL完成都有着相似的操纵按次,这一系列的操纵历程叫做OpenGL衬着管线。只管OpenGL其实不严厉请求必要依照衬着管线这一按次来完成,可是如许做能够为展望OpenGL下一步将要做甚么供应牢靠的指引。多少数据(点、线、多边形)将会沿着一条顺次经由过程求值器、极点操纵和拆卸阶段的路径举行传送,而像素数据(像素,图形,位图)将会沿着另外一条路径传送,在终极像素写进帧缓冲区前,像素数据和多少数据城市履历不异的最初一步——栅格化处置。



  DisplayLists:一切数据,不管是用来形貌多少体仍是像素的,都能够保留在一个displaylist中来在当下或未来利用(用以替换displaylist的用法是在必要时当即处置数据——称为当即形式)当一个displaylist被触发时,保留的数据就像当即形式一样被发送至显现器。
  Evaluators:一切多少原语终极都是由极点形貌的,但evaluator供应了一种用把持点暗示面的办法。这类办法是拟合多项式,能够经由过程把持点供应面法线、色彩、和空间纹理坐标。
  基于极点和图元的拆卸:关于极点的数据,下一步就是将它们转换成图元。某些范例的极点数据被转换为4x4的浮点型矩阵。空间坐标从三维天下中的一个地位被投影到您显现屏上的一个地位。在某些情况中,这一步以后会举行透视除法,使用它可以使远处的多少物体看起来比近处的物体小。然后,我们再对数据举行视口和景深的操纵。至此,我们失掉的了局是多少图元,这些图元与相干的色彩值和景深值,和光栅化步骤的目标等一同举行转换。
  像素操纵:在多少数据经由过程OpenGL衬着管线的一条路径的同时,像素数据则经由过程了别的一条路径。体系内存中的一个数组中的像素起首被解压,从多少格局中的一种转换成具有得当数量的份量的那种。然后,我们对数据举行标准放缩,偏移,再依据像素映照处置,随后这些了局被发送至光栅化步骤。
  光栅化:光栅化是指将多少数据和像素数据都转换成片断的历程。各方形片断对应帧缓存中的一个像素。当极点被毗连起来构成直线,大概盘算添补的多边形的外部像素时,直线的宽度,点的巨细,着色模子,和用以撑持抗锯齿的掩盖盘算等都被思索在内。色彩值和深度值被付与各方形片断。然后,处置后的片断被存进符合的缓存中,在那边,它终极被转化成一个像素,从而完成了它的终极任务。
 库文件

  OpenGL供应了一组壮大但原始的衬着命令,并且一切的高层绘制都必需经由过程这些命令来完成。有多少库文件可以简化您的编程义务,包含:


[*]OpenGLUtilityLibrary(GLU),它包括多少挪用底层OpenGL命令的函数,这些函数可以举行诸如为某一特定察看偏向和透视和衬着外表设定矩阵的义务。
[*]OpenGLUtilityToolkit(GLUT),它是一个视窗-体系分别的工具箱,由MarkKilgard编写,用于埋没分歧视窗的API所带来的庞大性。
  包括文件
  关于一切OpenGL使用程序,你都必要在一切文件中包括gl.h。几近一切OpenGL使用程序利用GLU,即上文提到的OpenGL有用库(OpenGLUtilityLibrary),它也必要包括gl.h才干利用。以是几近一切OpenGL源文件如许开首:
#include<GL/gl.h>#include<GL/glu.h>  假如你用OpenGL有用工具集(OpenGLUtilityToolkit,即GLUT)来办理窗体事件,你必要包括:
#include<GL/glut.h>  记着glut.h包管会准确包括gl.h和glut.h,以是把三个文件全包括是画蛇添足。为使你的GLUT程序通用性更佳,包括glut.h而不要明白包括gl.h或glu.h。
 设置编译器

  在Windows上利用MSVisualStudioC++

  安装GLUT


[*]假如你已安装了MSVisualStudioC++5.0或以上版本,那末以下文件中的年夜多半就已在您的呆板上了。以下的GLUT文件必要复制到指定的路径下。
[*]要入手下手安装:


[*]右键单击各链接
[*]选择另存为...
[*]承受默许称号(只需点击保留便可)
[*]库文件(安排到VisualC++下的lib子路径中)

[*]opengl32.lib
[*]glu32.lib
[*]glut32.lib

[*]包括文件(安排到VisualC++下的includeGL子路径中)

[*]gl.h
[*]glu.h
[*]glut.h

[*]静态链接库文件(安排到WindowsSystem路径中)

[*]opengl32.dll
[*]glu32.dll
[*]glut32.dll

  编译OpenGL/GLUT程序


[*]创立一个新项目:

[*]从菜单中点选文件|新建
[*]点选项目选项卡
[*]点选Win32把持台使用程序ConsoleApplication
[*]输出您的项目称号

[*]为链接器指定要用到的库文件:

[*]从菜单中点选项目|设置
[*]在工具/库模块中:输出"opengl32.libglu32.libglut32.lib"

[*]向项目中增加或创立文件:

[*]从文件菜单中点选项目|向项目增加|文件
[*]增加必要的程叙文件

[*]构建并运转
  SiliconGraphicsWorkstation

Makefile:
#insertthenameofyoursourcefilehere(omitthe.c)TARGET=prognameLIBS=-lglut-lGLU-lGL-lXmu-lXext-lXi-lX11-lmCC=/usr/gnu/bin/gccdefault:$(TARGET)all:default.c.o:$(CC)-c$<$(TARGET):$$@.o$(CC)$@.o-Wall$(LIBS)-o$@clean:-rm-f*.o$(TARGET)  英文http://www.cs.uccs.edu/~ssemwal/introduction.html
Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。

飘飘悠悠 发表于 2015-1-18 07:47:38

你一开始永远也看不到所有.但总的大纲,你是清楚的.不是吗?

小女巫 发表于 2015-1-25 20:38:51

还有, 不要死攻一门语言. 多看看其他的. 触类旁通..

山那边是海 发表于 2015-2-4 03:48:34

其实早在本科一年级就学过C++,当年好像也比较认真的学过,至少成绩上算是认真学过的,只是当年大脑没怎么开化,学的半生不熟的,高级编程自然不用说。

小魔女 发表于 2015-2-9 14:25:29

面向对象思想+CPP语法+算法+实践=学会,初期学习语法较重要,你写的代码编译器都“读”不懂,怎么行?

精灵巫婆 发表于 2015-3-9 02:02:33

当然. 你有兴趣可以再学学动态语言.比如 Ruby.慢慢地. 就会提高的.多学一点东西.就会让你的思维广阔。。

谁可相欹 发表于 2015-3-16 21:43:46

其实这一部分,以后在写程序时会非常有用,自己对照书把TextQuery类实现一下。

海妖 发表于 2015-3-23 07:44:41

不耻上问。初学者有时候碍于面子,抑或是怕人家笑话而不敢问问题。没有必要,你问得人以前也是一样过来得。前提找一个技术上大家认为强得,而且容易交流得。
页: [1]
查看完整版本: CentOS教程之OpenGL 简介