自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 问答 (29)
  • 收藏
  • 关注

原创 番外篇--C++中的代码重用

实现代码重用的一些方法(这里并不是全部):包含(组合、层次化):类包含另一个类的对象使用私有继承或保护继承以上两种方法都用于实现has-a关系,常用第一种方法多重继承可以使多个基类派生出一个新类,将基类的功能组合到一起包含对象成员的类公有继承实现is-a模型,没有增加新接口,可增加新实现包含(组合、层次化)、私有继承、保护继承实现has-a模型,没有增加新接口,可增加新实现;接口:直接暴露在外的函数;实现:函数定义;注意:这两个概念不是互斥的私有继承要区分开 类成员的访问类型

2022-11-13 20:36:20 300 1

原创 算法题--斐波那契数列

9要求时间限制:1秒 空间限制:32768K题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39解题思路这道题可以直接用递归来解决,但是递归速度慢(函数调用、重复计算)、容易导致栈溢出(函数调用层级多) 重复计算如下图所示:重复计算的问题可以用一个memory来解决,也就变成了top-down形式的动态规划为了减少函数调用,使用down-top形式的动态规划来解决一般只要能写出状态转换方程就可以写出down-top动态规划C

2022-11-13 15:27:57 180

原创 常用设计模式讲解(史上最简短)

这篇文章会简单粗暴地讲解一下常用设计模式,算是一个汇总,不会作详细地讲解系统设计从设计原则开始,在过程中会自然而然发现需要加入模式的地方。所有的原则都不是必须遵守的,要考虑全局进行舍取,常常要折中。所有的设计模式都是一种思想,即使在某种场合下没有办法实现常规的写法,但是用到它们的思想就可以了。尽可能保持设计的简单,只有真正需要模式时才使用,复杂度一般与灵活性正相关。使用设计模式的目的:在不改变设计好的运行框架的前提下,需增加功能是只需要额外添加一个类,然后就可以在系统运行时增加功能适配器模式能

2022-11-12 16:37:01 159

原创 算法题--旋转数组的最小数字

8要求时间限制:3秒 空间限制:32768K题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解题思路首先对数组进行观察,发现最小的那个数一定在两个子数组的交界处。并且左边的子数组一定比右边的子数组要大根据上面找到的性质,可以简单的想到顺序搜索,找出它们交界处即

2022-11-11 01:22:47 82

原创 番外篇--深扒C++函数

函数指针获取函数的地址:函数的名字就是地址函数指针声明与使用://函数原型double pam(int); //函数指针声明和赋值double (*pf)(int); //函数指针声明pf=pam; //函数指针赋值double (*pf)(int)=pam; //函数指针声明和赋值auto pf=pam; //使用C++11的自动类型推断来声明和赋值//使用pf(123);(*

2022-11-09 00:07:40 100

原创 可编程渲染管线(Scriptable Render Pipeline, SRP)

原文链接可编程渲染管线处理数据的流程可分为以下3大阶段1. 应用阶段这个阶段大概会由CPU处理4件事情。首先会对模型数据进行可见性判断。模型数据由顶点位置、法线方向、顶点颜色、纹理坐标等构成。然后会将模型数据加载到显存以提高读取速度。再为每个图元设置常数寄存器和渲染状态。最后为一个渲染图元列表调用DrawCall指令。图元可以是点、线、三角形。2. 几何阶段这个阶段由GPU进行处理,会对每一个需要渲染的图元进行逐顶点、逐多边形处理,最根本的任务是将顶点的模型坐标转换到屏幕空间。2.1 顶点着

2022-11-05 12:48:41 552

原创 工作多年之后回顾经典排序算法

原文链接排序都要做的事情是比较和交换稳定排序:排序前后,两个相等的元素在其序列中的前后位置顺序相同这里只有插入排序和归并排序是稳定排序以下示例均假设我们要从小到大进行排序选择排序非稳定排序排序效率和输入无关选择排序的基本步骤:先找出最小元素放到0号位置,再找出次小元素放到1号位置,再找出次次小元素放到2号位置,以此类推代码实现#ifndef __SELECTIONSORT_H__#define __SELECTIONSORT_H__class Selection{pub

