美文网首页
初见OpenGL

初见OpenGL

作者: Young__Li | 来源:发表于2018-02-12 12:28 被阅读36次

WTF

OpenGL 是一种应用程序编程接口(Application Programming Interface, API),它是一种可以对图形硬件设备特性进行访问的软件库。OpenGL 被设计为一个现代化的、硬件无关的接口,因此我们可以在不考虑计算机操作系统或窗口系统的前提下,在多种不同的图形硬件系统上,或者完全通过软件的方式(如 果当前系统没有图形硬件)实现 OpenGL 的接口。OpenGL 自身并不包含任何执行窗口任务 或者处理用户输入的函数。
一个用来渲染图像的 OpenGL 程序需要执行的主要操作如下所示。

  1. 从 OpenGL 的几何图元中设置数据,用于构建形状。
  2. 使用不同的着色器(shader)对输入的图元数据执行计算操作,判断它们的位置、颜色,以及其他渲染属性。
  3. 将输入图元的数学描述转换为与屏幕位置对应的像素片元(fragment)。这一步也称作光栅化(rasterization)。
  4. 最后,针对光栅化过程产生的每个片元,执行片元着色器(fragment shader),从而决定这个片元的最终颜色和位置。
  5. 如果有必要,还需要对每个片元执行一些额外的操作,例如判断片元对应的对象是否可见,或者将片元的颜色与当前屏幕位置的颜色进行融合。

OpenGL 是使用客户端 - 服务端的形式实现的,我们编写的应用程序可以看做客户端,而计算机图形硬件厂商所提供的 OpenGL 实现可以看做服务端。

Begining

环境搭建 参考这篇
渲染流程如下图

其中常用的是顶点着色器(决定位置)和片元着色器(决定片元的存在与颜色)

说说坐标

对了这时候需要补充一下坐标的概念, OpenGL是右手坐标系,默认以屏幕的中心为远点(0,0,0), 往右为x正方向,往上为y正方向,垂直于屏幕向外为z正方向,坐标中每个点的范围为[-1 ,1]
伸出右手,手心面对自己,中指指向自己,则拇指指向x+,食指指向y+,中指指向z+。

有了坐标的概念,就可以先搞个简单的图形了

    /// 顶点数据
    GLfloat vVerts[] = {
        -0.5f, 0.0f, 0.0f,  // 依次表示x,y,z的坐标值
        0.5f, 0.0f, 0.0f,
        0.0f, 0.5f, 0.0f
    };

这是个简单三角形,然而复杂的图形也都是一个个坐标拼出来的。具体的着色器如何渲染图形,会放到另一篇文章来分析。
看到这里,我们便可以画一些简单的图形了。

相关文章

网友评论

      本文标题:初见OpenGL

      本文链接:https://www.haomeiwen.com/subject/jsdrtftx.html