键盘春秋
码龄15年
关注
提问 私信
  • 博客:205,575
    205,575
    总访问量
  • 41
    原创
  • 1,738,027
    排名
  • 127
    粉丝
  • 0
    铁粉

个人简介:键盘论王侯,数据写春秋~~~

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2010-06-20
博客简介:

键盘春秋的博客

查看详细资料
个人成就
  • 获得108次点赞
  • 内容获得75次评论
  • 获得306次收藏
  • 代码片获得152次分享
创作历程
  • 1篇
    2018年
  • 49篇
    2016年
成就勋章
TA的专栏
  • 技术之外
    1篇
  • C#
    7篇
  • C++
    10篇
  • Unity3D
    6篇
  • 数据结构和算法
    2篇
  • OpenGL
    24篇
  • 工具
    1篇
  • Python
    1篇
兴趣领域 设置
  • 用户体验设计
    交互
创作活动更多

仓颉编程语言体验有奖征文

仓颉编程语言官网已上线,提供版本下载、在线运行、文档体验等功能。为鼓励更多开发者探索仓颉编程语言,现诚邀各位开发者通过官网在线体验/下载使用,参与仓颉体验有奖征文活动。

368人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

强大易用的Excel转Json工具

好久没更新了,最近配置json文件的时候发现以前用的excel转json转换器不好用了,上网找了几个都不能满足需求,于是自己用python写了一个。工具不复杂,使用简单,但能满足几乎所有excel转json的要求了,包括多层嵌套,每一层定制为列表或者字典的输出格式,复杂单元格的定制。转载请注明出处:https://blog.csdn.net/ylbs110/article/details/506...
原创
发布博客 2018.09.18 ·
21764 阅读 ·
5 点赞 ·
9 评论 ·
31 收藏

Unity设计模式:观察者模式

初学编程的时候内容比较少没有数据交互,等内容多到需要多个文件多个类协同运行的时候就涉及到类之间的数据交互了。比较简单的数据交互是这些类之间互相引用,直接或间接传值或调用,但是这样类之间的耦合性太高了,如果项目复杂且经常变动,类之间的引用关系可能会让开发人员陷入一团乱麻无法下手。尤其是有些不同模块不同人开发,互相之间需要相应事件的时候…… 这种情况下就需要观察者模式了。 顾名思义,观察者模式就是设
原创
发布博客 2016.12.31 ·
2280 阅读 ·
0 点赞 ·
2 评论 ·
0 收藏

Unity设计模式:享元模式

游戏中经常需要用到大量只是参数(比如坐标,旋转角,尺寸,颜色等)有些不同的重复物体,如植物,子弹,粒子等。如果数量非常多,在一个场景中逐一绘制这些对象将会消耗大量的性能。在学习OpenGL的时候我们知道有个实例化的方式,可以在一瞬间绘制数十万个仅仅位置不同的同一个对象而且并不会对GPU造成很高的负担,在实际开发中怎么使用这个方法来提升性能呢?享元模式可以做到这一点。享元模式的基本思路尽量少向GPU发
原创
发布博客 2016.12.24 ·
1830 阅读 ·
1 点赞 ·
2 评论 ·
3 收藏

Unity设计模式:命令模式

最近读了《游戏编程模式》,受到很多启发。虽然之前也读过设计模式的书,但是基本看过就忘了,实际开发中也很难和它们建立联系。这本书从实际应用出发讲解了游戏开发中常用的设计模式,很适合有一定开发经验但是不太会用设计模式的开发者。 为了学以致用,我在Unity中将几种基本的设计模式实现出来了,下面从第一个设计模式命令模式开始。1. 定义书中的定义是:命令就是面向对象化的回调。 好像还是有些抽象。简单来说
原创
发布博客 2016.12.17 ·
4096 阅读 ·
3 点赞 ·
1 评论 ·
13 收藏

UnityShader:选择Pass渲染通道

上一篇博客讲了MRT多重渲染,这篇接着学习通过一个shader输出不同效果的另一种方法——指定不同的渲染通道。渲染通道在unity Shader中就是SubShader中的Pass。之前的shader中都只有一个Pass,也就是单通道渲染,这样的话如果要对同一个RenderTexture在不同的时刻进行不同的渲染效果输出就需要不停的更换shader。当然,也可以使用多重渲染,但是如果一次只用一个效果
原创
发布博客 2016.12.10 ·
19234 阅读 ·
7 点赞 ·
2 评论 ·
29 收藏

UnityShader:MRT多重渲染

