自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

专注分享游戏引擎相关技术

欢迎来到我的技术博客,这里专注于C++编程、游戏开发、游戏引擎与计算机图形学的探讨与分享。在这里,你将找到关于如何在C++中实现高效的代码、如何设计和开发游戏引擎、以及深入浅出的图形学知识。我会定期发布实用的教程、技术文章和项目案例,帮助你在游戏开发的道路

  • 博客(11)
  • 收藏
  • 关注

原创 图形学系列教程,带你从零开始入门图形学(包含配套代码)—— 裁剪区域和模板缓冲区

在某些情况下,我们可能希望只渲染屏幕的一部分,将当前颜色缓冲区的其余部分屏蔽起来,防止其发生任何变化。在 OpenGL 中有两种方法可以做到这一点,即裁剪区域和模板缓冲区。本教程将解释如何在你的 OpenGL 应用程序中使用这两种方法。在完成这个简单的教程后,你应该对如何在游戏渲染中使用模板缓冲区和裁剪区域有了很好的了解。关于裁剪区域没有太多要说的了,但是模板缓冲区可能会更复杂一些——可以使用的掩码变量在模板缓冲区中添加多个模板区域;但现在你应该对模板缓冲区有足够的了解,可以在你的游戏中实现一些有趣的效果。

2024-09-14 17:20:14 1247

原创 图形学系列教程,带你从零开始入门图形学(包含配套代码)—— 透明度和深度

在本教程中,你将了解 OpenGL 是如何确定场景中哪些物体在其他物体前面的——这可不像看起来那么容易!还会介绍 Alpha 混合,它能让我们 OpenGL 场景中的物体具有不同程度的透明度。随着你尝试使用 OpenGL 创建的场景变得更加复杂,你可能会希望某些物体出现在其他物体的前面。你可能还会希望某些物体是部分透明的,比如窗户或者水。要做到这些,你需要了解如何处理屏幕上一个像素的深度,以及如何处理它的 Alpha 值。

2024-09-13 15:05:31 1244

原创 图形学系列教程,带你从零开始入门图形学(包含配套代码)—— 纹理映射

在本教程中,你将学习纹理映射,通过在你之前的教程中一直使用的三角形上执行一些纹理映射操作来实现。纹理映射是将图像应用到构成你的场景的多边形上的过程,以提高视觉真实感。OpenGL 为我们做了很多繁重的工作,但我们仍然必须手动配置我们图形硬件的纹理单元,以便获得我们想要的图形结果。如果编译成功,当你运行程序时,你应该在屏幕上看到一个带有纹理的三角形。你可以使用箭头键旋转纹理,并使用数字键 1 和 2 切换双线性过滤和纹理重复。恭喜!

2024-09-12 15:41:11 931

原创 图形学系列教程,带你从零开始入门图形学(包含配套代码)—— 视图矩阵 & 帧速率

现在你已经可以在世界空间中移动你的物体了,你可能也想知道如何移动你的视角。本教程将向你展示如何使用视图矩阵来做到这一点,并展示一个在 OpenGL 应用程序中使用的简单的“相机类”的示例。你还将看到如何以恒定的速度在你的场景中移动,而不管你的帧率是多少。在上一个教程中,你简单地了解了视图矩阵,它作为 OGLRenderer 类的一个成员变量和着色器的一个统一变量出现,但你并没有对它们做太多操作。在本课程中,你将学习如何操作视图矩阵,从而能够在你的场景中移动。

2024-09-06 11:41:57 1505

原创 图形学系列教程,带你从零开始入门图形学(包含配套代码)—— 顶点变换

在上一节教程中,你学会了在屏幕上绘制三角形 - 现在你将学习如何使用平移、缩放和旋转矩阵来变换该三角形。你还将学习投影矩阵的知识,它可以给你渲染场景的深度感。在第一个教程中,我们直接在裁剪空间中渲染了一个三角形。作为入门介绍这没问题,但从长远来看并不是特别有用!在本节课中,你将学习如何使用顶点着色器,将顶点从它们的局部坐标空间,经过模型矩阵和投影矩阵,依次变换到世界空间,最后到裁剪空间。模型矩阵、投影矩阵以及之后会介绍的视图矩阵和纹理矩阵都是一种变换矩阵——用于操作齐次坐标的矩阵。齐次坐标有一个额外的坐标w

2024-09-05 16:43:35 675

原创 图形学系列教程,带你从零开始入门图形学(包含配套代码)—— 你的第一个三角形