2022-11-04 00:22:33 43

原创 算法题--用两个栈实现队列

7要求时间限制:1秒 空间限制:32768K题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型解题思路利用栈可以颠倒一个序列的顺序这个特性来思考像这类题目只要模拟一下就能找到答案:先加入一些元素,然后思考如何弹出你想要的元素,这样就解决了弹出的问题;再思考添加的问题这道题中,stack1用于入队,stack2用于出队,只是出队是要注意:要保证stack2不为空时才可以出队;如果它为空,就要先将stack1中所有元素弹出到stack2中,再从stack

2022-11-03 23:46:37 56

原创 算法题--重建二叉树

6要求时间限制:1秒 空间限制:32768K题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回解题思路解题的前提:两个序列中必须有一个中序序列前(后)序序列用于提供根节点,根节点就是序列第一个元素(最后一个元素)中序序列用于确定当前根节点的左右子树有哪些节点如下图所示:确定了左右子树有哪些元素之后

2022-11-03 00:19:53 61

原创 算法题--从尾到头打印链表

5要求时间限制:1秒 空间限制:32768K题目描述输入一个链表,从尾到头打印链表每个节点的值解题思路链表必须要从头开始访问,如果需要将打印顺序颠倒,可以利用栈的特性。有时候方法就是这么简单 - -如果想展示你的算法能力,可以写成递归--深度优先搜索代码/*struct ListNode{ int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {}};*/class Solut

2022-11-02 23:52:43 56

原创 算法题--替换空格

4要求时间限制:1秒 空间限制:32768K 题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.解题思路拿到题目之后,一般会首先想到从头开始扫描这个字符串,遇到空格就将后面所有的字符都向后移动两格,再插入%20。虽然这个办法可行,但是时间复杂度为O(n^2),每一个字符都会有多次移动现在希望每个字符只移动一次。我们要用两个指针P1和P2,P1指向字符串的最后一个字符'\0&#

2022-11-02 23:03:48 55

原创 算法题--替换空格

4要求时间限制:1秒 空间限制:32768K 题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.解题思路拿到题目之后,一般会首先想到从头开始扫描这个字符串,遇到空格就将后面所有的字符都向后移动两格,再插入%20。虽然这个办法可行,但是时间复杂度为O(n^2),每一个字符都会有多次移动现在希望每个字符只移动一次。我们要用两个指针P1和P2,P1指向字符串的最后一个字符'\0&#

2022-11-02 23:02:51 44

原创 漫谈Entity-Component-System

原文链接简介 对于很多人来说,ECS只是一个可以提升性能的架构,但是我觉得ECS更强大的地方在于可以降低代码复杂度。 在游戏项目开发的过程中,一般会使用OOP的设计方式让GameObject处理自身的业务,然后框架去管理GameObject的集合。但是使用OOP的思想进行框架设计的难点在于一开始就要构建出一个清晰类层次结构。而且在开发过程中需要改动类层次结构的可能性非常大,越到开发后期对类层次结构的改动就会越困难。 经过一段时间的开发,总会在某个时间点开始引入多重继承。实现一个又可工作、又易理

2022-10-29 20:12:03 1487

原创 游戏动画技术简介

动画系统是游戏中对表现力影响最大的系统之一,经过一段时间的调研,最后通过这篇文章总结下游戏动画系统。精灵动画系统 精灵动画系统在早年间计算机性能还比较差的时候被广泛运用,一般作为游戏的背景而存在,比如 这些人物都是一个四边形,游戏引擎会给四边形连续贴上纹理贴图来产生动感。通常为了不暴露这是个扁的四边形,会使这些四边形一直面向摄像机。比如 这类动画系统在早期游戏中盛行,因为当时的计算机性能不够,而该系统对计算机资源的消耗非常低。现在部分手游依然会保留这类动画系统,因为手机性