UnityShader:深度图获取,屏幕后期处理特效 中学习了如何使用unityshader处理摄像机画面,这次来看看多重渲染的使用。 有时候我们想同时获得一个画面的不同后期效果:比如需要同时显示深度图,RGB,像素化等,但是又不想进行多次处理浪费性能,这时候我们就需要多重渲染技术了,通过多重渲染技术,只需要一次就可以将我们想要处理的画面处理成我们需要的多种效果并输出。一、 多重渲染shader
原创
发布博客 2016.12.04 ·
12875 阅读 ·
15 点赞 ·
1 评论 ·
39 收藏

UnityShader:摄像机深度图获取,屏幕分割,变形

最近由于公司业务需要,需要输出深度图,并且游戏最终画面效果要同时输出RGB图和深度图,并分别占据屏幕不同的比例。之前公司同事的做法是用一个相机获取RGB,另一个相机获取深度图(需要用shader对画面进行后期处理),然后相机在屏幕显示比例不同达到最终要求。效果是可行的,但是总感觉很别扭,过于复杂。实际上shader能够输出深度图,本身又有RGB数据,理论上可以用算法一次输出最终分割效果,试了试果然成
原创
发布博客 2016.11.27 ·
13892 阅读 ·
7 点赞 ·
7 评论 ·
43 收藏

(译)LearnOpenGL实际案例Breakout(十二):渲染文本

英文原文 在这篇教程的最后我们通过添加一个生命值系统来作为最后一个系统,一个胜利条件和来自文本渲染的反馈。这个教程严重依赖于之前介绍的文本渲染教程,因此如果你没准备好,非常建议你从那篇教程开始。 在Breakout中所有文本渲染脚本被封装到TextRenderer类中,它的特性基于FreeType库的渲染特性和真实的渲染代码。你能在这里找到TextRenderer类: TextRenderer
翻译
发布博客 2016.11.20 ·
1329 阅读 ·
1 点赞 ·
2 评论 ·
0 收藏

(译)LearnOpenGL实际案例Breakout(十一):音频

英文原文 无论我们多么努力的打造游戏的内容我们很可能不会从游戏中听到任何声音;我们有如此多的内容来显示,但是没有音频游戏仍然感觉有一些单薄。在这个教程中我们将会改善它。 OpenGL不提供给我们任何支持音频的能力(和其他游戏开发相似)。我们必须手动加载音频文件为比特流,处理并且转换他们为音频流并且管理多个音频流方便在我们的游戏中使用。这有一些难懂并且需要一些音频工程的基础知识。 如果从几个音频
翻译
发布博客 2016.11.13 ·
992 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(译)LearnOpenGL实际案例Breakout(十):能量块

英文原文 Breakout已经接近尾声了,但是它仍然可以通过添加一个额外的游戏内容来变得更酷,这样它就不是普通的Breakout的翻版;能量块怎么样? 这个主意就是无论何时砖块被销毁,这个砖块会有一个小概率产生一个能量块。这样一个块将会缓慢落到底部并且如果它碰撞玩家挡板,一个基于能量块类型的有趣的效果将会产生。例如,一个能量块让挡板更大,另一个能量块允许小球穿透物体。我们还有几个负面能量块来对玩
翻译
发布博客 2016.11.06 ·
1079 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

(译)LearnOpenGL实际案例Breakout(九):后期处理

英文原文 如果我们能够在Breakout游戏中加一点后期图形特效会更有趣吗?我们能够创建一些模糊晃动效果,反转场景中所有的颜色,实现一些疯狂的顶点偏移和/或做一些能想到的其他的和帧缓存有关的有趣的效果。 在帧缓存教程中我们演示了如何通过后期效果仅仅使用一个简单的贴图来实现有趣的效果。在Breakout中我们准备做一些类似的事情:我们准备从多个样本渲染缓存对象中创建一个帧缓存对象来作为他的颜色附件
翻译
发布博客 2016.10.30 ·
975 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

(译)LearnOpenGL实际案例Breakout(八):粒子

英文原文一个微粒,从OpenGL的角度看就是一个总是面向摄像机方向且(通常)包含一个大部分区域是透明的纹理的小四边形.一个微粒本身主要就是一个精灵(sprite),前面我们已经早就使用过了,但是当你把成千上万个这些微粒放在一起的时候,就可以创造出令人疯狂的效果. 当处理这些微粒的时候,通常是由一个叫做粒子发射器或粒子生成器的东西完成的,从这个地方,持续不断的产生新的微粒并且旧的微粒随着时间逐渐消亡
翻译
发布博客 2016.10.23 ·
1032 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

(译)LearnOpenGL实际案例Breakout(七):碰撞反馈

