OpenGL 简介

什么是 OpenGL

        OpenGL 是由Khronos组织制定并维护的规范。通常被认为是一个 API ,包含了一系列可以操作图形、图像的函数。但是,OpenGL本身并不是一个API,OpenGL 严格规定了每个函数该如何执行,如何输出。函数内部具体的实现则是由开发者去实现,这造就了 OpenGL 跨平台的特性,任何硬件厂商都可以实现 OpenGL 的 API。

        规范文档可在 https://www.khronos.org/registry/OpenGL/specs/gl/  找到

OpenGL基本概念

OpenGL 状态机

        状态机是一个手抽象的概念,表示一组状态变量的集合。每个状态变量都有不同的值。想象一下有这么一台机器,这台机器上有很多开关,控制着这台机器的运行的效果。改变这些开关的状态,就能达到不同的效果。

OpenGL 上下文 

        OpenGL 上下文保存了 OpenGL 的各种状态。OpenGL 上下文是一个巨大的状态机。应用程序调用任何 OpenGL 的指令之前,需要安排首先创建一个 OpenGL 的上下文。

        由于 OpenGL 上下文是一个巨大的状态机,上下文的切换会产生较大的开销,但是不同的绘制模块,可能需要使用完全独立的状态管理。因此,可以在应用程序中分别创建多个不同的上下文,在不同线程中使用不同的上下文,上下文之间共享纹理、缓冲区等资源。这样的方案,会比反复切换上下文,或者大量修改渲染状态,更加合理高效的。

渲染

        计算机将图像数据显示到屏幕上的过程。这是一个将原始图形数据图形化的过程。

顶点数组和顶点缓冲区

        顶点数组:用于存储顶点数据,是存储在内存中的数据结构。

        顶点缓冲区:在显卡的显存中,也存储的顶点信息。

管线(图形渲染管线)

        将一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程。是将3D坐标转为2D坐标的处理过程。

        管线主要完成两部分工作:1、3D坐标转换为2D坐标;2、把2D坐标转变为实际的有颜色的像素。

固定管线/存储着色器

        固定管线就像是一个封闭的流水线,设置好指定的参数,原始图形数据经过预先设计好的流程,完成渲染。

着色器

    顶点着色器

        可编程着色器中的一个,是 OpenGL中计算顶点属性的程序,用来确定顶点的位置、顶点位置的换算、投影换算。

    片元着色器

        另外一个可编程着色器,用来对每个像素点的计算和填充

GLSL(OpenGL Shader Language OpenGL着色语言)

        开发人员使用GLSL编写着色器程序,在 GPU 上执行。代替了固定渲染管线中部分功能,使渲染管线中不同层次具有可编程性。

光栅化

        根据顶点确定像素点的范围,计算片元供片元着色器使用

片元着色器

        计算一个像素的最终颜色。

纹理(位图)

        纹理指的就是图像的内容,包含了图像上每个像素点的颜色和透明度。

变换矩阵

        用于图形的平移、缩放、旋转

投影矩阵

         将 3D 坐标转换成二维屏幕坐标

视口

        OpenGL的渲染窗口

投影    

        正投影,避免远小近大问题。

        透视投影,显示的更加逼真,显示 3D 效果

你可能感兴趣的:(OpenGL 简介)