自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【操作系统】第五章---虚拟存储器

所有内容均基于课本内容进行总结概括。(主要是当作一个复习笔记,会尽量简短概括书中的内容)

2026-01-04 11:07:36 826

原创 【操作系统】第四章---存储器管理

所有内容均基于课本内容进行总结概括。(主要是当作一个复习笔记,会尽量简短概括书中的内容)

2026-01-03 22:19:09 917

原创 【编译原理】期末复习

前言:我只统计了老师在期中总结课上的内容,其余的只有一小部分解释

2025-11-08 15:17:47 675 1

原创 【操作系统】第三章---处理机调度与死锁

前言:此文章用于期中考试的复习 ,尽量简述内容,提炼核心知识点

2025-11-03 11:03:59 823 2

原创 【操作系统】第二章---进程的描述与控制

前言:此文章用于期中考试的复习 ,尽量简述内容,提炼核心知识点

2025-11-02 13:04:26 1062 2

原创 【操作系统】第一章---操作系统引论

此文章用于期中考试的复习 ,尽量简述内容

2025-11-01 13:17:21 612 1

原创 【SDL】加载gif图

介绍SDL中的动图加载以及使用

2025-10-28 11:22:34 385

原创 【设计模式】组合模式(Composite)

简单介绍组合模式,指出了一些课件上模糊/错误的部分

2025-10-24 10:58:15 822

原创 【设计模式】外观模式/门面模式(Facaed)

简要介绍外观模式,因为内容较为简单,没有太大的理解难度,所以课件内容居多

2025-10-23 22:37:25 511

原创 【设计模式】代理模式(Proxy)

简要介绍代理模式,更多的是为复习提供便利,旨在理解的基础上进行巩固

2025-10-23 22:08:09 1031

原创 【设计模式】装饰器模式(Decorator)

简单介绍装饰器模式

2025-10-23 14:36:20 1044

原创 【设计模式】桥接模式(Bridge)

简单介绍桥接模式,尽力以通俗易懂的语言表达个人理解。(其中一部分也是用于考试复习)

2025-10-22 22:59:44 845

原创 【设计模式】适配器模式(Adapter)

简单介绍适配器模式,以XML和JSON的读取作为示例,

2025-10-22 16:47:14 903

原创 【设计模式】建造者模式(Builder)

简单介绍建造者模式,根据个人理解,尽可能以简明易懂的例子去进行解析

2025-10-21 23:13:26 910

原创 【设计模式】工厂模式(Factory)

尽力以通俗易懂的方式讲解简单工厂,工厂方法和抽象工厂。主要结合自身课程内容用以复习使用。

2025-10-21 12:21:15 1038

原创 【设计模式】单例模式(Singleton)

介绍单例模式(Singleton),主要是课上内容的笔记(应试与科普性质),部分细节还需自行了解,但是可以提供一个整体的理解

2025-10-20 19:25:32 1044 4

原创 【OpenGL】模板测试(StencilTest)

介绍模板测试(StencilTest),实现物体的勾边效果

2025-10-18 15:08:20 641

原创 【OpenGL】高级深度检测

简单介绍深度检测,DepthMask、线性深度值(LinearDepth),Z-Fighting(Z冲突),深度偏移(DepthOffset)

2025-10-16 16:17:40 1050

原创 [LevOJ]P2161 不是胖头鱼的取石子游戏

呈现自己做题时的全部思考过程

2025-10-14 11:33:30 621

原创 【OpenGL】父子级关系

组合模式在OpenGL渲染中的使用

2025-10-12 00:39:25 824

原创 LevOJ P2080 炼金铺 II [矩阵解法]

通过线性代数的知识去解决问题,旧题新解

2025-09-30 17:43:27 667

原创 【OpenGL】复杂光照

本文介绍高光蒙版、点光源、聚光灯以及着色器的简单封装

2025-09-29 19:03:05 1105

原创 【OpenGL】简单的渲染架构设计与封装

