openGL学习笔记一 openGL简述

笔记参考了

openGL的一些理解

顶点,图元,片元的解释

openGLwiki

1.OpenGL是什么?

OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。

OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows 95Windows NTUnixLinux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。我的理解就是对使用者屏蔽了底层实现,openGL只负责软件部分,不需要来管怎么硬件如何实现,OpenGL是一种客户端-服务器(client-server)类型的系统。我们编写的程序就是一个客户端,而我们的计算机图形硬件制造商提供的OpenG的实现就是服务器。在一些OpenGL的实现里(例如一些和X Window System相关的应用),客户端和服务器可能会在不同的机器上运行,中间用网络连接。在这种情况下,客户端可以发起OpenGL命令,然后转换成窗口系统特定的协议,再发送给服务器,最终在服务器上执行OpenGL进行图像显示。

2.OpenGL可以来干什么?
应用领域:视频 图形 图片处理,2D/3D游戏引擎开发,科学可视化,医学软件的开发 ,CAD(计算机辅助技术),
虚拟实境(AR VR),AI人工智能。


3.OpenGL和OpenGL ES有什么关系?

OpenGL ES是OpenGL 的子集

OpenGL ES是一个在移动平台上能够支持 OpenGL 最基本功能的精简规范。

4.一个用来渲染图像的OpenGL程序需要执行的主要操作

先来一幅openGL wiki的流程图

openGL学习笔记一 openGL简述_第1张图片          

图一 官方说明  

openGL学习笔记一 openGL简述_第2张图片

图二 山寨详细说明版

备注 : 这里有几点说明下

1. shaders: 着色器这是一类在图形硬件上执行的特殊函数。我们可以理解成,Shader是一些为图形处理单元(GPU)编译的小程序。OpenGL包含了编译工具来把我们编写的Shader源代码编译成可以在GPU上运行的代码

2. 主要流程的概括就是:几何顶点被组合为图元(点,线段或多边形),然后图元被合成片元,最后片元被转换为帧缓存中的象素数据,在概括下就是: 顶点 ->图元->片元->像素

3. 参考百度的说明,图元就是组成图像的基本单元,比如三维模型中的点、线、面等等,注意图元(entity)与片元(primitive)的区别,片元就是以后的像素点,它比像素多一些位置啊、法向量等属性。逐个片元操作有像素所有权操作(确定目标像素可见还是被一个重叠的窗口盖住了),剪切测试、Alpha测试、模板测试、混合等。而片段(fragments)是指具有相同属性的一小部分像素区域。

4.光栅化是将一个图元转变为一个二维图象(其实只是布满平面,没有真正的替换帧缓存区)的过程

5.OpenGL允许光栅化生成一个片元,只要该片元通过一系列检测就可以修改帧缓冲区中对应象素。如果它通过测试,片元数据可以直接替换帧缓冲区中的已有值,或者和已有值合并,这取决于设置的模式。

6.  在OpenGL流水线的上个阶段,片元转换为帧缓冲区中的象素。帧缓冲区实际上是一组逻辑缓冲区——包括颜色缓冲区、深度缓冲区、模版缓冲区和累积缓冲区。颜色缓冲区包括左、前右、后左、后右和一些辅助缓存值(auxiliary buffers)。可以直接从中读取或者复制。对于OpenGL不同上下文,这些缓冲区可能不全



你可能感兴趣的:(opengl)