OpenGL
文章平均质量分 66
图王大胜
一名Android FWK程师;专注系统思维
展开
-
OpenGL基础(20)可控的立方体-鼠标 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1程序功能简介这里显示了多个立方体,通过控制鼠标就可以调整多个立方体的视角。主要是通过实战 理解 鼠标输入与摄像机之间如何建立起联系。2程序代码-可控的立方体-鼠标2.1 核心源码源码如下所示:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include...原创 2021-07-25 12:09:18 · 476 阅读 · 0 评论 -
OpenGL基础(19)可控的立方体-按键 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1程序功能简介这里显示了多个立方体,通过控制按键WSAD就可以调整多个立方体的视角。主要是通过实战 理解按键输入与摄像机之间如何建立起联系。2程序代码-可控的立方体们2.1 核心源码源码如下所示:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include..原创 2021-07-25 11:25:33 · 416 阅读 · 0 评论 -
OpenGL基础(18)转动的摄像机 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1程序功能简介主要是通过实战 理解 LookAt矩阵。2程序代码-转动的摄像机2.1 核心源码源码如下所示:原创 2021-07-25 11:11:16 · 412 阅读 · 0 评论 -
OpenGL基础(17)摄像机
OpenGL本身没有摄像机的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,这样感觉就像我们在移动,而不是场景在移动。1 摄像机LookAt矩阵建立定义一个摄像机,我们需要一个摄像机在世界空间中的位置、观察的方向、一个指向它的右测的向量以及一个指向它上方的向量。依据这4个信息,我们可以构建出一个LookAt矩阵。1.1 矩阵基本信息获取@1定义摄像机定义摄像机的位置,一个三维向量(0,0,3),如下所示:glm::vec3 cameraPos = glm.原创 2021-07-19 17:30:25 · 1698 阅读 · 0 评论 -
OpenGL基础(16) 多个立方体 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1程序功能简介主要是通过实战 理解 多个不同位置 绘制相同图形的流程。2程序代码-旋转立方体2.1 核心源码源码如下所示:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <learnopengl/filesystem.h>#i...原创 2021-07-18 20:01:23 · 518 阅读 · 0 评论 -
OpenGL基础(15) 旋转立方体 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1程序功能简介说明:一个动态旋转的立方体 的局部截图。该案例主要是通过实战 理解 深度测试。2程序代码-旋转立方体2.1 核心源码源码如下所示:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <learnopengl/filesyst...原创 2021-07-18 00:12:21 · 772 阅读 · 1 评论 -
OpenGL基础(14)四边形投影 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1程序功能简介主要是通过实战 理解 正射投影 和 透视投影。2程序代码-旋转四边形2.1 核心源码源码如下所示:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <learnopengl/filesystem.h>#includ...原创 2021-07-16 21:26:45 · 446 阅读 · 2 评论 -
OpenGL基础(13)旋转四边形 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1 程序功能简介主要是通过实战 理解矩阵与旋转的关系。2程序代码-旋转四边形2.1 核心源码源码如下所示:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <learnopengl/filesystem.h>#include &l..原创 2021-07-16 18:23:35 · 420 阅读 · 1 评论 -
OpenGL基础(12)图形变化与3D效果
1 向量、矩阵与图形变化的关系在研究图形动态变化 就要用到数学方面的知识,涉及向量、矩阵以及相关的混合运算。关于向量、矩阵的基础知识可以参考视频:可汗学院线性代数课程(免费)图形的缩放、旋转、平移基本操作以及 它们的组合操作 均是通过矩阵运算来实现。OpenGL没有自带任何的矩阵和向量知识,所以我们必须定义自己的数学类和函数。目前有一个易于使用,专门为OpenGL量身定做的数学库,那就是GLM。接下来专门使用GLM来实现各种向量、矩阵的操作。2 GLM库基本操作GLM(OpenGLMath.原创 2021-07-16 16:47:02 · 646 阅读 · 1 评论 -
OpenGL基础(11)双重纹理 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1 程序功能简介主要是通过实战 理解双重纹理。上图中的纹理由下面两张纹理混合各50%构成,如下:2程序代码-双重纹理2.1 核心源码#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <learnopengl/filesystem.h&..原创 2021-07-15 18:56:28 · 677 阅读 · 0 评论 -
OpenGL基础(10)纹理四边形 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1 程序功能简介主要是通过实战 理解纹理。2程序代码-带纹理的四边形2.1 核心源码说明:对于纹理读图的库,选择的是stb_image库源码如下所示:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <learnopengl/file..原创 2021-07-15 18:03:42 · 561 阅读 · 0 评论 -
OpenGL基础(09)纹理
1 纹理(Texture)纹理是一个2D图片(也有1D和3D的纹理),可以用来添加物体的细节;可以理解为贴纸。纹理的意义在于可以让物体非常精细而不用指定额外的顶点。纹理坐标在x和y轴上,范围为0到1之间(前提是2D纹理图像)。使用纹理坐标获取纹理颜色叫做采样(Sampling)。纹理坐标起始于(0, 0),终于(1, 1),即从纹理图片的左下角到右上角。下图展示了把纹理坐标映射到三角形上的过程。如下所示:这里为三角形指定了3个纹理坐标点。我们希望三角形的左下角对应纹理的左下角,即三角...原创 2021-07-15 18:03:46 · 643 阅读 · 1 评论 -
OpenGL基础(08)操作封装 shader文件&着色器操作
1 封装的意义在之前的demo测试案例中我们可以看到 着色器的代码都是使用字符串来实现的(使用文件会更方便,一般会把顶点和片段着色器储存为两个叫做XXX.vs和XXX.frag的文件),同时编写、编译和管理着色器的步骤较为繁琐。在这里 我们将这些复杂的步骤整合成一个头文件,便于后面更好的操作。该类主要是可以从硬盘读取着色器,然后编译并链接它们,并对它们进行错误检测,这就变得很好用了。2 封装后的头文件从文件中 读取shader源码,整合为一个头文件,相关代码后如下所示:#ifndef SH原创 2021-07-14 18:35:14 · 779 阅读 · 0 评论 -
OpenGL基础(06)颜色渐变三角形 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1 程序功能简介主要是通过实战 理解着色器插值的使用方法和光栅化效果,效果为颜色渐变。2程序代码-颜色渐变的三角形源码如下所示:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <cmath>#include <stb_image.原创 2021-07-14 17:43:57 · 1739 阅读 · 0 评论 -
OpenGL基础(07)uniform使用案例 源码&显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1 程序功能简介实际上是一个动画,在两种颜色之间来回渐变。主要是通过实战 理解uniform变量,效果为随时间变化颜色渐变。2程序代码-随时间变化 颜色也渐变的三角形源码如下所示:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <cmat.原创 2021-07-14 17:44:05 · 672 阅读 · 0 评论 -
OpenGL基础(05)GLSL语言简介
前几个章节主要是使用OpenGL绘制出基本的图形,从这里开始我们考虑颜色的渐变,首先要了解GLSL语言的基础知识。1 GLSL简介GLSL是用来编写着色器程序的语言。GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。着色器的开头要声明版本,接着是输入和输出变量、uniform和main函数。每个着色器的入口点都是main函数,在main中我们处理所有的in变量,并将结果输出到out变量中。2 GLSL数据类型GLSL的数据类型可以来指定变量种类。有如下几类:基础数据原创 2021-07-14 17:43:31 · 3760 阅读 · 0 评论 -
OpenGL基础(04)四边形 源码 & 显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1 程序功能简介目的:显示1个蓝色的四边形。运行效果如下所示:功能很简单,主要是通过实战 理解 索引缓冲对象。3 程序代码-四边形#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include <cmath>#include <stb_image原创 2021-07-14 11:40:53 · 423 阅读 · 0 评论 -
OpenGL基础(03)三角形 源码 & 显示效果
说明:本系列视频使用 mac平台的Xcode来实现,windows平台和Linux平台与之类似。1 程序功能简介目的:显示2个三角形,一个橘色,一个黄色,分别在中点的左右。运行效果如下所示:功能很简单重,主要是通过实战 理解整个openGL绘制图形的基本流程。2程序代码-三角形源码如下所示:#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>#include .原创 2021-07-13 18:44:39 · 565 阅读 · 1 评论 -
OpenGL基础(02)渲染流程解析
1 渲染流程中基本概念解读在编写程序前,我们需要了解一些基本概念:顶点输入、顶点缓冲对象VBO、1.1 向量(Vector)在GLSL中一个向量有最多4个分量,每个分量值都代表空间中的一个坐标,它们可以通过vec.x、vec.y、vec.z和vec.w来获取。注意vec.w分量不是用作表达空间中的位置的(我们处理的是3D不是4D),而是用在所谓透视划分(Perspective Division)上。1.2顶点输入开始绘制图形之前,必须先给OpenGL输入一些顶点数据。OpenGL是一个.原创 2021-07-13 18:44:24 · 977 阅读 · 0 评论 -
OpenGL基础(01)基础知识
1 基础概念1.1 OpenGL是一个由Khronos组织制定并维护的规范(Specification)。该规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement),将由OpenGL库的开发者自行决定。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配。1.2 常见的OpenGL库GLFW:它是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它也是一个轻.原创 2021-07-12 21:18:08 · 1053 阅读 · 3 评论