渲染管线与模型基础 渲染管线 蓝色背景的:可编程管线 顶点着色器:将顶点坐标从模型空间转换到齐次裁剪空间,我们可以通过在顶点着色器中改变顶点位置实现动画 片元着色器:将光栅化阶段所插值的模型信息进行计算,可以进行一些光照计算 模型的实现原理 点连成线,线构成面,最后组合成多边形模型 UV 在建模过程中,有一部非常重要的操作,就是展 UV,那么 UV…
标准立方体到屏幕 什么是屏幕? 二维数组 每个元素是一个像素 一种经典的光栅成像设备 Raster在德语中的意思就是表示屏幕 光栅化:在屏幕上绘画 像素: 在屏幕上最小单位的小方块 由红绿蓝三原色混合而成 屏幕空间 像素都是以 (x,y) 的形式表示,其中 x, y 都是整数 像素的范围从 (0, 0) 到 (宽度 - 1, 长度 - 1) 像素的…
本文章基于 BV1Qb4y1S7CC 记录 色彩发送 色彩认知 光源是出生点,光源发射出光线,光线通过直射反射折射等路径最终进入人眼; 人眼接收光线后,人眼细胞产生一系列化学反应; 由此把信号传入大脑,最终大脑对颜色产生认知; 光的要素 图中少了折射 光源 定义: 光源就是产生光的物体。若没有光,我们就无法在黑暗中看到色彩,光本质是一种处于特定频段…
纹理三问 纹理是什么 宏观角度:一张图片(不准确) 微观角度:一种可供着色器读写的结构化存储形式 简而言之,纹理是个容器。 以二维纹理为例,二维纹理以宽高以及想要存储的信息(RGBA 等)构造的一个三维数组 [i,j,k],其中 $i$ 和 $j$ 类比数组或者矩阵,代表像素点,$k$ 代表我们想要存储的 RGBA 或者其他信息。 由二维纹理可推得…
前言 电脑的工作原理:电脑是由各种不同的硬件组成,由驱动软件驱使硬件进行工作。所有的软件工程师都会直接或者间接的使用到驱动 定义:是一个图形库,用于渲染 2D,3D 矢量图形的跨语言,跨平台的应用程序编程接口(API)。针对 GPU。 基础概念 应用端 即我们自己的程序端,相对用 OpenGL ES,我们属于应用端 什么是应用端?应用端就是我们程序…
3D 变换 平移 $$ T(t_x,t_y,t_z)=\begin{pmatrix} 1 & 0&0 &t_x \\ 0 & 1 & 0 & t_y\\ 0 &0 &1 &t_z \\ 0 &0 &0 &a…
2D 变换 线性变换 比例变换 $$ x^\prime =sx\\ y^\prime =sy $$ 比例矩阵 $$ \begin{bmatrix} x^\prime \\y^\prime \end{bmatrix}=\begin{bmatrix} s&0 \\0&s\end{bmatr…
向量 通常写作 $\vec{a}$ 或者加粗的 $a$ 或者使用起点和终点的形式 $\overrightarrow{AB}=B-A$ 有距离和长度 没有具体的起点位置 向量归一化 向量的大小(长度)写为 $\left | \vec{a} \right | $ 单位向量 大小为 1 的向量 求向量的单位向量(归一化):$\hat{…
MVP 矩阵 什么是MVP矩阵? MVP矩阵分别是模型(Model),观察(View),投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐…
环境配置 需要安装GLFW 和 GLEW。 解压后将两个文件移动至同一个目录,这里移动到了 D:\OpenGL 打开 VS,新建一个 C++ 空白项目,这里我将其命名为OpenGLTest。项目创建完成后在解决方案下一行处右键 添加-> 新建项,选择 C++ 文件,命名为 main.cpp 右键 OpenGLTest-> 属性,将属性页的配置改为“…