简书注册了好久,读了很多文章,自己也想要写一些小心得小体会。奈何人懒事多,一直没有动笔。现在就趁自己系统学习OpenGL的机会,开启一个系列文章的编写吧!
OpenGL简介
OpenGL(Open Graphics Library)是一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。
OpenGL的特点
OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows 95、Windows NT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。由于OpenGL是图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。
OpenGL使用简便,效率高。它具有七大功能:
1.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数。
2.变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、缩放、镜像四种变换,投影变换有平行投影(又称正射投影)和透视投 影两种变换。其变换方法有利于减少算法的运行时间,提高三维图形的显示速度。
3.颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Index)。
4.光照和材质设置:OpenGL光有自发光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和高光(Specular Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。
5:纹理映射(Texture Mapping)。利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。
6:位图显示和图象增强图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、抗锯齿(反走样)(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可使被仿真物更具真实感,增强图形显示的效果。
7:双缓存动画(Double Buffering)双缓存即前台缓存和后台缓存,简言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。
好啦,以上内容是我从百度百科粘的,下面说一下我对OpenGL的简单理解。
OpenGL实际上是一个编程的接口规范,它主要为GPU的渲染操作提供外部编程接口,所以OpenGL是一个软件接口而与硬件无关。除了OpenGL外,还衍生了其他的接口,如用于并行计算的OpenCL,用于移动3D图形开发的OpenGL ES和用于网络3D开发的WebGL。OpenGL在3D渲染方面具有强大的功能。它是一款底层渲染API,这使得我们可以大量使用底层控制,创造自己的算法,打造更多可能。
补充知识:
1.3D图形技术和术语
变化&投影
光栅化:实际绘制或填充每个顶点之间的像素形成线程
线框渲染,但大多数情况下使用实心三角形渲染。
着色:沿着顶点之间改变颜色值,能够轻松创建光照射在一个立方体上的效果。另一方面,着色器则是图形硬件上执行的单独程序,用来处理顶点和光栅化任务。
纹理贴图:只是一个用来贴到三角形或多边形上的图片。在GPU上,纹理是快捷有效的。
混合:混合不同的颜色
2.着色器
着色器(Shader)是用来实现图像渲染的,用来替代固定渲染管线的可编辑程序。其中Vertex Shader主要负责顶点的几何关系等的运算,Pixel Shader主要负责片源颜色等的计算。
着色器替代了传统的固定渲染管线,可以实现3D图形学计算中的相关计算,由于其可编辑性,可以实现各种各样的图像效果而不用受显卡的固定渲染管线限制。
着色器(Shader)主要有顶点着色器(Vertex Shader)和像素着色器(Pixel Shader)两种(注:两种着色器在不同的实现中略有不同)。
着色器在离线渲染领域已经出现了多年,并且广泛应用于电影等方面,而即时渲染领域的着色器则是在微软推出Shader Model后才被首次引入。目前比较流行的Shader language着色器语言有HLSL,GLSL,RM等。
OpenGL的绘图管线如下图所示,可以看到,着色器在整个OpenGL渲染过程中发挥着重要作用。
附一个自己配置OpenGL的demo链接:https://github.com/EmmaMeng/OpenGLTest
网友评论