自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 OpenGL学习笔记(十二):初级光照:投光物/多光源(平行光、点光源、聚光)

现实世界中有很多种类的光照,每种的表现都不同。将光投射(Cast)到物体的光源叫做投光物(Light Caster)。我们将会讨论几种不同类型的投光物:定向光(Directional Light),点光源(Point Light)和聚光(Spotlight),以及如何将这些不同种类的光照类型整合到一个场景之中。

2025-02-09 23:31:22 1792

原创 OpenGL学习笔记(十一):初级光照:光照贴图 Lighting maps

在材质中我们讨论了让每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样能够很容易在一个光照的场景中给每个物体一个独特的外观,但这个材质系统是远远不够的,我们需要拓展之前的系统,引入漫反射贴图和镜面光贴图(Map)

2025-02-06 22:46:38 1033

原创 OpenGL学习笔记(十):初级光照:材质 Materials

在光照模型中,我们定义了一个物体和光的颜色,并结合环境光与镜面强度分量,来决定物体的视觉输出。如果想要在OpenGL中模拟多种类型的物体,我们必须针对每种表面定义不同的材质(Material)属性。

2025-02-06 15:32:34 1080

原创 OpenGL学习笔记(九):初级光照:光照模型(环境光照、漫反射光照、镜面光照)

现实世界的光照是极其复杂的,而且会受到诸多因素的影响,这是我们有限的计算能力所无法模拟的。因此OpenGL的光照使用的是简化的模型,对现实的情况进行近似,这样处理起来会更容易。

2025-02-04 23:46:22 822

原创 OpenGL学习笔记(八):初级光照:颜色 Colors

我们已经对渲染流程有了大体的了解,接下来开始进行光照的学习。先对数字世界的颜色做一个深入了解,然后我们回创建一个光照场景。

2025-02-04 22:13:20 786

原创 OpenGL学习笔记(七):Camera 摄像机(视图变换、LookAt矩阵、Camera类的实现)

渲染流程中,视图变换实际上是在对摄像机做变换。OpenGL本身没有摄像机Camera的概念,我们通过把场景中的所有物体向相反的方向移动来模拟出摄像机,并抽象出Camera类。

2025-02-03 23:26:14 1596

原创 OpenGL学习笔记(六):Transformations 变换(变换矩阵、坐标系统、GLM库应用)

现在我们已经知道了如何创建一个物体、着色、加入纹理。但它们都还是静态的物体,接下来学习使用矩阵(Matrix)对象来变换一个物体。

2025-02-03 20:08:20 1612

原创 OpenGL学习笔记(五):Textures 纹理

通过上一篇着色部分的学习,我们可以为每个顶点添加颜色来增加图形的细节,从而创建出有趣的图像。本篇开始学习使用纹理(Texture)来添加物体的细节。

2025-02-02 23:45:19 941 2

原创 GAMES101学习笔记(六):Geometry 几何(基本表示方法、曲线与曲面、网格处理)

Lec10 ~ 12 学习笔记:Geometry 几何(基本表示方法、曲线与曲面、网格处理)

2025-02-02 00:22:01 859

原创 GAMES101学习笔记(五):Texture 纹理(纹理映射、重心坐标、纹理贴图)

纹理映射的基本原理是在三维物体表面和二维纹理图像之间建立起一种映射关系,将纹理图像中的颜色、图案等信息依照该映射关系赋予物体表面相应位置,以此增强物体渲染的真实感与细节丰富度。

2025-02-01 00:33:05 972

原创 OpenGL学习笔记(四):Shader 着色器(GLSL、Shader类封装)

着色器(Shader)是运行在GPU上的小程序,从本质上来说,是一种把输入转化为输出的程序。使用GLSL编写着色器程序,并封装Shader类调用。

2025-01-14 17:27:45 934

原创 GAMES101学习笔记(四):Shading 着色(光照模型、着色频率、图形渲染管线)

在对三维场景进行变换和光栅化之后,下一步我们要对光栅化得到的像素进行着色

2025-01-14 11:12:41 933