2022-10-29 18:51:03 730

原创 游戏引擎 1.概述

起因:帮自己系统总结一下这些年来学到的内容。本来想等沉淀到更多内容再输出,但是人的欲望是无限的,不知道沉淀到什么时候是个头。”沉淀更多内容“说不定只是我潜意识里逃避总结输出这个行为的一个借口。那不如就现在开始写吧,学到了新内容再补充进来。于是就有了这个系列。  该系列文章主要面向完全没有引擎基础,但具备一定编程基础的同学。讲解的内容不会展开太深入,只希望读者可以对游戏引擎中的技术有一个基本的理解。如果大家对其中的某些内容感兴趣,可以评论留言。我会根据大家的期望,力所能及地展开讲解。简.

2021-12-23 21:00:00 1943

原创 GDC 2019 “战神” 战斗模式的全新变革 下篇

该GDC分享只免费公开PPT,视频需要GDC VAULT会员分享的PPT下载地址:Evolving Combat in 'God of War' for a New Perspective没有梯子的可以到这里下载:https://pan.baidu.com/s/1a1FGedhthon0yK7BTnlVbQ 提取码:6kjs演讲者:Mihir Sheth(圣莫尼卡工作室首席战斗设计师)辅助问答:Jeet Shroff(游戏总监和前游戏工程主管)瞄准敌人(Targeting Enemies)帮助玩家攻击他们想

2021-10-07 19:15:00 543

原创 GDC 2019 “战神” 战斗模式的全新变革 上篇

该GDC分享只免费公开PPT,视频需要GDC VAULT会员分享的PPT下载地址:Evolving Combat in 'God of War' for a New Perspective没有梯子的可以到这里下载:https://pan.baidu.com/s/1a1FGedhthon0yK7BTnlVbQ 提取码:6kjs演讲者:Mihir Sheth(圣莫尼卡工作室首席战斗设计师)辅助问答:Jeet Shroff(游戏总监和前游戏工程主管)战神的新旧更替《战神》是⼀个第三人称动作冒险游戏,玩家扮演斯巴达

2021-09-30 18:00:00 195

原创 游戏工程师成长(四) 做事情的4层境界,你达到了哪一层

在工作过程中,做事情分为以下4个境界,分别是做了、做完、做好、做对,难度和耗时都依次递增。第一层境界--做了:被动执行,不关注结果处于这个阶段的研发,别人说什么就做什么,不会为这项任务做整体的考虑。这类人大致可以分为以下几种:第一种人没追求的,得过且过,只是想在公司混混日子。他们会觉得事情只要能够完成就好,至于最终效果怎么样,跟他们没有关系。这类人很难拯救,因为他们根本不想成长。第二种人有追求,但是没有意识到需要把事情做到更好,他们以为只要完成了任务就已经是完满完成任务了,上头就已经很满意了。这类人还是可以

2021-09-25 13:22:09 197

原创 游戏工程师成长(二) 积极主动

人手永远是不够的,事情是永远做不完的很多人会以为任务都只能被安排,这可能跟一直以来项目进度都比较赶有关。每个任务都是由上头派发下来的,久而久之就会以为只能被动接受任务。但是其实是可以主动去找事情做的的。人手永远是不够的,事情永远是做不完的,如果有自己想做的事情,不要想着等忙完当前的任务,我就去做。这样可能永远也等不到,因为任务会一个接着一个来,可以早点去请求自己想要的任务,或者自己创造任务(不是说去搞个问题出来,而是去发现问题,提出问题)反正都是要打工,不如自己去找点有意思的事情做,这样起码死也要死在自己手

2021-09-16 23:21:48 63

原创 工程师成长(一) 初入游戏公司