这篇文章介绍了一个基于OpenGL的3D渲染系统mini架构设计。作者从Object类出发,逐步构建了Material、Mesh、Light和Renderer等核心组件,实现了物体的变换控制、材质光照处理和渲染流程管理。该设计遵循Unity标准进行模型变换,采用冯氏光照模型处理材质效果,并封装了渲染器来简化绘制流程。最后通过创建两个具有不同材质的旋转球体,展示了该架构的具体使用方法。文章强调这是一个简化版本的学习框架,便于理解OpenGL渲染机制,代码结构清晰但功能有限,可作为进一步扩展的基础。

2025-09-27 16:37:35 1073

原创 【OpenGL】基础光照

OpenGL基础光照学习笔记摘要 本文是OpenGL光照学习的入门笔记,主要记录了基础光照模型的核心概念和实现方法。文章从三种基本光照类型展开:漫反射(Diffuse)、高光反射(Specular)和环境光(Ambient)。 法线处理 详细说明了平面、盒体和球体的法线计算方法 强调法线数据对光照计算的重要性 光照模型实现 漫反射:基于光线方向与法线夹角的cos值计算 高光反射:使用reflect函数和视线方向计算 环境光:简单权值处理"死黑"问题 关键技术点 引入step函数处理背面光

2025-09-25 14:54:19 985

原创 [OpenGL]简单几何类设计

本文介绍了使用OpenGL创建几何图形(正方体和球体)的封装实现。通过设计Geometry类,将顶点数据、UV坐标和索引数据的创建过程封装起来,提高代码复用性。对于正方体,直接定义顶点坐标;对于球体,采用经纬线分割法计算顶点位置,并通过两层循环生成顶点索引。文章详细阐述了两种几何图形的数学建模过程、数据存储方式以及OpenGL缓冲区对象的创建和绑定流程,最后提供了完整的类实现代码,包括顶点缓冲对象(VBO)、顶点数组对象(VAO)和元素缓冲对象(EBO)的创建与管理。

2025-09-22 23:19:30 1101

原创 [OpenGL]相机系统

本文介绍了OpenGL中相机与相机控制的设计实现。主要内容包括:1. 相机分为正交投影相机和透视投影相机,通过继承Camera基类实现差异化的投影矩阵计算和缩放功能;2. 相机控制器分为轨迹球控制和游戏控制两种模式,分别实现不同的交互逻辑;3. 轨迹球控制支持物体旋转、平移和缩放操作;4. 游戏控制实现第一人称视角的移动和视角转换。文中详细阐述了各模块的类设计、接口定义和关键算法实现,展示了如何利用C++多态特性构建灵活可扩展的相机系统。

2025-09-21 21:37:28 784

原创 [OpenGL]摄像机&&投影

本文为 OpenGL 初学者笔记,梳理摄像机与投影核心知识,明确 3D 到 2D 渲染的坐标变换逻辑,摄像机是模拟观察者视角的数学工具,需定义位置、看向、穹顶方向,通过 “反向操作世界” 将物体从世界坐标系转至摄像机坐标系,依赖视图变换矩阵(摄像机变换矩阵的逆)。投影分正交(立方体可视范围,无近大远小,需统一盒体至 [-1,1])与透视(锥体可视范围,近大远小,引入剪裁空间解决计算问题,优化参数简化矩阵),均需转 NDC 坐标

2025-09-20 12:46:50 1014

原创 [OpenGL]GLM数学库的使用

本文介绍了OpenGL中使用GLM数学库进行图形变换的基础知识和实现方法。主要内容包括:1. GLM基础使用:向量和矩阵的创建、运算(点乘、叉乘、矩阵运算);2. 图形变换实现:通过顶点着色器实现旋转、平移、缩放等基础变换;3. 复合变换问题:分析本地坐标系和世界坐标系的区别,探讨变换顺序对结果的影响;4. GLM变换规则:平移以本地坐标系为基准,旋转以本地坐标系中心为基准,平移受缩放影响。文章通过代码示例展示了各种变换效果,并总结了变换操作的底层原理和应用注意事项。