一个三角形——听起来很无聊,是吧?嗯,确实很无聊!但是在屏幕上绘制一个三角形将教给你 OpenGL 的基础知识,并让你在进行更高级的图形渲染的道路上顺利前行。为了使用 OpenGL 编写图形程序,你需要知道如何处理三种不同类型的数据——顶点数据、纹理数据和着色器。我们将在后面的教程中处理纹理数据;现在我们将集中精力于如何处理顶点数据和着色器。OpenGL 提供了用于复制顶点数据和编译着色器的函数,但在以“面向对象”的方式处理此类数据方面提供的帮助很少——没有类结构来整洁地封装功能。

2024-09-05 11:03:35 1272

原创 怎样用c++实现一个vector类

向量(Vector)就像动态数组一样,当插入或删除一个元素时,它能够自动调整自身大小,其存储由容器自动管理。vector中的元素被放置在连续的存储空间中,这样就可以使用迭代器来访问和遍历它们。在向量中,数据是在末尾插入的。在末尾插入的时间是不同的,因为有时候可能需要扩展数组。给定的任务是用 C++实现一个类,这个类的行为要和标准库中的 Vector 类一样。:它返回向量的大小,也就是向量中的元素个数。时间复杂度是 O(N),其中 N 是向量的大小。下面是我们自己实现的 Vector 类的代码。

2024-09-04 10:41:43 206

原创 图形学系列教程,带你从零开始入门图形学(包含配套代码)—— 初探图形编程

本教程将向你介绍现代图形编程背后的概念,包括顶点数据是如何变成最终的像素化图像的。你将了解到可用于渲染图形的应用程序接口(API)、渲染过程中使用的数据类型,以及图形硬件是如何被编程的。不同于其他晦涩难懂的英文翻译产物,本教程将用通俗易懂的语言来带你入门图形学,并且每一章都有配套的练习代码,让你牢牢掌握学过的知识。

2024-09-03 13:43:24 804

原创 游戏引擎中的物理学 - 射线检测

在开发视频游戏时,一个常见的操作是确定从特定点是否可以看到或触摸到一个物体——在菜单屏幕上点击一个按钮,或者在即时战略游戏中点击一辆坦克就是这样的例子。有时我们可能希望确定一个 AI 单位从其当前位置是否能“看到”另一个玩家单位。虽然这些 AI 可见性检查和菜单鼠标点击在表面上看起来可能不太相似,但它们通常都是通过相同的过程实现的——光线投射。光线投射允许我们从世界中的特定点(无论是坦克的炮塔还是玩家的鼠标指针)发射无限细的光线,并查看它在途中与哪些物体碰撞。

2024-09-02 15:23:34 1444

原创 游戏引擎中的物理学 - 线性运动

现代视频游戏中,可能会有数百个物体在屏幕上移动和互动,看起来非常逼真。这背后是一个物理引擎,它由一系列函数和类组成,用于模拟物体之间的复杂互动,使其在实时环境中表现得更为真实。物理引擎的核心有两个功能:首先,它必须让物体在受力的情况下以符合物理规律的方式移动;其次,它必须检测到物体之间的碰撞,并根据碰撞结果让物体做出相应的反应。在本文中,笔者将带你们学习如何实现真实的物体运动,并且了解如何在游戏模拟中加入加速度、速度和质量等概念。

2024-09-02 11:40:35 1257

原创 Unity+QT, 如何把Unity打包出的exe嵌入QT程序中,并且使用Socket进行交互

本文详细介绍了如何通过 QT 服务器向 Unity VR 程序发送命令,以实现场景切换和游戏物体创建等交互功能。通过 UDP 进行通讯,您可以实现桌面和 VR 头盔之间的无缝互动,提升用户体验。如果您在实施过程中遇到问题或有其他需求,欢迎交流讨论。

2024-08-30 16:26:18 1016

图形学系列教程配套代码

图形学系列教程配套代码,搭配教程食用效果更佳,带你从零开始入门图形学

2024-09-03

使用Cmake构建的基于QT的多线程PNG处理工具

使用Cmake构建的基于QT的多线程PNG处理工具,内置了QT库,libpng,zlib,无需额外安装任何库,可用于学习Cmake构建,QT基本操作,libpng库的使用,多线程,图片处理相关知识

2024-09-03

基于栈的虚拟机,可执行字节码

定义了基础的字节码,可以读取并且识别字节码,并用栈机执行,可用于开发自己的脚本语言

2024-09-03

Unity集成ChatGpt

在Unity里集成了ChatGpt,可以用文字描述来控制编辑器行为,例如添加游戏物体,无需登入OpenAI账号

2024-09-03

空空如也

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

TA关注的人

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