OpenGL----系列一:OpenGL概要(本质是什么?)

前言

非学不可的理由

  • 本人入坑是需要GPU架构建模不得已啊啊啊啊!
  • 需要图形编程的时候!

主要学习内容

  • 核心的图形学概念:OpenGL怎样将像素绘制到屏幕上,以及如何利用黑科技做出一些很酷的效果。
  • 许多有用的技巧:它们都可以用在你的程序中,比如说在场景中移动,做出漂亮的光照,加载建模软件导出的自定义模型,做一些很酷的后期处理技巧等。

一、什么是OpenGL

  • 本质----是一套规范(Specification):由Khronos组织制定并维护的一套图形API规范
  • 这套规范严格规定了每个函数该如何执行,以及它们的输出值。
  • 这套规范涉及到的函数是与图像、图形相关的操作。
  • OpenGL库的开发者:通常是显卡的生产商,他们决定了内部具体每个函数是如何实现(Implement)的。
  • 我作为用户开发者:只要用函数(具体函数深入到OpenGL库)实现的功能结果规范相匹配就可以。

二、从立即渲染模式到细节渲染模式

  • 立即渲染模式:早期模式,容易使用和理解,固定的渲染管线,函数更多功能被库隐藏,细节固定化,不够灵活。
  • OpenGL3.2+:开始废弃立即渲染模式,开发者可以在OpenGL的核心模式(Core-profile)下进行开发,移除了旧的特性,对绘图细节有了更多的掌控----库开发者让渡出更多函数灵活性→用户开发者拥有更多函数功能主动权。

三、学习OpenGL需要储备的知识

  • modern C++:请确保至少能写个比 ‘Hello World’ 复杂的程序;
  • 数学知识(线性代数、几何、三角学);
  • 对图形编程以及OpenGL的幕后运作有非常好的理解。

四、OpenGL开端必知

  • GLFW:GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文、定义窗口参数以及处理用户输入,对我们来说这就够了。
  • GLAD:GLAD是用来管理OpenGL的函数指针的库,给GLAD传入用来加载系统相关的OpenGL函数指针地址的函数。GLFW给我们的是glfwGetProcAddress,它根据我们编译的系统定义了正确的函数。
  • “gl”作为前缀:OpenGL库中所有的函数都是用gl作为前缀的,你应该要辨识出来。
  • “GL_”作为前缀:OpenGL库中定义的常量都是用GL_作为前缀的,你也要辨识出来。

五、OpenGL管线 (rendering pipeline)

一系列处理过程,最终将应用程序的的数据转换到最终渲染的图像:

  1. 准备向OpenGL传入数据:传在where?保存到缓存对象(buffer object)相当于一块内存区域,用glNameBufferStorage()命令来同时设置大小和内容。
  2. 将数据传入OpenGL:以顶点为单位传入点数据包。
  3. 顶点着色:决定了图元的位置。一般一个应用程序有很多个顶点着色器,但在同一时刻只能有一个顶点着色器起作用。
  4. 细分着色:使用面片(patch)来描述一个物体形状,再用面片几何体连接,外观会变平顺。
  5. 几何着色:创建新的图元
  6. 图元装配:顶点几何图元组织起来。
  7. 剪切:clipping,保证相关的像素不会落在视口外绘制,自动完成的过程。
  8. 光栅化:生成对应的片元,对每个可变变量进行线性插值
  9. 片元着色:决定了片元的颜色。
  10. 逐片元的操作:用深度测试(z缓存)、模板测试来决定一个片元是否可见。
  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抱着火星去月球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值