原创 GAMES101学习笔记(三):Rasterization 光栅化(三角形的离散化、抗锯齿、深度测试)

Lec5 ~ Lec6 Rasterization 光栅化 学习笔记

2025-01-12 16:38:26 1046

原创 GAMES101学习笔记(二):Transformation 变换 (仿射变换、模型、视图、投影)

Lec3 ~ Lec4 学习笔记:Transformation 变换(二维与三维、模型、视图、投影)

2025-01-06 23:22:33 868

原创 GAMES101学习笔记(一):Overview 计算机图形学概述

Computer Graphics 计算机图形学,即使用计算机合成和操作视觉信息。

2024-12-29 23:12:56 1102

原创 OpenGL学习笔记(三):初识渲染管线(渲染流程、VAO、VBO、EBO)

在OpenGL中,一切都是3D的,但屏幕或者窗口是一个2D像素阵列,因此OpenGL的大部分工作是将所有3D坐标转换为适合屏幕的2D像素。这个过程由OpenGL的渲染管线管理的。将3D坐标转换为2D坐标。将2D坐标转换为实际的有颜色的像素。图形渲染管线可以被划分为几个阶段,每个阶段将会把前一个阶段的输出作为输入。

2024-12-01 23:31:01 1364

原创 OpenGL学习笔记(二):窗口与视口(glfw的使用、处理输入、扩展glfw为MFC子窗口)

VS2017中使用GLFW + GLAD来配置使用OpenGL。

2024-11-21 22:25:21 1420

原创 OpenGL学习笔记(一):Overview 概述

OpenGL是一个由Khronos组织制定并维护的规范(Specification)。OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定。实际上OpenGL的大多数实现都是由显卡厂商编写的,即一系列可以操作图形、图像的API。

2024-11-13 17:06:32 1117

原创 【MFC编程(六)】图形图像:位图CBitmap和OnPaint函数

BITMAP是C++中定义的位图结构体,封装着bitmap的一些信息,定义了逻辑位图的高、宽、颜色格式以及位值。

2024-11-10 23:49:25 1001

原创 【MFC编程(五)】图形图像:GDI对象 CPen、CBrush

在MFC中,CGdiObject类是GDI对象的基类,CGdiObject类有六个直接的派生类,GDI对象主要也是这六个,分别是:CBitmap、CBrush、CFont、CPalette、CPen和CRgn。

2024-11-09 23:47:13 822

原创 【MFC编程(四)】图形图像:CDC类与GDI绘图

Windows环境下二维绘图引擎有多种选择:GDI、GDI+、Direct2D、Direct3D、OpenGL、Vulkan等。GDI:微软原生的二维绘图引擎。优点:微软的全力支持,作为操作系统核心层效率方面不用担心

2024-11-08 13:23:15 1323

原创 【MFC编程(三)】消息映射机制分析

消息是系统定义的一个32位的值,它唯一地定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。

2024-11-06 23:02:39 1468

原创 【MFC编程(二)】应用程序框架分析

SDK应用程序和MFC应用程序对比,运行流程是类似的,都是先进行初始化过程,再注册并创建窗口,然后显示、更新窗口,最后进入消息循环,消息都由窗口过程函数处理。

2024-11-05 14:59:27 1208

原创 【MFC编程(一)】MFC概述

MFC(Microsoft Foundation Classes Library,微软基础类库)是微软公司推出的一套用于Windows平台的C++类库,它基于Win32 API进行封装,提供了面向对象的编程接口,旨在简化Windows应用程序的开发过程。通过MFC,开发者可以不必直接与底层的Win32 API打交道,而是利用MFC提供的类和对象来快速构建出具有标准用户界面的应用程序。VC++全称Visual C++,是由微软提供的C++开发工具,是用C++语言编写程序的工具平台。

2024-11-04 16:04:09 1788

原创 【数据结构】第一章 绪论

