
OpenGL
文章平均质量分 95
catog
机器视觉
展开
-
OpenGL学习笔记(十)-几何着色器-实例化
参考网址:LearnOpenGL 中文版4.7 几何着色器4.7.1 基本概念1、顶点和片段着色器之间有一个可选的几何着色器,几何着色器的输入是一个图元(如点或三角形)的一组顶点,顶点发送到下一着色器之前可对它们随意变换,将顶点变换为完全不同的图元,并且还能生成比原来更多的顶点。#version 330 corelayout (points) in;layout (line_strip, max_vertices = 2) out;void main() { gl_Posit原创 2022-05-13 10:43:44 · 1526 阅读 · 0 评论 -
OpenGL学习笔记(九)-高级数据-高级GLSL
参考网址:LearnOpenGL 中文版第四章 高级OpenGL4.6 数据与缓冲在OpenGL中使用缓冲来储存数据,本节将讨论不同的缓冲函数,以及如何使用纹理对象来储存大量的数据。缓冲是用来管理特定内存块的对象,将它绑定到一个缓冲目标后,才赋予了其意义。例如,将缓冲绑定到GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER等缓冲目标上,OpenGL根据目标的不同,以不同的方式处理缓冲。4.6.1 缓冲函数1、之前一直调用glBufferData函数来填充缓冲对象所管理的原创 2022-05-05 15:47:58 · 811 阅读 · 0 评论 -
OpenGL学习笔记(八)-面剔除-帧缓冲-立方体贴图
参考网址:LearnOpenGL 中文版第四章 高级OpenGL4.4 面剔除4.4.1 基本概念1、一个3D立方体,从任意方向最多能同时看到3个面,以某种方式丢弃这几个看不见的面,能省下超过50%的片段着色器执行数。2、如何确定物体的某一个面看不见?一个闭合形状的每个面都有两侧,每一侧要么面向用户,要么背对用户。面剔除能够检查所有面向观察者的面,并渲染它们,而丢弃那些背向的面。但要告诉OpenGL哪些是正向面和背向面,这可通过分析顶点数据的环绕顺序完成。4.4.2 环绕顺序1、当定义一组三角原创 2022-04-27 10:53:36 · 651 阅读 · 0 评论 -
OpenGL学习笔记(七)-深度测试-模板测试-混合
参考网址:LearnOpenGL 中文版第四章 高级OpenGL4.1 深度测试4.1.1 深度缓冲1、深度缓冲用来防止被阻挡的面渲染到其它面的前面,由窗口系统自动创建,在每个片段中储存了它的深度值。当启用深度测试时,OpenGL会将一个片段的深度值与深度缓冲的深度值进行对比。如果通过了深度测试,则在深度缓冲中储存该片段的z值;如果没有通过,则会丢弃该片段。2、深度缓冲创建于片段着色器运行之后,在屏幕空间中运行,与glViewport所定义的视口密切相关。屏幕空间坐标可使用GLSL内建变量gl_F原创 2022-04-22 16:27:31 · 986 阅读 · 0 评论 -
OpenGL学习笔记(六)-模型加载
参考网址:LearnOpenGL 中文版哔哩哔哩教程第三章 模型加载3.1 Assimp1、Assimp能够导入多种模型文件格式,将所有的模型数据加载至Assimp的通用数据结构中,我们就能够从Assimp的数据结构中提取我们所需的所有数据了。2、Assimp会将整个模型加载进一个场景对象,场景对象中包含一系列的节点,每个节点包含了场景对象中所储存数据的索引,每个节点都可以有任意数量的子节点。(图中左半边)场景的根节点含子节点,子节点中有一系列指向场景对象中mMeshes数组中储存的网格数据的原创 2022-04-15 16:05:54 · 921 阅读 · 0 评论 -
OpenGL学习笔记(五)-投光物-多光源
参考网址:LearnOpenGL 中文版哔哩哔哩教程2.5 投光物2.5.1 平行光1、当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行,例如太阳。不论物体和/或者观察者的位置,看起来好像所有的光都来自于同一个方向。当假设光源处于无限远处的模型时,它就被称为定向光。2、通过定义光线方向向量即可模拟一个定向光。struct LightDirect { vec3 lightDir; vec3 ambient; vec3 diffuse; vec3原创 2022-04-11 10:58:00 · 517 阅读 · 0 评论 -
OpenGL学习笔记(四)-光照-材质-光照贴图
参考网址:LearnOpenGL 中文版哔哩哔哩教程第二章 光照2.1 颜色现实生活中人眼看到某一物体的颜色,是它所反射的颜色。如将白光照在红色的玩具上,玩具会吸收白光中除了红色以外的所有子颜色,不被吸收的红色光被反射到我们的眼中,让这个玩具看起来是红色的。该颜色反射的定律运用在OpenGL时,给定光源颜色,把光源的颜色与物体的颜色值相乘,所得到的就是这个物体所反射的颜色。glm::vec3 ambientColor(0.0f, 1.0f, 0.0f);glm::vec3 objColor(原创 2022-04-10 09:46:06 · 874 阅读 · 0 评论 -
OpenGL学习笔记(三)-变换-坐标系统-摄像机
参考网址:LearnOpenGL 中文版哔哩哔哩教程1.5 变换为了使物体变成动态的,需要使用多个矩阵对象变换一个物体。1.5.1 向量向量包含方向和模。由于向量是一个方向,很难用位置表示,因此可指定原点,然后指向一个方向,对应一个点,使其变为位置向量。1、向量与标量运算:数学中是没有这个运算的,但是在许多线性代数的库中支持这样的运算。该运算就是将向量的每个元素,与标量进行运算。其中的+可以是+,-,·或÷。注意-和÷运算时不能颠倒(标量-/÷向量),因为颠倒的运算是没有定义的。2、向量取反原创 2022-04-03 10:29:57 · 1730 阅读 · 0 评论 -
OpenGL学习笔记(二)-着色器-纹理
参考网址:LearnOpenGL 中文版哔哩哔哩教程第一章 入门1.3 着色器1.3.1 基本结构利用着色器语言编写着色器,以顶点着色器和片段着色器为例,在着在顶点着色器中输出颜色变量vertexColor,在片段着色器中输入变量vertexColor作为图案的颜色。#version 330 corelayout (location = 0) in vec3 aPos; // 位置变量的属性位置值为0out vec4 vertexColor; // 为片段着色器指定一个颜色输出void m原创 2022-03-26 12:46:41 · 1423 阅读 · 1 评论 -
OpenGL学习笔记(一)-窗口-渲染管线
参考网址:LearnOpenGL 中文版哔哩哔哩教程第一章 入门1.0 配置库首先,在我们画出出色的效果之前,需创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,因此需要利用GLFW库,给我们提供一个窗口和一个OpenGL上下文用来渲染;其次,OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本众多,它大多数函数的位置都无法在编译时确定下来,需要在运行时查询。为避免查询繁琐的过程,需利用GLE原创 2022-03-22 15:55:26 · 1182 阅读 · 0 评论