2025-09-17 22:10:53 1165

原创 [OpenGL]简单2D游戏的实现

本文介绍了基于OpenGL实现简单2D游戏的关键技术要点。主要内容包括:1) 游戏框架设计,采用单例模式管理窗体和应用状态;2) Shader和Texture类的实现,封装了OpenGL着色器和纹理的创建、绑定等操作;3) 游戏角色系统的实现,包括玩家控制、子弹碰撞和敌人受击效果;4) 动画系统采用定时器控制帧序列切换;5) 碰撞检测和特殊效果处理,如敌人受击时的红屏闪烁效果。文章还强调了内存管理的重要性,如每帧创建和销毁VBO以避免内存泄漏。该实现可作为OpenGL学习实践或C++课程设计的参考案例。

2025-09-15 19:00:53 1283 2

原创 [OpenGL]Mipmap

本文介绍了Mipmap技术原理及其在OpenGL中的实现。Mipmap通过生成多级渐远纹理(每级为前一级尺寸的1/2)来解决物体远离时纹理采样失真的问题。文章详细阐述了Mipmap的生成过程(包括均值/高斯滤波和下采样算法)、使用GLSL偏导函数自动判定Mipmap级别的方法,以及手动生成Mipmap的实现代码。重点分析了如何通过像素与纹素的映射关系计算最佳Mipmap级别,并使用textureLod函数进行采样。最后对比了手动生成与glGenerateMipmap函数的实际效果差异。

2025-09-13 19:02:05 1082

原创 OpenGL的图片渲染

本文介绍了OpenGL纹理处理的关键概念和技术流程。主要内容包括:1. UV坐标原理及两种纹理过滤方式(临近过滤和双线性插值)的对比选择;2. 纹理对象、采样器和纹理单元的关系;3. 四种纹理包裹属性(Repeat、Mirrored、ClampToEdge、ClampToBoarder)的特点;4. 纹理处理的完整流程:数据加载传输阶段(CPU到GPU)和纹理采样渲染阶段(GPU处理)。文章结合代码示例详细说明了如何实现纹理加载、坐标转换、参数设置以及着色器中的纹理采样过程,并提供了不同过滤方式和包裹属性的

2025-09-10 23:21:47 799

原创 OpenGL绘制三角形

​前言:刚学OpenGL,主要想要记录下学到的东西,也当作一个笔记,部分理解可能有偏差,也是不全面的,如果有发现问题的话也很高兴大家可以指正,我会尽快修改的,在后续学习过程中,也会根据进行相应的补充与修改。(课件截图来源于bilibili赵新政老师的OpenGL初级课程,流程图是使用脑图进行绘制的)(比起直接调用EasyX或者SDL中的函数,相对来说因为要去实现Shader,OpenGL 呈现出一个三角形真的要麻烦许多,也更难理解,因此本文章最主要的目的是为了记录下流程,并没有太深刻的讲解)​

2025-09-05 22:02:10 1072

原创 [OpenGL]NDC,VBO,VAO,EBO

刚学OpenGL,主要想要记录下学到的东西,也当作一个笔记,部分理解可能有偏差,也是不全面的,如果有发现问题的话也很高兴大家可以指正,我会尽快修改的,在后续学习过程中,也会根据进行相应的补充与修改。(课件截图来源于bilibili赵新政老师的OpenGL初级课程)

2025-09-04 11:29:07 1167

原创 Turn on the Light 3

Tips:需要理解调和级数的时间复杂度。

2025-05-29 15:15:35 413

原创 LevOJ P2076 炼金铺 I

这题实际上非常简单,但是这简单的操作往往可以给我们启发。对于这题而言,我们可以通过累加操作次数来代替原本的数值更新,也就是将O(n)的操作降到了O(1),而这种思想对于我们去进行其他的区间的(或者是整体的)数值更新也是有很大启发的。

