自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

慎始慎终,勿忘初心

软件工程师,游戏开发者,多次创业人士

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

翻译 LearnOpenGL笔记:Window和Triangle (一)

Hello Window原文链接Double BufferWindows应用程序使用双缓冲(double buffer)的方式来渲染,前缓冲(front buffer)保存着已经绘制到屏幕的最终的图像,而同时渲染指令绘制到后缓冲(back buffer)中。一旦渲染指令执行完,我们就将前后缓冲互换,这样图像就可以立即呈现给用户,避免单缓冲会出现的失真现象。当我们的应用程序以单缓冲(sin...

2019-07-25 15:28:58 213

翻译 LearnOpenGL笔记:开篇

原文链接什么是OpenGLOpenGL通常被认为是一组API,通过它我们可以操作显卡和图像。尽管如此,OpenGL并非是API,它仅仅是一个specification,由Khonos 开发和维护。也就是说OpenGL只定义了每个函数的输入和输出规则,而是由开发者来提供实现。这里的开发者一般是显卡制作商。Core-profile 模式和 Immediate 模式Immediate 模式...

2019-07-20 19:52:21 205

原创 UE4中的玩家类UPlayer、ULocalPlayer 和 UNetConnection

UE4中的玩家类UPlayer、ULocalPlayer 和 UNetConnection前言Player即玩家,从游戏引擎的角度,玩家就是输入的发起者。这里的输入包括本地键盘鼠标手柄等的设备按键,也包括网络传过来的数据包。UPlayerUPlayer继承自UObject,拥有APlayerController成员,通过该成员来接收玩家的输入。class UPlayer : pub...

2019-07-17 13:18:14 2942

原创 UE4 ShooterGame 项目源码分析 - Session的创建和加入

UE4 ShooterGame 项目源码分析 - Session的创建和加入前言ShooterGame是虚幻引擎开源的多人在线第一人称射击游戏项目,它的源码可以从Epic公司的商店里免费下载。里面包含了目前多人在线第一人称射击游戏常见功能,原本官方也有一个页面专门做了讲解,但是实在太过简单,对学习没有太多的帮助,所以我想花点时间在源代码层面自己分析一下,并把分析的过程记录在这里。今天分析一下代...

2019-07-16 18:21:15 5265

原创 UE4中的字符串类:FName、FText和FString

UE4中的字符串类:FName、FText和FString前言众所周知虚幻引擎的开发语言是C++,所以提到字符串类一般人首先会想到C++标准库里的字符串类:std::string。std::string不可谓不强大功能不齐全,但UE4中并没有直接用它,而是自己实现了一套自己的字符串类,实际上是3个字符串类:FName、FText和FString。这究竟是为什么呢?这看起来是多此一举的造轮子行...

2019-07-15 16:05:58 7982

原创 二叉树的创建、插入和删除

二叉树的创建、插入和删除什么是二叉树我们把每个节点最多有两个子节点的树称为二叉树,即英文的Binary Tree。我们把这两个子节点分别叫做左子节点和右子节点。一般来说,二叉树的节点包括以下的内容:数据左子节点引用/指针右子节点引用/指针可以用以下的JavaScript代码表示二叉树的节点:class BinaryTreeNode { constructor(data, ...

2019-07-02 15:20:48 1917

原创 如何实现一个简单的网络帧同步方案

在网络游戏中,网络同步方案大概有下面三种:状态同步,即state synchronization快照同步,即 snapshot synchronization帧同步,即lock step synchronization说帧同步,实际上这三种同步方案都是基于帧的同步,所以都可以说都是帧同步。但现在我们一般都把帧同步等同于lock step synchronization不知道是历史遗留问...

2019-06-16 21:00:50 2360 1

原创 虚幻引擎中的日志系统

在软件项目中,日志一直扮演着一个及其重要的角色。程序员经常依赖它来定位问题,在某些不方便调试的情况下,日志甚至是唯一一个可以依赖的工具。虚幻作为一个游戏引擎,它的强大体现在各个方面,也包括日志系统。在本文里我就引擎提供的三种打日志的方式来介绍这一系统。提到日志,大概我们第一个想到的就是在输出终端上打印的日志。对于这类日志引擎提供了UE_LOG宏来实现。UE_LOG不仅仅有了种类众多的预定义(Ca...

2018-11-10 20:46:22 716

翻译 虚幻引擎中的反射(译)

原文链接:https://www.unrealengine.com/en-US/blog/unreal-property-system-reflection?sessionInvalidated=true反射是程序的一种能力,借助于它可以在运行时查看自身。作为虚幻引擎中的基础技术,它相当有用,增强了众多的系统比如编辑器中的属性面板,对象序列化,垃圾回收,网络对象传输以及蓝图脚本和C++之间的通信...

2018-10-28 09:04:30 604

原创 探秘虚幻引擎中的模块

作为一个软件工程师,模块(module)应该是再熟悉不过的概念了。我们用它来划分代码,小的项目可能几个模块,大的项目则有可能有几十个甚至上百个模块。有很多语言原生就支持模块这个概念,但遗憾的是C++语言并不属于这类语言。为了弥补这个不足,虚幻引擎特别为C++创造了一套清晰的模块规范,使得引擎能更好的服务于大型的游戏项目。通常来说,在虚幻引擎里的一个模块表现为在工程源代码目录中的一个独立子目录加上...

2018-10-20 10:28:46 563

原创 如何理解递归(一)

递归是程序运行时的一种现象,也是解决某些特定问题时较迭代算法来说更自然更优雅的代码组织方式。作为程序员工作了多年后,我发现一个能不能理解好递归,能不能用递归来解决问题是区分程序员和非程序员,甚至于区分好程序员和差程序员的试金石。很多人通过学习掌握了某些语言的语法,也能写一些代码,但是一遇递归就头大。我曾经也是经历过这样的一段时间,所以希望这篇文多少能对这样的人有点帮助。谈到递归,程序设计课程老师...

2018-10-14 11:36:54 23529 11

空空如也

空空如也

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

TA关注的人

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