OpenGL学习进程一

来源: CNBLOG-If You and
Me

OpenGL背景

766游戏网官网,OpenGL1.0正规公布于1992年。作为2个早熟而久负盛名的扩平台的微机图形应用程序接口规范,它曾经广泛应用于玩乐,影视,军事,航空航天,地理,管理学,机械设计,以及各项科学数据可视化的世界。此外,随着网络以及运动平台的隆起,WebGL以及OpenGL
ES的正规化也逐步远近有名,那二者同OpenGL有着千头万绪的关联。
OpenGL大致支持全数的主流操作系统平台,包涵Windows,马克斯 OS
X以及种种UNIX平台。同时也足以用于大概全部流行的编程语言包含C/C++,Java,C#,VB,Python,Perl等。可以说OpenGL无处不再。而当前的游玩引擎cocoa2d-x平底的渲染即是接纳了OpenGL技术,要明白以及修改引擎的架构,就不可幸免的要接触OpenGL。

什么是OpenGL

OpenGL即Open Graphic Library,开放图形库。
OpenGL是图片硬件的一种软件接口(The OpenGL graphic system is a software
interface to graphics
hardware.),即可以对图纸硬件设别举办访问的软件库,方便大家开发交互式的三维总结机图形应用程序。
OpenGL本身并不分包其他履行窗口职务如故处理用户输入的函数,可是没什么,我们将会用到3个第②方扩平台的库GLUT(OpenGL
Utitlity
Tookit)来提携处理这个窗口时间,关于它的内容接下去介绍。此外,OpenGL也从没提供任何用于表达三维物体模型(models
of three-dimensional
objects),或然读取图像文件(例如JPEG文件)的操作。而代表,我们要求经过一多重图元(Primitive)(包含点、线、三角形以及Patch)来成立三维空间的实体。
OpenGL是选择客户端-服务器的款式完毕的,大家协调所编写的应用程序可以看成客户端,而电脑图形硬件厂商所提供的OpenGL达成可以看做是服务端。(OpenGL
is implemented as a client-server system, with the application you write
being considered the client, and the OpenGL implementation provided by
the manufacturer of your computer graphics hardware being the server.)
OpenGL是基于光栅化(rasterization-based
system),用于转移图像。但还有其他格局例如光线跟踪(ray
tracing),但有只怕也急需用到OpenGL来展现图像。

OpenGL程序渲染图像的重点操作

1,为创设形状(Shape)指明来自OpenGL的几何图元的多寡。
2,使用不一致的着色器(Shapes)对输入的图元数据实施计算操纵,有次来判断他们的任务、颜色、以及任何渲染属性。
3,将输入图元的数学描述转化为在显示屏地方上相应的有个别(fragments)。那几个进程称之为光栅化(Rasterization)。
4,最终,为各类经过光栅化阶段的一些执行片段着色器(frament
shader),该操作决定了有的的末梢颜色以及岗位。
5,有时或许必要对各类片段(pre-fragment)执行额外的操作。例如判断片段暴发的对象是还是不是可知,大概将有个别的水彩和当前显示器地方的颜料相融合。

常用的图形学名词

渲染(Rendering):表示计算机从模型创立最终图像的长河。
模型(Model):或然又称为对象,是透过几何图元(geometric
primitives)例如(pint)、线和三角形来打造的。而这一个几何图元是通过终点(vertices)来指明的。
着色器(Shaders):它是图片硬件配备所执行的一类特殊函数。明白着色器的最好方法是把它当做专门为图形处理单元(GPU)编译的一种小型程序。
OpenGL在其内部含有了拥有的编译器工具,可以直接从着色器代码创立GPU执行所需的代码。
在OpenGL中,会用到七种不相同的着色阶段(shader
stages),最常用的席卷终端着色器(vertex shaders)和一些着色器(fragment
shaders)。前者用于拍卖顶点数据(vertex
data),后者用于拍卖光栅化后的有的数据。
像素(pixel):指的是显示屏上不大的可视单元。在总括机系中储存于帧缓存中。
帧缓存(framebuffer):由图形硬件配备管理的一块独立的内存区域,可以直接照射到最终的来得设备上。

发表评论

电子邮件地址不会被公开。 必填项已用*标注