英文原文1. 碰撞反馈在教程的最后我们有一个运行的碰撞检测方案。然而,小球在碰撞检测中仍然没有任何反馈;它仅仅直接穿透了所有的砖块。我们想要小球在碰撞砖块时防水功能反弹。这个教程讨论了在AABB和圆形碰撞检测之间的碰撞反馈算法。 无论什么时候发生碰撞,我们需要发生两件事:我们需要重置小球这样它就不再进入其他对象,我们想要改变小球的方向和速度这样它看起来被对象弹开了。碰撞重定位将小球对象放置在在碰
翻译
发布博客 2016.10.16 ·
2209 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

(译)LearnOpenGL实际案例Breakout(六):碰撞检测

英文原文当尝试检测碰撞是否在两个对象之间发生的时候,我们通常不使用对象自己的数据除非这个对象很复杂;这反过来让碰撞检测变得复杂。出于这个原因,我们通常练习的时候更多的使用简单的形状(常常有很好的数学上的定义)覆盖在原始对象上方来碰撞检测。然后我们基于这些简单的形状来让我们的代码更简单并且省下很多性能。这样的一些例子是圆形,球星,三角形和方形;这些用起来比有上百个三角形的网格简单。 当他们给我们更加
翻译
发布博客 2016.10.08 ·
3347 阅读 ·
0 点赞 ·
1 评论 ·
3 收藏

(译)LearnOpenGL实际案例Breakout(五):小球

英文原文现在我们有一个砖块的关卡和一个可移动的玩家挡板。和经典Breakout唯一缺失的是小球。目标是让小球碰撞所有的砖块直到每一个可破坏的砖块被破坏,但是这有一个条件是小球不能触碰屏幕的底部边缘。 撇开一般的游戏组件对象,一个小球有一个半径和一个标识出小球是卡在挡板上还是可以自由移动的额外的bool值。当游戏开始,小球最初被卡在玩家挡板上直到玩家按下任意键开始游戏。 因为小球是有一些额外特性的
翻译
发布博客 2016.10.02 ·
1113 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

(译)LearnOpenGL实际案例Breakout(四):关卡

之前一直更新的实际上是LearnOpenGL的笔记,说起来没什么价值,还不如直接去看原文 LearnOpenGL英文版最后有一个实际小游戏打砖块,中文部分只翻译了部分内容。为了更好的学习,我将剩下的部分翻译出来,英语水平一般,仅供参考。 英文链接 以下是翻译部分:不幸的是Breakout并不仅仅是一个绿色笑脸,还包含了有一大堆好玩的彩色砖块的完整关卡。我们想要这些关卡变得灵活多样这样他们就能够
翻译
发布博客 2016.09.25 ·
1302 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

LearnOpenGL学习笔记9:材质

一、 材质通过为每个元素指定一个颜色,我们已经对物体的颜色输出有了精密的控制。现在把一个镜面高光元素添加到这三个颜色里,这是我们需要的所有材质属性:#version 330 corestruct Material{ vec3 ambient; vec3 diffuse; vec3 specular; float shininess;};uniform Mat
原创
发布博客 2016.09.17 ·
2116 阅读 ·
0 点赞 ·
0 评论 ·
7 收藏

LearnOpenGL学习笔记8:光照基础

一、 颜色当我们把光源的颜色与物体的颜色相乘,所得到的就是这个物体所反射该光源的颜色(也就是我们感知到的颜色)。二、 光照基础光照模型都是基于我们对光的物理特性的理解。其中一个模型被称为冯氏光照模型(Phong Lighting Model)。冯氏光照模型的主要结构由3个元素组成:环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。这些光照元素看起来像下面这样:
原创
发布博客 2016.09.11 ·
822 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

LearnOpenGL学习笔记7:摄像机

一、 摄像机1. 摄像机/观察空间定义一个摄像机,我们需要一个摄像机在世界空间中的位置、观察的方向、一个指向它的右测的向量以及一个指向它上方的向量。 摄像机的位置 获取摄像机位置很简单。摄像机位置简单来说就是世界空间中代表摄像机位置的向量。我们把摄像机位置设置为前面教程中的那个相同的位置:glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f);摄像机
原创
发布博客 2016.09.11 ·
1423 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

LearnOpenGL学习笔记6:坐标

一、 坐标系统将坐标转换为标准化设备坐标,接着再转化为屏幕坐标的过程通常是分步,也就是类似于流水线那样子,实现的,在流水线里面我们在将对象转换到屏幕空间之前会先将其转换到多个坐标系统(Coordinate System)。将对象的坐标转换到几个过渡坐标系(Intermediate Coordinate System)的优点在于,在这些特定的坐标系统中进行一些操作或运算更加方便和容易,这一点很快将会
原创
发布博客 2016.08.28 ·
1130 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏
加载更多