LearningOpenGL(1)--简介

简介opengl

什么是opengl

OpenGL并不是一个API,而是Khronos组织制定并维护的规范。
规范是指规定了输入和输出的设置,但是不规定函数的实现方法与细节,具体实现由开发者自行决定。(编写OpenGl库的人–OpenGL库的开发者通常是显卡的生产商)
Opengl库表现的行为和规范规定不一致时,基本就是库开发者留下的bug,通过更新驱动可以解决。
驱动(驱动软件程序是安装在操作系统上的软件)也就是硬件厂商根据操作系统编写的配置文件,没有驱动程序,计算机中的硬件就无法工作,不同的操作系统,硬件的驱动程序也不同。

Opengl库与驱动的关系

Opengl通过驱动程序提供的接口和硬件设备进行交流,也就是说,opengl库是对驱动程序的进一步封装。

Opengl的开发模式:

Opengl在发展过程中有两种模式:立即渲染模式和核心模式
立即渲染模式(固定渲染管线):大多数的功能都被隐藏,自由开发受限
核心模式:规范文档废弃了立即渲染模式,鼓励开发(需要了解更多的图像学细节)

扩展

当由opengl有新特性/渲染时,通过扩展的方式在驱动中实现。当显卡支持这个扩展时开发者才能真正使用这个扩展(在驱动代码中由进行判断)

在这里插入图片描述

Opengl状态机

Opengl本身是一个状态机,opengl的状态通常被称为opengl上下文。通过上下文变量(转换规则)改变opengl的状态。

状态机:是一种状态到另一种状态的转换;

1.状态(State):描述对象或系统可能处于的不同状态。例如,一个灯可以有两个状态:开和关。
2.输入(Input):触发状态之间转换的外部信号或事件。例如,按下开关按钮可以触发灯的状态转换。
3.转换(Transition):定义从一个状态到另一个状态的条件和行为。转换描述了在给定的输入条件下状态之间的转换规则。
4.输出(Output):定义在状态转换期间或状态变化时执行的动作或产生的结果。例如,在灯状态从关到开时,输出动作可以是灯亮起。

Opengl中对象的概念

对象:是指一些选项的集合,代表opengl状态的子集(可以用一个对象来代表绘图窗口的设置),看作c风格的结构体(struct)

Opengl工作流:

在这里插入图片描述

  1. 首先创建对象,通过glgenobject来创建对象,并用objectID来保存引用
  2. 将该对象绑定到上下文的目标位置。
  3. 设置窗口选项,这些选项会保存到objectID的引用对象中。
  4. 解绑。(解绑后一旦重新绑定,会重新生效)。

创建窗口

为简化opengl的代码,衍生出很多库GLUT,SDL,SFML和GLFW,来辅助开发者使用opengl进行图形编程。

GLFW

是专门针对opengl的c语言库,允许用户创建opengl上下文,定义窗口参数以及处理用户输入。

Glew

配置环境:

  1. 附加包含目录:(glew,glfw的include文件夹)
    在这里插入图片描述
    在这里插入图片描述

2.链接器常规目录:
在这里插入图片描述
在这里插入图片描述

3.链接器输入目录:
在这里插入图片描述
在这里插入图片描述

Glew和glfw搭配使用的作用

Glew负责简化和管理opengl扩展的加载
Glfw用于管理窗口,opengl上下文和用户输入

在这里插入图片描述
在这里插入图片描述

Glew和Glfw的使用流程:

  1. 对glfw进行初始化;设置版本号,设置profile类型
  2. Glfw创建窗口,对窗口绑定上下文关系
  3. 初始化glew
  4. Glew设置渲染窗口大小
  5. 通过glfw为判断条件,使用glew进行循环渲染

三角形

顶点数组对象:VAO—用途:用来从VBO/EBO中挖数据,那几个数据是顶点,哪些是法向量,VAO对EBO/VBO进行数据处理
顶点缓存对象:VBO
元素缓存对象:EBO
索引缓冲对象:IBO
在这里插入图片描述

顶点着色器:将3D坐标转换成另一种3D坐标
图元装配:所有的点装配成指定图元的形状
几何着色器
光栅化阶段

必须至少一个顶点着色器和一个片段着色器,因为GPU种没有默认的顶点着色器/片段着色器
片段着色器:计算一个像素的最终颜色。(结合光照,阴影,光的颜色)

OpenGL仅仅当3D坐标在3个轴上-1.0~1.0的范围内时才会处理,也叫标准化设备坐标;此范围内才能显示到屏幕内(范围外不显示);
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值