准备进入游戏公司工作对于每一个热爱游戏的人来说都是一件令人兴奋的事情,但因为陌生会伴随着不安。本文简单记录一下当年初入职场时的感受以及遇到的各种问题。适应刚刚进入职场的新人在前两个月主要做的事情是适应新环境、工作节奏和氛围。对于部分新人来说,他可能是从其他城市来到当前这个陌生的城市。需要适应的环境不仅仅是公司的环境,包括生活的环境,例如气候,我刚刚来到杭州的时候正好是最冷的时候,作为一个在广东长大的孩子,感觉难以承受。如果之前都是在学校敲代码,没有感受过真实生产环境下敲代码。或者之前以实习的身份来敲代码,现

2021-09-11 11:20:26 113

原创 GUI开发那点事

 每个项目组的GUI开发流程都不太相同。有些项目组的流程非常落后,基本没有框架设计,都是直接代码设置UI控件,不利于迭代。做的比较好的会采用MVC相关模式进行设计,下面也只讲使用了MVC的工作流程。C由客户端同学负责实现。V由GUI同学进行制作。M和V的连接工作在理想的情况下应该也是由GUI同学进行设置,但是因为上手有些难度,没有很好地落地,所以这块最终由客户端同学进行设置。  总体来看,GUI开发流程分为以下几个阶段。 策划会先提出界面需求,客户端程序需要认真阅读需求文档,确

2021-06-29 01:50:52 143

原创 技术美术的职责

何为技术美术 技术美术(Technical Artist, TA)主要职责是作为美术师和程序员之间沟通合作的桥梁。因此TA需要同时兼备编码能力和美术能力,门槛较高,所以身价一般也比较高。前段时间原神的大火,进一步提升了TA的身价。TA是一个复合型工种,所以不同TA的能力侧重点会不一样。TA大致可以再细分为两种类型。一种偏向技术,驻扎在游戏引擎组。一种偏向美术,驻扎在美术支持组。 其实还可以继续细分的。比如效果TA,主要负责实现具体的美术效果,比如人物描边、火焰效果、水流效果、运动模糊。还

2021-06-24 11:27:24 1302 1

原创 HeadFirst设计模式(中文第一版) pdf

链接:https://pan.baidu.com/s/1mRoHav9V323_QpqTDd2AVQ提取码:ng9a

2020-02-12 10:42:37 648 1

空空如也

c++中memset的使用问题

2016-11-16

C++函数继承调用的问题

2016-10-10

c++中有关new的问题!!!

2016-02-16

问个小问题:纯虚函数一定是虚函数吗??

2016-02-02

c++中的编译顺序问题!!!

2015-11-20

c++中显式实例化的问题?

2015-11-14

c++中的显示具体化有什么用的?

2015-11-14

c二维数组名与指针的指针之间的关系

2015-10-30

c++中用vs2013时strcpy_s的问题

2015-10-21

c++中 enum {one,two} 中的one算是常量还是常变量???

2015-10-17

c++中getline的问题 求教

2015-10-16

c中的getch和getchar有什么区别吗?

2015-10-08

c中有关文件读取的问题

2015-10-04

c中有关函数调用先后的问题

2015-10-01

计算机对内存的管理方式问题

2015-10-01

浮点数是用什么进行运算的????

2015-09-21

c中指向一位数组的指针变量问题

2015-09-20

c++关于浮点数的问题!

2015-09-13

请大神们看看这段c++的代码!

2015-09-13

c++中'\n'和'\r'有什么区别吗

2015-09-12

c++中的'\n'和endl有什么区别吗?

2015-09-09

windows中的游戏移植到ps4这类游戏机是怎么实现的

2015-09-08

c++ int类型长度选择问题

2015-09-08

一个字节的位数由谁来决定???

2015-09-06

c++中的“实现”指的是什么

2015-09-06

c语言中的“Enter”键功能,求大神

2015-09-06

c语言的scanf在按下“Enter”键后到底发生了什么事情??

2015-09-04

怎么理解:c++不允许讲函数定义嵌套在另一函数定义中

2015-09-02

c中不同类型指针之间的转换

2015-09-02

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

TA关注的人

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