OpenGL
无提丶
这个作者很懒,什么都没留下…
展开
-
opengl设置uniform的注意事项
针对在片段着色器或顶点着色器中设置uniform变量后,找不到的问题。原创 2020-11-19 21:47:08 · 918 阅读 · 0 评论 -
OpenGL(十二) 基础光照
主要介绍了冯氏光照模型的三个主要结构:环境光照,漫反射光照和镜面光照。本文主要介绍的是在世界坐标系下进行光照计算,实际上大多数人都趋于在观察空间进行光照计算,本文末尾有在观察空间进行光照计算的练习。即使对于着色器而言,逆矩阵也是一个开销较大的运算,可以选择在CPU计算出法线矩阵之后再通过uniform把值传递给着色器。转载 2019-09-25 16:55:19 · 581 阅读 · 0 评论 -
OpenGL(十一) 颜色
现实生活中看到的某一物体的颜色实际上是它反射的颜色,即不能被物体吸收的颜色。本文为表现出光照反射效果,创造一个表示光源的物体(为了防止他改变,特地为光源创建一个独立的顶点着色器和片段着色器),这个光源纯粹是为了表示光照效果而已,实际作用不大,没有也可。实现光照反射效果,实际上就是设置两种颜色,一种是物体颜色,一种是光源颜色,然后将两种颜色相乘混合,显示出意想不到的颜色,作为被照射物体的最终颜色。转载 2019-09-24 10:42:20 · 484 阅读 · 0 评论 -
OpenGL(十) 入门复习
词汇表OpenGL: 一个定义了函数布局和输出的图形API的正式规范。GLAD: 一个拓展加载库,用来为我们加载并设定所有OpenGL函数指针,从而让我们能够使用所有(现代)OpenGL函数。包含两个头文件目录,和一个glad.c文件。将两个头文件目录(glad和KHR)复制到你的Include文件夹中(或者增加一个额外的项目指向这些目录),并添加glad.c文件到你的工程中。视口(Vie...转载 2019-09-11 16:38:22 · 135 阅读 · 0 评论 -
OpenGL(九) 摄像机
摄像机前面的教程中我们讨论了观察矩阵以及如何使用观察矩阵移动场景(我们向后移动了一点)。OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动。摄像机/观察空间当我们讨论摄像机/观察空间(Camera/View Space)的时候,是在讨论以摄像机的视角作为场景原点时场景中所有的顶点坐标...转载 2019-09-11 15:48:49 · 996 阅读 · 0 评论 -
OpenGL(八) 坐标系统
在上一个教程中,我们学习了如何有效地利用矩阵的变换来对所有顶点进行变换。OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的x,y,z坐标都应该在-1.0到1.0之间,超出这个坐标范围的顶点都将不可见。我们通常会自己设定一个坐标的范围,之后再在顶点着色器中将这些坐标变换为标准化设备坐...转载 2019-08-26 15:30:18 · 1473 阅读 · 0 评论 -
OpenGL(六) 纹理
我们已经了解到,我们可以为每个顶点添加颜色来增加图形的细节,从而创建出有趣的图像。但是,如果想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会产生很多额外开销,因为每个模型都会需求更多的顶点,每个顶点又需求一个颜色属性。艺术家和程序员更喜欢使用纹理(Texture)。纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节;你可以想象纹理是一张绘有砖块的...转载 2019-08-22 21:56:25 · 411 阅读 · 0 评论 -
OpenGL(三)窗口
GLFW首先,新建一个.cpp文件,然后把下面的代码粘贴到该文件的最前面://#include <glad/glad.h>//#include <GLFW/glfw3.h>#include "glad.h"#include <glfw3.h>请确认是在包含GLFW的头文件之前包含了GLAD的头文件。GLAD的头文件包含了正确的OpenGL头文件(例...转载 2019-08-16 14:57:02 · 748 阅读 · 0 评论 -
OpenGL(五) 着色器
着色器着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。GLSL着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。着色器的开头总是...转载 2019-08-20 14:57:44 · 673 阅读 · 0 评论 -
OpenGL(七) 变换
尽管我们现在已经知道了如何创建一个物体、着色、加入纹理,给它们一些细节的表现,但因为它们都还是静态的物体,仍是不够有趣。我们可以尝试着在每一帧改变物体的顶点并且重配置缓冲区从而使它们移动,但这太繁琐了,而且会消耗很多的处理时间。我们现在有一个更好的解决方案,使用(多个)矩阵(Matrix)对象可以更好的变换(Transform)一个物体。当然,这并不是说我们会去讨论武术和数字虚拟世界(译注:Mat...转载 2019-08-23 21:42:45 · 1128 阅读 · 0 评论 -
ubuntu配置opengl环境glfw+glad+glm+stb_image.h+Assimp
GLFW3.3 + GLAD转载 2019-08-16 19:16:36 · 4482 阅读 · 1 评论 -
OpenGL(四) 三角形
在学习此节之前,建议将这三个单词先记下来:顶点数组对象:Vertex Array Object,VAO顶点缓冲对象:Vertex Buffer Object,VBO索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO当指代这三个东西的时候,可能使用的是全称,也可能用的是英文缩写,翻译的时候和原文保持的一致。由于没有英文那样的...转载 2019-08-16 14:57:16 · 623 阅读 · 0 评论 -
学习OpenGL(一)
在learnopengl上学习记录,仅对opengl的简单介绍。转载 2019-08-16 14:56:39 · 250 阅读 · 0 评论 -
OpenGL(二) 创建窗口
创建窗口在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有目的地从这些操作抽象(Abstract)出去。这意味着我们不得不自己处理创建窗口,定义OpenGL上下文以及处理用户输入。有一些库已经提供了我们所需的功能,提供给我们一个窗口和上下文用来渲染。最流行的几个库有GLUT,SDL,...转载 2019-08-16 14:56:51 · 316 阅读 · 0 评论