OpenGL

概念

  • OpenGL提供的是一系列接口, 它是指一个规范, OpenGL规范严格规定了每个函数该如何执行, 以及它们的输出值, 具体的实现是由各个显示设备厂商, 它作为本地系统库直接运行在硬件上, 如果OpenGL出现了BUG, 应该升级显卡驱动
  • 顶点着色器(Vectex Shader): 负责绘制图形, 根据顶点坐标, 建立图形模型
  • 片段着色器(Fragment Shader): 根据顶点给图形填充颜色
  • 渲染通道: 由顶点着色器与片段着色器组成, 在现代技术中, 渲染通道被Stream Processor取代

OpenGL组件

  • GLEW是一个跨平台的C++扩展库, 基于OpenGL图形接口, 下载过来就有了glew.h头文件
  • glu是工具库, 封装了OpenGL的函数, 提供了更为直观简单的接口, 函数名为glu
  • glad也是一个工具库, 和glu一样, 与窗口有关

执行流程

  • 输入顶点数据->执行顶点着色器, 根据顶点画图几何图形->光栅化图形(加入我们的几何图形是一条直线, 进行了光栅化就是将该直线进行分段, 具体效果见Windows的mspaint软件)->执行片段着色器->写入帧缓冲区->显示在屏幕上

DirectX

  • OpenGL是图形的API
  • DirectX是许多中API的集合, Direct3D(3D图形API, 简称D3D), Direct2D(2D图形), DirectCompute(通用计算), XAudio(音频), XInput(Xbox手柄输入)
  • DX11性能好, DX12更加提高了DX11(如果开发者厉害的话)

OpenGL与DirectX比较

  • OpenGL更加开放, 但是效率比DirectX低, OpenGL渲染在Windows比DX好
  • 在实际游戏开发中, OpenGL基本上不用

Vulkan

  • 是OpenGL的继承者, 入门难度比OpenGL高
  • 苹果不支持

OpenGL初识的更多相关文章

  1. 实验1 OpenGL初识

    实验预备知识 Windows下的OpenGL编程步骤简单介绍详见课程实验教学博客-实验准备安装GLUT包与创建工程: http://www.cnblogs.com/opengl/archive/201 ...

  2. CSDN日报20170312——《成功人士的七个习惯》

    [程序人生]成功人士的七个习惯 作者:liumiaocn 所谓温故而知新.重读往往会带来新的收获,即使没有新的收获,可以带来新的思考也是非常不错.在个人成长的历程中.习惯所扮演的角色不言而喻,Step ...

  3. 基于Cocos2d-x学习OpenGL ES 2.0系列——初识MVP(3)

    在上一篇文章中,我在介绍vertex shader的时候挖了一个坑:CC_MVPMatrix.它其实是一个uniform,每一个Cocos2d-x预定义的shader都包含有这个uniform,但是如 ...

  4. OpenGl之旅-—初识opengl

    昨天学习了如何使用codeblocks来编译运行一个opengl的项目.在创建一个新的opengl项目时他默认已经写了一个示例,今天我们就上面的例子进行下代码的剖析,以此来敲开opengl的神秘大门. ...

  5. 【OpenGL】初识OpenGL4.0

    目录(?)[-] 什么是GLSL GLEW 安装GLEW 使用GLEW 其他库 使用GLM库进行数学运算 安装GLM 使用GLM 使用GLM作为OpenGL的输入 使用GLFW进行窗口管理 这篇文章主 ...

  6. 初识OpenGl

    函数命名规则 OpenGl函数都遵循一个命名约定:<库前缀> <根命令> <可选参数个数> <可选参数类型> 如:glColor3f() ,gl:核心库 ...

  7. WebGL入门教程(一)-初识webgl

    一.WebGL和传统网页的区别: 普通网页组成成分:HTML.JavaScript: WebGL网页组成成分:HTML5.JavaScript和GLSL ES(着色器语言 OpenGL ES): 二. ...

  8. Android平台下OpenGL初步

    Android OpenGL ES 开发教程 从入门到精通 http://blog.csdn.net/zhoudailiang/article/details/50176143 http://blog ...

  9. (转载)Cocos2dx-OpenGL ES2.0教程:初识MVP(3)

    在上一篇文章中,我在介绍vertex shader的时候挖了一个坑:CC_MVPMatrix.它其实是一个uniform,每一个cocos2d-x预定义的shader都包含有这个uniform, 但是 ...

随机推荐

  1. C# DataGridView添加右键菜单的简单应用

    首先,参考了下以下文章: https://blog.csdn.net/qin_zhangyongheng/article/details/23773757 感谢. 项目中要在DataGridView中 ...

  2. 各类型转换成byte[] 和HexString

    public class ByteUtil    {        /// <summary>        /// string >>Length        /// &l ...

  3. asp.net mvc项目创建WebApi简单例子

    1.创建默认路由的映射. namespace RedisDemo.App_Start { public class WebApiConfig { public static void Register ...

  4. Origin如何使曲面变平滑?

    在“绘图属性” - “绘图细节”窗口中选中 Layer1 下的曲面数据,“Colormap/Contours” 选项下有“Level”标签,选中并设置“Minor Levels”,将其数值调大即可.

  5. python-json.loads()保持原json字符串的顺序

    import jsonfrom collections import OrderedDictmetadata = json.loads(text, object_pairs_hook=OrderedD ...

  6. python 简单爬虫(beatifulsoup)

    ---恢复内容开始--- python爬虫学习从0开始 第一次学习了python语法,迫不及待的来开始python的项目.首先接触了爬虫,是一个简单爬虫.个人感觉python非常简洁,相比起java或 ...

  7. fdisk 和 parted 分区工具

    fdisk 和 parted: fdisk 是用来对 Linux 下的 MBR 分区进行操作的一款分区工具, 由于 MBR 的设计缺陷导致 MBR 不能处理大于 2TB 的硬盘, 并且主分区个数不能超 ...

  8. flask实战-个人博客-使用类组织配置

    使用类组织配置 在实际需求中,我们往往需要不同的配置组合.例如,开发用的配置,测试用的配置,生产环境用的配置.为了能方便地在这些配置中切换,你可以把配置文件升级为包,然后为这些使用场景分别创建不同的配 ...

  9. Python全栈-magedu-2018-笔记12

    第三章 - Python 内置数据结构 字典dict key-value键值对的数据的集合 可变的.无序的.key不重复 字典dict定义 初始化 d = dict() 或者 d = {} dict( ...

  10. springBoot 实现中文国际化

    一:实现效果如下: 二 SpringBoot 国际化配置 1.创建国际化配置文件(3个): messages.properties messages.user.name=用户名 messages.us ...