一般情况下,算法中基本运算次数T(n)是问题规模n(输入量的多少,称之为问题规模)的某个函数 f(n),记作:T(n)=Ο(f(n)):在分析算法时间复杂度时,有时需要估算基本操作的原操作,它是执行次数最多的一个操作,该操作重复执行的次数称为频度。数据结构是一个二元组Data_Structure=(D,R),其中,D是数据元素的有限集,R是D上关系的有限集。数据结构是一门研究在非数值计算的程序设计问题中,计算机的操作对象及对象间的关系和施加于对象的操作等的学科。运算的定义是针对逻辑结构的,指出运算的功能。

2024-10-20 17:30:28 966

原创 C/C++标准库概述

C/C++标准库是一组预定义函数、宏和文件的集合,这些函数和文件提供了一些基本的功能和操作。

2024-09-24 17:16:50 1354

原创 【C++ STL】list容器、forward_list容器

std::list是 STL 提供的双向链表容器,是 STL 提供的单向链表容器,。链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表中每一个元素称为结点,链表由一系列结点组成,结点可以在运行时动态生成。每个结点包括两个部分:存储数据元素的数据域存储相邻结点地址的指针域list对于任何位置的元素插入或元素的移除,时间复杂度O(1)list采用动态存储分配,不会造成内存浪费和溢出。

2024-09-20 23:54:42 773

原创 【C++ STL】deque容器

std::deque(double-ended queue,双端队列)是有索引的序列容器,允许在它的首尾两端快速插入及删除。另外,在 deque 任一端的插入或删除不会使指向其余元素的指针或引用失效。deque容器和vectordeque允许使用常数项时间对头端进行元素的插入和删除操作。deque的元素不是连续存储的:典型实现采用一系列单独分配的固定尺寸数组,外加额外的簿记数据,这表示对deque的索引访问必须进行二次指针解引用,与之相比vector的索引访问只进行一次。deque。

2024-09-17 23:03:27 655

原创 【C++ STL】array容器

std::array是 STL 提供的内存连续的、固定长度的数组数据结构。只允许访问或者替换存储的元素。其本质是对原生数组的直接封装。array相比vector牺牲了动态扩容的特性,但是换来了与原生数组几乎一致的性能(在开满优化的前提下)。因此如果能使用C++11特性的情况下,能够使用原生数组的地方几乎都可以直接把定长数组都换成 array,而动态分配的数组可以替换为 vector。

2024-09-08 17:22:22 835

原创 【C++ STL】vector容器

是 STL 提供的内存连续的、可变长度的动态数组容器,可以灵活地管理元素,并且具有许多重要的特性。vector是一个动态数组容器,可以自动调整大小以适应存储元素的需求。它在内部使用连续的内存来存储元素。vector允许在尾部高效地添加和删除元素,通过使用push_back和pop_back操作。O(N)vector支持随机访问元素,可像普通数组一样使用索引访问数据。使用[]运算符或at()函数可以获得指定位置的元素。O(1)

2024-09-07 08:30:00 638

原创 【C++ STL】标准模板库

C++ STL(标准模板库,Standard Template Library)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构。

2024-09-06 00:17:15 1120

原创 Modbus-RTU详解及报文解析

(Remote Terminal Unit)是Modbus通信协议的一种变种,用于串行通信。它是一种常见的工业控制系统通信协议,通常用于采集传感器数据、控制执行器和监控设备状态。

2024-08-19 22:23:11 10543

原创 Modbus协议概述

Modbus已经成为工业领域通信协议的业界标准,是工业领域应用最广泛的协议。

2024-08-13 08:00:00 1379

原创 Windows平台下C++串口通信

在Windows平台下,使用C++调用Windows API进行串口通信。

2024-08-12 08:00:00 2031

原创 字符集与字符编码

后来,不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的编码标准。从ANSI标准派生的字符集被习惯的统称为ANSI字符集,它们正式的名称应该是MBCS(Multi-Byte Chactacter System,即多字节字符系统)。不同ANSI编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段ANSI编码的文本中。_T()或者TEXT()宏,可以把引号括起来的字符串,根据环境选择合适的编码方式。

2024-08-11 08:30:00 1018

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除