2024-10-29 18:27:41 997

原创 LevOJ P2081 矮人都城

在这种情况下,假如腰的长度是x,由于需要的底边是(0,2x),长度小于等于x的边必然可以与之构成等腰三角形,那么,我们就只需要贪心地从最长骨头开始找底边,不断将比他长度比他小的骨头拆出来,就一定可以构成等腰三角形,实现构造数量的最大化。我们发现,x越小,越不容易找到符合条件的底边,而相对的,对于底边来说,骨头越长就越难与其他的腰构成三角形。因此,我们就要从小到大枚举成对的腰,然后每次贪心地去找到可以组成三角形的无法配对的骨头中长度最长的那一根,这样就可以把条件苛刻的先用掉,最大地可能将所有孤立的骨头用到。

2024-10-26 21:55:51 406

原创 LevOJ P1309 最长单调递增子序列(O(26*n))

那么我们就可以看到两种做法的优势与短板了。

2024-10-26 18:25:59 1020

原创 LevOJ P2082 恶魔巢穴

(3)如果这个位上1的个数大于1,那么就可以只保留下来一个,将多出来的1挪到低位,由进制的特性可以知道,多出来的那个1肯定可以将低位上的所有1补全。对于或运算,只要当前二进制位上存在一个一,那么就可以让这个位有数值的贡献了,如果有两个数在该二进制位上存在一个1,那么只要保留一个即可。(2)如果这个位上1的个数为1,那么就不进行改变,答案可以加上该位的贡献值。(1)如果这个位上1的个数为0,那么没有数可以在该位上进行贡献。(或运算 : 1|0=1 , 1|1=1 , 0|0=0)

2024-10-24 21:50:24 612 1

原创 LevOJ P2080 炼金铺 II

我们可以找到每次更新的共通性,假如我们对a[i]执行x次炼金操作,那a[i]的结果是不是会变成a[i]+x*b[i]呢。如果我们去不断记录这个操作的次数,只要最后输出a[i]+x*b[i]+add(还有操作4)就可以了。接下来,我们的任务便是不断地更新mul1,mul2,mul3,mul4,add1,add2。当然,我们很容易便可以知道他的时间复杂度为O(qn),gg了~((๑¯ω¯๑)舒适的似了)其实,假设当前操作数为a[i]本身,对于a[i]+b[i],实际上就是。是不是很像懒标记呢?

2024-10-24 11:42:41 580

原创 LevOJ P2083神圣炸弹

实际上,我们随便找一个点u[x],如果这个点连接到右侧,那么必然会关联一条线,并且连接一个点v[y]。与此同时,在v这一侧,必然会存在一个点v[z](zx)与之相连,那么必然会存在交叉。只有当当前区域 向外扩展的最远u = 向外扩展的最远v 的时候,才结束了一块关联区域。读懂题目了的话,想必大家就会得到结果了,每一片关联区域都有两种选择,假如有x个关联区域,那么总共就有pow(2,x)种搭配,除去所有都不被驱邪的情况,答案肯定是pow(2,x)-1.

2024-10-23 23:11:19 476 1

操作系统功能模拟实现源代码-可以当作课设参考

GitHub下载链接:https://github.com/WaWaJie/Operation-System-Course-Design

2026-01-08

OpenGL简单游戏的实现

通过OpenGL进行简单2D游戏的实现,使用了CMake进行项目的配置。可以当作学习参考,改一改作为C/C++程序设计课设我感觉还是不错的。 GitHub下载链接: https://github.com/WaWaJie/OpenGL-Easy2dGame

2025-09-15

Assimp(已经编译过的)

Assimp(已经编译过的)

2025-10-12

OpenGL简单的渲染架构设计与封装

mini架构,仅进行了简单封装,供学习使用

2025-09-27

GLM数学库(资源名称要凑够11个字)

GLM数学库

2025-09-17

stb-image.h

stb-image.h

2025-09-11

空空如也

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

TA关注的人

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