自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode题库学习系列——LC岛屿数量

原题地址:https://leetcode-cn.com/leetbook/read/queue-stack/kbcqv/该题是位于,队列、广度优先搜索的学习下的题。原题如下:给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:grid = [[“1”,“1”,“1”,“1”,“0”],[“1”,“1”,“0”,“1”,

2021-07-14 21:16:44 201

翻译 UE4实时渲染——几何结构渲染三

上一节:UE4实时渲染——几何结构渲染二这一节讲一下着色器Shader中的Vertex Shaders顶点着色器。着色器Shader着色器shader是一个在渲染中很常见的概念,可以这样简单的认为:着色器的代码,它的功能就是输入一组数据,使用它运算后,输出另一组数据。着色器shaders的分类有许多:顶点着色器Vertex Shader、像素着色器Pixel Shader、片段着色器Fragment Shader、域着色器Domain Shder等。着色器非常高效,我们之所以使用着色器系统,是因为

2021-07-14 08:58:22 505

翻译 UE4实时渲染——几何结构渲染二

上一节我们探讨了绘制调用drawcall的概述,以及对性能的影响。现在让我们看一下绘制调用drawcall在场景中可视化展现出来。使用RenderDoc插件,开启使用后,貌似要重启一下UE4才可以使用,这样做好,这里会多出一个小按钮。点击按钮后,会将当前场景捕捉到RenderDoc中,通常要5-10秒的等待时间,然后出现这样的画面,这是一个可以免费下载的程序:中间是编辑器输出的帧画面,你可以输出多个帧画面,然后双击帧画面,就会出现许多关于该帧画面的标签页,如果点击“渲染管线状态(Pipelin

2021-07-12 21:49:49 1068

原创 二叉树的层序遍历

class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> ret = new ArrayList<List<Integer>>(); if (root == null) { return ret; } Queue&l

2021-07-08 17:30:00 88

翻译 UE4实时渲染——几何结构渲染一

上一节:UE4实时渲染——渲染前和遮挡上一节Draw线程准备好了一些对象,这些对象是当前一帧对象我们可见的,现在我们要使用GPU线程逐对象来渲染了。首先我们要考虑的,就是渲染对象的顺序,我们不能单纯的像粉刷墙画那样,先刷上一层背景,再刷上面的图案,这会导致图案和背景重叠的部分,会重复绘制2次,如果在N多个对象的场景中,这种绘制无疑是性能的浪费。我们的办法是依靠前期的深度(Z)通道,做一个深度测试,当渲染几何体时,他会先做一次预通道,确定下来其中一些像素点的值会被另一个模型的像素所覆盖,所以在渲染背景时

2021-07-04 13:06:24 986

原创 Java中的ArrayList的sort排序如何记忆

https://zhuanlan.zhihu.com/p/54004622借鉴这篇文章ArrayList<Integer> integers = new ArrayList<>();integers.sort(new Comparator<Integer>() { @Override public int compare(Integer integer, Integer t1) { return integer-t1; }});

2021-07-03 20:16:49 240

翻译 UE4实时渲染——渲染前和遮挡

CPU线程:在交给GPU渲染之前,CPU会进行大量的计算,主要计算包括:1、动画2、模型和对象的位置3、物理效果4、人工智能5、对象的生成和销毁、显示或隐藏但这里不多介绍这些,因为这个系列是介绍实时渲染,而不是幕后的具体逻辑运算。Draw线程:CPU计算后,我们得到了所有对象和模型的位置,以及所有我们想要在CPU运算出来的信息,但这还不能进行渲染,因为我们不可能把所有的信息都渲染出来,这样性能是吃不消的,我们必须有选择的把必要信息渲染出来即可,那么这里就用到了一个Draw的线程(主要由CP

2021-07-03 12:06:18 2107

原创 leetcode题库学习系列——LCP 07. 传递信息

原题地址:https://leetcode-cn.com/problems/chuan-di-xin-xi/原题如下:小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。传信息的关系是单向的(比如 A 可以向 B 传信息,但 B 不能向 A 传信息)。每轮信息必须需要传递给另一个人,且信息可重复经过同一个人给定总玩家数 n,以及按 [玩家编号,对应

2021-07-02 10:48:40 174

原创 leetcode题库学习系列——168. Excel表列名称

原题地址:https://leetcode-cn.com/problems/excel-sheet-column-title/原题如下:给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。例如:A -> 1B -> 2C -> 3…Z -> 26AA -> 27AB -> 28…示例 1:输入:columnNumber = 1输出:“A”示例 2:输入:columnNumber = 28输出:“AB”示

2021-06-29 23:20:00 144 1

原创 C++工程项目中常见的写法与解释——多种状态值的混合(按位处理)篇

一般来说,对于一个类而言,其状态的表达形式有很多,比如使用enum枚举enum CLASS_STATUS{status1=0,status2=1,status3=2}但假如这个类有多种状态,使用多个enum枚举状态值,效率往往没有按位计算来的更高。假如有一个类,animal动物,有行动状态(飞,走,游),有身形状态(大,中,小),有颜色状态(红,白,蓝),我们可以这样设定:#define animal_action_status_fly 0x00000001#define animal_

2021-06-29 16:34:30 399 1

翻译 UE4实时渲染需要注意的点——RTR(Real Time Rendering)

1、性能与质量这是一幅关于性能与质量的表达图示,需要指出的是,只要有渲染,性能是必定会受影响的。而好的渲染和糟糕的渲染之区别在于,取舍的平衡。一般的TargetFramerate,假设为30FPS,在我们的渲染已经无限接近30FPS的情况时,我们应该在保持这个帧率的前提下,尽可能的将渲染质量提高;或者换种说法,在我们追求高品质渲染的同时,将帧率维持在我们需要的目标帧率。同时,如果渲染到一定阶段的时候,帧率确实已经达到目标帧率,如30FPS了,那么此时就没有必要花费精力在,把帧率提升到60FPS这

2021-06-28 22:36:25 1156

原创 AndroidStudio基于JniInterface.java快速创建jni头文件

javahNDK-classpath . -jni -encoding $FileEncoding$ -d $ModuleFileDir$/src/main/cpp $FileClass$$ModuleFileDir$\src\main\javaJniInterface.java提前放好想要创建的jni接口也提前写好右键点击这里,就会在cpp目录下生成jni_JniInterface.h了...

2021-06-24 15:14:17 106

原创 C++工程项目中常见的写法与解释——类的前向声明(class XXX;)篇

一个类A调用另一个类B的方法有很多,详见:https://blog.csdn.net/qq_35721743/article/details/83592415这里记录一下,项目中常用但可能会被忽略的方法:类的前向声明看名字也知道,这是一种类的声明,只声明不实现的话,是没办法获取内部内容的。比如这样://A.cpp/A.h中class A{ public: A(); ~A(); public: void get();}//B.cpp/B.h中,如果不#include "A"

2021-06-24 14:40:24 730

原创 C++工程项目中常见的写法与解释——(extern “C“)篇

#ifdef __cplusplus extern "C"{#endif //代码#ifdef __cplusplus }#endif这部分代码,也是C++项目工程中常见的,用于C++代码与C代码互相调用时。常写于头文件中。分为两部分功能:第一部分功能,关于"__cplusplus",这是C++保留的宏定义,如果当前的头文件是*.cpp文件的头文件,那么在编译时会自动加上该宏。第二部分功能,关于extern “C”,在头文件中,使用该标记的函数或变量,将以C语言方式编译和连接。

2021-06-24 13:20:52 233

原创 C++工程项目中常见的写法与解释——typedef篇

typedef篇介绍三种工程项目常用的用法用法1、类型别名常用于定义句柄类型、返回值类型等快捷方式类型。易于理解含义和方便的类型别名。如,定义接口时,大量供其他人调用的接口中,返回值均为long,如果直接这样写:long interface1();long interface2();固然可以,但别人作为调用者,在不知情的情况下是不知道long会返回出什么值的。此时我们可以这样定义:typedef long RESULT;RESULT interface1();RESULT interf

2021-06-24 11:17:40 219

原创 关于程序设计相关知识的学习

学习代码是一个持久战,是一个长期的事情。计算机技术的更迭速度,是当今世界上更迭速度较快的事物之一。时刻保持学习的心态,不仅是对自己的技术成长有良好的帮助,也是对世界的技术更迭献以绵薄之力,当然,就职的公司也很希望你这样做。有些人对程序设计有较好的天赋,但大多数人像我一样,是个程序设计的普通人。一项技术的门外汉,要进门,就要对该项技术或方向,有着较好的兴趣,就算是少量的兴趣,如果在学习的过程中逐渐建立起尽可能多的兴趣,那也是好的。兴趣是最好的老师。入门,不妨从结果入手,先在控制台上,输出“Hello W

2021-06-23 09:22:35 121

原创 AndroidStudio如何使用Address Sanitizer(ASan)检测内存错误

Google原文:https://developer.android.com/ndk/guides/asan#cmake当使用VisualStudio编译cpp代码时,有一键选择编出ASan版本从而检测内存错误的功能。但AndroidStudio用到NDK时,从API27开始才支持ASan检测。在AS中使用ASan需要注意的是,ASan的CPU开销约为2倍,代码大小开销在50%到2倍之间,并且内存开销很大,约为2倍。官方建议对于64位ARM(一般现在的设备都是这个了),建议使用HWAddress S

2021-06-16 14:30:08 3044 3

原创 Android ABI(Application Binary Interface)

不同的Android设备使用不同的CPU,而不同的CPU支持不同的指令集。CPU与指令集的每种组合都有专属的应用二进制接口,也就是Application Binary Interface(ABI)。ABI接口,包含以下几个内容:1、可使用的CPU指令集,以及扩展指令集。2、运行时内存存储和加载的字节顺序,(Android一直都是little-endian,也就是小字节序或叫低字节序,小字节序意思就是,低位字节排在内存低地址端,高位字节排在内存高地址端。与之对应的是大字节序或叫高字节序,即高位字节排在

2021-06-16 10:58:08 209

原创 MSVC相关问题记录

MSVC是微软的VC运行库,减少编码量,提高兼容性。在该篇文章中https://devblogs.microsoft.com/cppblog/address-sanitizer-for-msvc-now-generally-available/Address Sanitizer for MSVC Now Generally AvailableWe’re thrilled to announce that as of Visual Studio 2019 version 16.9, the C++

2021-06-15 09:55:12 139

原创 再回CSDN

再回CSDN感想真的是大变样,功能齐全,编辑界面简洁,预览界面简约……这几年一直在用为知笔记,少了些分享和讨论问题的乐趣,最近打算回归,不多说了,共勉!步步为营,稳扎稳打。戒骄戒躁,不气不馁。屡败屡战,越战越勇。——座右铭...

2020-12-08 22:01:07 50

空空如也

空空如也

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

TA关注的人

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