OpenGl计算机图形学入门
OpenGl计算机图形学入门
- 前言
- 一、OpenGl及GLSL
- 二、语言
- 1.C++及C++应用程序
- (1)C++
- (2)C++应用程序
- 三、库
- 1.GLFW 窗口管理库
- 2.GLEW 扩展库
- 3.GLM 数学库
- 4.SOIL2 纹理管理库
- 四、OpenGl管线
前言
当今,图形编程时基于着色器的,也就是说,许多程序是用着色器语言编写的,并运行于显卡(GPU) 上。实现计算机图形的编程,需要我们借助一系列的语言平台(目前最流行的语言为C++),同时需要提供能对底层图形进行操作支持的Opengl Graphics Library(开放图形库),也需要的一系列错综复杂的步骤,将图形从“管线”中传递下去。更多详细内容请参阅《计算机图形学编程》{\color{Green} 《计算机图形学编程》}《计算机图形学编程》
一、OpenGl及GLSL
OpenGl是一种对供应商特定的计算机图形应用编程接口(API)的开放性替代,也就是说OpenGl并不是一种语言或是一个库 ,即仅仅是一种相应的规范(更确切的说是一种语言规范)。
相应的,在此语言规范下,引入OpenGl着色器语言 (GLSL)编写相应的着色器程序,并运行于GPU上。需要说明的这些所谓的着色器语言及程序是由程序员已经写好并植入GPU内部的。
二、语言
1.C++及C++应用程序
(1)C++
C++ 是一门通用编程语言,如前言所述着色器语言API是由C语言规范编写的,因此这种规范面向于C和C++,选用C++ 语言不失为一种明智之选。这里需要说明的是,采用其他语言如Java、Python、Visual Basic、Delphi等等语言进行编写也是可以的(需要调用相应语言的库)。这里,我们仅仅讨论C++作为编程语言。
(2)C++应用程序
采用C++进行编写调试部署生成的为C++应用程序,c++应用程序并非仅仅在CPU层面上对图形进行操作,而往往C++应用程序发挥的作用如下:
1.获取GLSL着色器代码 (点火)
2.安装GLSL至GPU。(驾驶)
不同于GLSL,这一部分操作恰恰为我们来执行,我们通过运行C++应用程序,直接对CPU进行操控,间接地运行GPU,而GPU的整个运行过程不为我们所操控,但其仍在稳定顺畅地运行着。
为更好地理解这些概念,我们将
图形编程比作是人驾驶行为,
C++应用程序比作是汽车架构中的方向盘、油门、离合器等为人所直接控制部分,
GPU比作是汽车内部我们所不能控制的驱动装置等。
他们的关系如下:
这里,我们可以将不为我们所操控的操作成为底层操控。
三、库
1.GLFW 窗口管理库
OpenGl实际上并不是把图形直接绘制到计算机屏幕上,而是渲染到一个帧缓冲区,然后需要这台机器负责把帧缓冲去的内容绘制到屏幕上的一个窗口上。目前有很多库可以完成这一工作,如CPW、GLOW、GLUT。
GLFW是最流行的选择之一。可以通过此链接下载到最新的GLFW
2.GLEW 扩展库
OpenGl围绕一组基本功能和扩展机制进行组织。OpenGl核心中有一些内置的命令来支持这些,但是为了使用每个现代命令,需要借助一些扩展库来完成,比如Glee、GLLoader、GL3W和GLAD,常用的是GLEW。最新版OpenGl扩展牧马人最新版OpenGl扩展牧马人
3.GLM 数学库
3D图形编程大量使用向量和矩阵代数(如对世界空间中的物体进行视觉变换以及投影放缩)
GLM提供了与图形概念相关的类和基本数学函数,例如矢量、矩阵、四元数,以及各种透视和视角矩阵。
4.SOIL2 纹理管理库
当我们创建好3D图形后,往往需要对其进行纹理管理和操作。从零开始写一个纹理加载器是可能的,但是考虑到各种各样的图形文件格式,使用一个纹理加载库通常是更好的。
SOIL2兼容各种平台。
四、OpenGl管线
前面提到,我们使用C++应用程序将GLSL运行于GPU上之后,将进行所谓的底层操控,即GPU内部是如何识别这些着色器代码,以及将如何对这些信息处理并最终呈现在显示器上,这将得益于OpenGl管线。
整个管线流程如下:
每个部分的内容将后续进行讨论。
OpenGl计算机图形学入门相关推荐
- 计算机图形学入门OpenGL
计算机图形学openGL 计算机图形学:(Computer Graphics, 简称CG) 简单得说:计算机图形学是一种使用数学算法将二维或者三维图形转化为计算机显示器所能显示的二维栅格形式的科学. ...
- Games101计算机图形学入门基础之一:向量变换、矩阵变换、视图变换、欧拉角与四元数
Games101计算机图形学入门基础之一:向量变换.矩阵变换.齐次坐标.欧拉角与四元数 目录 Games101计算机图形学入门基础之一:向量变换.矩阵变换.齐次坐标.欧拉角与四元数 前言 向量 向量加 ...
- 计算机图形学 裁剪算法源代码,OpenGL计算机图形学梁友栋裁剪算法实验代码及运行结果.doc...
OpenGL计算机图形学梁友栋裁剪算法实验代码及运行结果.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 .<计算 ...
- 计算机图形学入门-线性代数复习
本专栏内容整理了GAMES101的计算机图形学课程的主要内容,作为我学习计算机图形学的一份复习备份或叫做笔记.内容中如有错误,或有其他建议,欢迎大家指出. 附上GAMES101计算机图形学课程:GAM ...
- Games101计算机图形学入门基础之二:光栅化
Games101计算机图形学入门基础之二:光栅化 引言 三角形的离散化 采样 走样 走样带来的瑕疵 反走样 先模糊再采样 傅里叶变换 低通滤波 卷积 多重采样抗锯齿(超采样) 深度缓存 可见性与遮挡( ...
- 计算机图形学入门(一)-线性代数部分知识1
本部分主要介绍了向量的点乘与叉乘在图形学中的基本应用,介绍了图形学中常用的2D矩阵变换,例如缩放.对称.切变换.旋转.平移.逆变换.组合变换和分解变换.还有在图形学中为了简化操作而采取的添加维度的方法 ...
- 计算机图形学入门(二)-线性代数部分知识2视图变换和投影变换
本章主要进行了视图/相机变换的求解,和两种投影变换的求解(正交投影.透视投影),并且简单的完善了3D旋转变换的介绍. 主要的学习过程来自下面的视频,本文只会有主要的基础内容,默认一些知识大家是掌握的, ...
- GAMES101-现代计算机图形学入门-闫令琪——Lecture 05 Rasterization 1 (Triangles)
GAMES101-现代计算机图形学入门-闫令琪--Lecture 05 Rasterization 1 (Triangles) 目录 GAMES101-现代计算机图形学入门-闫令琪--Lecture ...
- 计算机图形Opengl的实验报告,opengl计算机图形学实验报告之3D漫游世界.doc
opengl计算机图形学实验报告之3D漫游世界.doc 北师大珠海分校信息技术学院计算机图形学实验报告实验报告文件命名方式学号姓名_实验序号_实验名称.doc姓名学号1001010092专业计算机任课 ...
最新文章
- <文献阅读>用转移熵通过微阵列的时间序列推断基因调控网络(inferring gene regulatory networks from microarray time series data
- pythonista3使用教程-pythonista3都能做什么
- linux下载哪个python版本-Linux安装多个Python版本
- CSS之【超链接伪类】
- 关于抢红包的_抢红包系统设计与设计
- 洛谷 P2908 [USACO08OPEN]文字的力量Word Power
- 忽略所有信号导致的程序Ctrl+c和Ctrl+z无法退出问题,以及信号表详解
- NIO和BIO如何影响应用程序的设计
- 黑马程序员 C语言:循环语句
- 下标要求数组或指针类型_算法一看就懂之「 数组与链表 」
- Linux下nohup、crontab的使用
- c语言彩票号码生成器
- Python菜鸟起飞day2--数据类型(元组,字典,字符串)
- java openssl rsa_Java中使用OpenSSL生成的RSA公私钥进行数据加解密
- C51——简单的防盗报警器
- 程序员必备的6款工具软件,炒鸡实用!
- 分享 tsc 条码打印机 打印控件 调用方法 , c# silverlight
- 模拟电子中的重要器件——场效应管
- outlook邮箱怎么配置服务器地址多少,Outlook如何设置?Outlook设置方法
- 手把手教你爬取淘宝的笔记本电脑数据