自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 资源 (8)
  • 收藏
  • 关注

翻译 C++核心指南-中文版本-(翻译持续更新中)

“在c++内部是一种更小、更简单、更安全的语言。”– 本贾尼·斯特劳斯特卢普C++核心指南 像C++一样是在本贾尼·斯特劳斯特卢普的领导下共同努力的成果,也是是多个组织进行多年讨论和设计的成果。它们的设计鼓励通用性和广泛采用,但是可以自由地复制和修改它们,以满足组织的需要。开始这些指南可以在CppCoreGuidelines中找到,该文档使用GH风格的MarkDown。该指南刻意保持...

2019-05-24 19:25:28 2737 1

原创 MacOS 玩转C++17

距离C++17发布已经半年有余,由于编译环境的问题一直无法体验到C++17的编程乐趣,趁着Mac系统更新,抢先体验一下C++17的强大之处。1. 关联式容器遍历新方式      &

2018-07-06 11:32:21 2484

翻译 [实时渲染] 3.2 可编程着色阶段

现代着色阶段(着色模型4.0,Vista上Directx 10以及更新版)使用通用着色器核心(common-shader core),这是说顶点,像素和几何着色器共享一个编程模型。本书中我们将来区分应用程序开发者可见的通用着色器核心和统一着色器,一种将所有都映射到相同该核心的GPU架构,见18.4节。通用着色器核心是一种API,统一着色器是一种GPU特性,早期的GPU的顶点和像素着色器含有极少的共

2017-11-07 12:12:34 692

翻译 [实时渲染] 3.1 GPU管线综述

第二章介绍了GPU实现的几何与光栅化概念上的管线阶段,被分为几个不同程度配置性或编程性的硬件阶段。图3.3展示了根据可配置性和可编程性进行颜色分类的几个阶段。注意到这几个被分割的物理阶段与第二章讲的功能阶段有轻微的不同。     顶点着色器是完全可编程的阶段,通常用于实现模型视图变换,顶点着色以及投影(一个功能阶段)。几何着色器是一个可选的完全可编程的阶段来处理图元(点,线和三

2017-11-07 12:08:16 503

翻译 [实时渲染] 3. 图形处理单元-GPU

“显示就是计算机”- 黄仁勋     历史上,硬件图形加速开始于管线的尾端,最初用于执行三角形扫描线的光栅化,后续代的硬件工作从管线的尾端到更前端的应用程序阶段的算法都被提交给硬件加速器,这意味着硬件相较于软件的优势仅仅是速度,但速度是非常重要的。     过去的几十年里,图形硬件经历了不可置信的变化,第一块消费级的带有硬件顶点处理的图形芯片(NVIDIA的GeForce256)发

2017-11-07 12:07:11 647

原创 [unity3d] 模型XRay效果实现

XRay效果常常用来显示被墙体及其它物体遮挡的物体的轮廓。算法原理:使用两个Pass对人物进行绘制,其它第一个Pass正常对人物进行绘制,第二个pass使用半透明模式根据Z-Test绘制被遮挡的部分。引擎对不透明物体(Opaque)和半透明物体进行分开绘制,并且一定是先绘制Opaque物体,然后再绘制半透明物体,所以可以在第二Pas

2017-09-17 15:37:03 3078

翻译 [实时渲染] 2.5 回顾渲染管线

点,线和三角形是组成模型和物体的渲染图元,想像应用是一个交互的计算机辅助设计(CAD)应用,用户正在检查一个手机的设计,我们将要跟随这个模型通过整个图形渲染管理,这包含3个主要阶段:应该程序,几何以及光栅化阶段,场景被透视地渲染到屏幕的窗口上。在这个简单的例子中,手机模型包含线(来显示部件的边缘)和三角形(来显示表面),某些三角形被二维图片进行贴图来呈现键盘和屏幕。在这个例子中,着色完全发生在几何

2016-04-10 22:15:43 836

翻译 [实时渲染] 2.4 光栅化阶段

给定变换和投影过的顶点以及相关的着色数据(来自几何阶段),光栅化阶段的目的是计算并设置被物体覆盖的像素的颜色,该过程也称为光栅化或扫描转换(scan conversion),是将屏幕空间带z值(深度值)的二维顶点及其相关的各种着色信息转换到屏幕上的像素。     如几何阶段相似,该阶段也被分成几个功能阶段:三角形设置,三角形遍历,像素着色,混合,如图2.8所示。2.

2016-04-10 22:14:09 2493

翻译 [实时渲染] 2.3 几何处理阶段

几何处理阶段的职责是逐多边形和逐顶点操作,该阶段被进一步分成如下几个阶段:模型视图变换,顶点着色,投影,裁剪以及屏幕映射(图2.3),再次强调一下,根据实现的不同,这些功能阶段可能相当也可能不相当于管线阶段,有时几个连续的功能阶段可以合成一个管线阶段(与其它管线并行地运行),有时一个功能管线可能被分成几个更小的管线阶段。         在极端情况下,在整个渲染管线中的所有阶段可以以软

2016-04-10 22:13:29 2590

翻译 [实时渲染] 2.2 应用程序阶段

因为应用程序阶段在CPU上执行,所以开发者对要做的事情可以有全面的把控,因此开发者可以选择实现方案以及后续修改以提高性能,当然这里的修改也可能会影响到后续阶段的性能,例如,应用程序阶段的算法及设置可以减少需要渲染的三角面的数量。     在应用程序的最后,几何图元被提交给几何处理阶段进行渲染,这些可渲染的图元点,线以及三角形可能最终呈现在屏幕上,这是应用程序阶段最重要的一任务。

2016-04-10 22:12:41 1139

翻译 [实时渲染] 2.1 架构

在物理世界中,管线的概念以及不同的形式来证明自己,从工厂组装线到缆车,也被用在图形处理中。     管线包含了多个阶段[541],例如,在输油管道中,油料不能从第一个阶段到达第二阶段直到第二阶段中的石油已经移到第三阶段,等等。没意味管线的速度取决于最慢的阶段,不管其它阶段的速度多么地快。     理想情况下,非管线系统被分割成N管线阶段可以达到N倍的加速,增加性能提升是使用管线的主要原

2016-04-10 22:11:52 1022

翻译 [实时渲染] 2. 图形渲染管线

"一条锁链不比它最弱的一环坚实” (A chain is no stronger than its weakest link)     ----匿名     本章节呈现了实时渲染中最核心部分:图形渲染管线,简称管线。管线的主要功能是根据给定的虚拟摄像机,3维模型,灯光,着色方程,纹理以及其它的资源来生成一个2维的图像,渲染管线是实时渲染的底层工具。图2.1描述了管线的流程,在该

2016-04-10 22:10:13 1008

原创 cocos2d-x中的图片异步加载机制

3.X版本的cocos2d-x使用C++11标准,最新的C++11标准引入了对线程的原生支持,下面对其做简单介绍。在C++11标准中可以使用std::thread来快速创建一个线程:          void threadFunc1(){               std::cout "threadFunc1:\t"                // sleep 1 秒 

2016-04-03 22:33:33 1913

原创 cocos2d-x中的引用计数原理

本文基于3.2版本,适用于3.0及其以上版本,2.X版本可能是使用不同的方式进行处理,本文未对比2.X版本的源代码。首先看一下cocos2d-x中对象的继承体系:                                               从图中可以看出Ref是cocos2d-x中一切对象的起源(这里只列出了一部分的类),继承自Node节点的对象引擎会在每帧对其进行更新re

2016-04-03 22:30:39 2813

原创 游戏中的设计模式(1)--观察者模式

软件需要设计,那么如何设计,设计的灵感源于实践,前人的设计经验被总结为设计模式,所以学习设计模式或许可以更快的get到设计这个技能。虽说设计模式不是银弹,但笔者相信一定是一颗具有杀伤力的子弹。

2015-06-28 16:26:50 4066

原创 面向对象编程 VS 面向过程编程

对于每个有计算机背景的同学来说C++必定是一个入门级的语言,除此之外我们或多或少的都有接触过Java,Python,Php等等语言,无一例外,他们都是面向对象的编程语言,那么当我们在使用这些语言,使用Class来进行包装我们的代码的时候我们是在进行面向对象编程吗?    对于这个问题之前并没有去思考过,只是最近有与人讨论面向对象这个问题才开始思考,思来想去也没有办法使用一句话来说明白到底什么才

2014-12-07 14:37:09 6922

原创 C++中单引号“字符串”的用法

我们知道在C++中单引号用来表示单个字符,那么当用单引号括住多个字符时会出现什么情况呢?

2014-04-09 23:08:32 10699 1

原创 Lua银弹之table

来做一个Brain Storm,细数一下你曾经使用过的数据结构: map, hash_map, array, queue, stack, heap...或许还有很多其它的数据结构,相信在开始接触每个数据结构的时候都花了很多的时间去了解它们的特性,因为他们每一种都是足够的复杂。那么作为一个简单至极的语言,Lua是怎么实现这些的呢?答案是Lua中根本没有这些数据结构,汗了吧!更汗的是,Lua其实只一个真正意义上我们所谓的数据结构table,所以在这个简单的语言中我们可以使用的只能table这一种数据结构,下面我

2014-04-07 22:21:52 2759 1

原创 游戏开发入门

对于程序员而言,游戏开发是一件非常有趣的事情,特别是对大多数的计算机专业相关的学生而言,或多或少都会有一点的游戏情结,所以笔者在后续的文章中将向没有接触过游戏开发的同学讲解一些简单的游戏开发常识。

2014-04-07 16:53:03 2067 3

转载 简约而不简单的拟物化设计

简约而不简单的拟物化设计 -------新蛋网ipad 视觉点滴前言    作为Newegg UED团队的成员,我荣幸参与了Newegg iPad项目的UI设计。在项目即将上线,把几个月来的劳动成果进行了梳理和总结,现分享给大家,欢迎各位童鞋参与讨论。新蛋网,众所周知,一个以3C产品为主的电子商务网站;iPad,划时代地将我们带入了平板电脑时代,移动电子商务,这是一个全新的销售

2013-03-07 13:34:22 3986

原创 正态分布随机数

时间关系暂时先不介绍啥是正态分布了,网上关于生成正态分布随机数的方法也有很多。下面是moro 逆正态累积分布函数(Moro's Inverse Cumulative Normal Distribution function) double MoroInvCND(double prob){ const double a1 = 2.50662823884; const d

2013-03-03 20:25:22 6811

原创 关于求职的一点感想吧

对于我们这些即将毕业的人来讲,求职是一个比较热门的话题,茶余饭后的谈资,在如何找工作面试这个话题上每个人都有自己的伦理法则,是在一次又一次的面试中沉淀下来的。很多人在面试结束之后都会去写面经,这是一个很好的习惯,一方面在将想法转变成文字之间,自己可以获取更多,另一方面也可以给其它人带来更多好处,自己也曾经想过去写下一些,但碍于自己文笔的功底太差,也就不了了之。首先,我们需要一个尊敬的心态来看待

2013-01-05 15:59:39 7248 2

转载 gluPerspective和gluLookAt的关系

看了Opengl的相关程序,发现有些东西还是特别迷茫,尤其是gluLookAt的函数做啥用的,而gluPerspective又有什么功能.在网上查看到了这篇: 终于搞明白gluPerspective和gluLookAt的关系了(zz)http://cowboy.1988.blog.163.com/blog/static/751057982010101574732212/我感觉它里面

2012-12-05 20:25:42 4438

转载 OS的进程调度算法

在多进程、多线程并发的环境里,从概念上看,有多个进程或者多个线程在同时执行,具体到单个CPU级别,实际上任何时刻只能有一个进程或者线程处于执行状态;因此OS需要决定哪个进程执行,哪些进程等待,也就是进程的调度。一、调度的目标1、首先要区分程序使用CPU的三种模式:IO密集型、计算密集型和平衡型。对于IO密集型程序来说,响应时间非常重要;对于CPU密集型来说,CPU的周转时间就比较重要;对于

2012-10-21 23:04:46 5445

原创 再来一道概率题

桶中有M个白球,小明每分钟从桶中随机取出一个球,涂成红色(无论白或红都涂红)再放回,问小明将桶中球全部涂红的期望时间是?下面是从CSDN论坛上找到的一个解法:E(1)=1 //拿到第一个白球并将它涂红的期望时间E(2)=M/M-1 //拿到第2个白球并将它涂红的期望时间E(3)=M/M-2 //拿到第3个白球并将它涂红的期望时间...E(M)=M/1 //拿到第3个白球并将

2012-10-18 20:27:13 5491

原创 一道概率问题

马路口,30分钟内看到汽车的概率是95%,那么在10分钟内看不到汽车的概率是?分析:将10分钟看成一个最小的独立事件,那么这个问题就可以转换这样叙述: 进行三次抽样抽到的概率为95%,那么每次抽不到的概率是多少?解:假设每次抽不到的概率都为X,那么 1 - X^3 = 95% => X= 0.37.故这个题的答案就是0.37

2012-10-18 12:48:51 6428 1

原创 特殊的数组排序问题

问题:有一个数组A,将A排序之后,原数组中的每个元素在排序数组中位置相差不超过K. 请设计一个排序算法。解:首先对这个问题可以采用任意一种排序算法,例如使用归并排序可以在O(nLog(n))的时间内完成。题目中给出每个元素在排完序后和原来的位置相差不超过K,即其实就说明了这个数组其实对某些元素来说其实已经相对有序了,比如考虑两个元素 A[0]和 A[k+1],那么一定有A[

2012-10-18 10:54:48 5728

原创 寻找两个有序数组中的第K个数或者中位数

假设有长度分为为M和N的两个升序数组A和B,在A和B两个数组中查找第K大的数,即将A和B按升序合并后的第K个数。解法一:使用两个指针指向A和B的开头,很容易在O(M+N)的时间内完成,此算法略过。解法二:使用二分的方法。算法思想在代码注释中#include #include #include using namespace std;//Notic

2012-10-16 17:25:32 16894 2

原创 100盏灯泡的开关问题

问题:有100盏灯泡,第一轮点亮所有电灯,第二轮每两盏灯熄灭一盏,即熄灭第2盏,第4盏,以此类推,第三轮改变编号为3的倍数的电灯,第3盏,第6盏,如果原来那盏灯是亮的,就熄灭它,如果原来是灭的,就点亮它,以此类推,直到第100轮。问第100结束后,还有多少盏灯泡是亮的?解答:由题意最如果最后某一盏灯是亮着的,那么它一定是被切换了奇数次(第0次的时候全部都关着)。首先来看一下

2012-10-13 11:25:36 9386 1

原创 判断两个线段\矩形相交

如何判断两个线段\矩形相交?首先来判断两个线段的情况:假设有两个线段A和B,左右端点分别为A1,A2和B1,B2,分别考虑下面两种情况1. 线段A在线段B的左边,即A1 A22. 线段A在线段B的右边,即A1> B1,那么 A,B不相交的条件是 B1 B2那么将上面两种情况综合起来考虑就是Min(A2,B2) - Max(A1,B1) =0,那么X就是相交的区域大小。

2012-10-13 10:20:37 6027

原创 求正整数n所有可能的和式的组合

问题背景:求正整数n所有可能的和式的组合(如;4=1+1+1+1、1+1+2、1+3、2+1+1、2+2)对于这个题目有两种理解了:一> 如果将1+1+2和2+1+1当成不同的序列的话,这个问题会相对容易些。拿n=4这个例子,首先最长的组合肯定是4=1+1+1+1,那么最短的组合是4=4,到最后可能会将4=4这种情况排除掉,所以所有组合的长度一定为1,2,3

2012-10-12 17:29:31 8308

原创 动态规划求不相邻的最大子数组和

其实这个问题原题是这样描述的:有N个节点,每两个节点相邻,每个节点只与2个节点相邻,因此,N个顶点有N-1条边。每一条边上都有权值wi,定义节点i到节点i+1的边为wi。求:不相邻的权值和最大的边的集合。对于这个问题可能看起来不是很好处理,把问题更加规范化一些:给出一个数组,求出其中一个子集,使得子集中每个元素在原数组中两两都不相邻并使子集的和最大。因为不能选择两个相邻

2012-10-12 11:51:44 13295 6

原创 对程序性能优化的总结

1. 重中之重 - 算法优化:程序性能优化最显著的优化方法是算法上的优化,算法的优化对性能的提升往往是一个数量级的,例如排序,冒泡的时间复杂度为O(N^2),而快速排序的时间复杂度为O(Nlog(N)),这种性能的提供是非常明显的。2. 消除冗余的循环:我们先看一下for循环生成的汇编代码for (int N = 4, i = 0; i 15     movl    $4, -

2012-10-12 10:25:41 5377

转载 负数的取模运算

我们知道,在不同的语言中,对负数执行取模运算,结果有可能会是不同的。例如,(-11)%5在python中计算的结果是4,而在C(C99)中计算的结果则是-1。  truncate除法 && floor除法  在大多数编程语言中,如果整数a不是整数b的整数倍数的话,那么a、b做除法产生的实际结果的小数部分将会被截除,这个过程称为截尾(truncation)。如果除法的结果是正数的话,那么一般

2012-10-10 16:31:25 5898

原创 动态散列(哈希)待续

这是一个很有意思的算法,暂时记下,以后有时间在些补上有兴趣的先参考这里http://blog.csdn.net/hintonic/article/details/7186613

2012-10-08 09:41:00 4746

原创 实现指数函数Power

该题目不解释了,看代码,使用二分的思想,//int Power(int base, int exponent){ int result = 1; while (exponent) { if (exponent & 1) { result *= base; } base *= base; exponent >>= 1; } return result;}

2012-10-03 20:06:19 5231

原创 求抽取扑克牌顺子的概率

从一副扑克牌中随机抽取5张,决断这5张牌连续(成顺子的概率),大小王可以做为任意牌使用。解:对于这个问题,我们可以先考虑在没有大小王的情况下,我们抽取的概率是多少。没有大小王即总共有52张牌,因此抽取5张牌的组合数有 (52,5). 既然要成为顺子,那么顺子必须为1-5,2-6,...,9-13等,故只有9种顺子,但是对于每张牌都有4个花色,故成为顺子的个数总共有 9 * 4^5种。故

2012-10-03 17:09:21 14021 2

原创 递归地反转一个栈

//// The code is used to reverse a stack recursively//#include #include using namespace std;// We can think about how we can reverse a stack with another stack.// Cause stack is a structure f

2012-10-03 16:18:11 6486

原创 全排列算法

1. 考虑第一种情况即元素中没有重复的,本算法采用递归的方法很容易求出// Print the permutationvoid PrintPermutation(const vector & per){ static int count = 1; cout << count ++<<"\t: "; for(int i = 0; i < per.size(); ++i) { co

2012-10-02 21:08:40 5232

原创 打印所有括号匹配排列方式

对于2对左右括号,其排列方式有:( ( ) )( ) ( )4对括号的排列方式有:( ( ( ( ) ) ) )( ( ( ) ( ) ) )( ( ( ) ) ( ) )( ( ( ) ) ) ( )( ( ) ( ( ) ) )( ( ) ( ) ( ) )( ( ) ( ) ) ( )( ( ) ) ( ( ) )( ( ) ) ( ) ( )

2012-10-02 17:10:34 5660

texture packer 3.09-破解版

texture packer 3.09-破解版

2015-09-09

Real-Time-Rendering

Thoroughly revised, this third edition focuses on modern techniques used to generate synthetic three-dimensional images in a fraction of a second. With the advent or programmable shaders, a wide variety of new algorithms have arisen and evolved over the past few years.

2015-08-17

重构-改善既有代码的设计(英文版)

《重构:改善既有代码的设计(英文版)》:软件开发的不朽经典、生动阐述重构原理和具体做法、普通程序员进阶到编程高手必须修炼的秘笈。

2014-03-13

deamon_tool_Lite4451-0236.zip

deamon_tool_Lite4451-0236.zip

2012-01-29

数据挖掘概念与技术

数据挖掘概念与技术 , 这是一本学习数据挖掘相当不错的教材

2012-01-08

flashxp ftp工具

一款很好的ftp工具,绿色免安装,里面包含注册码

2011-12-24

斐波那契堆

优先队列是理论计算机科学中一个经典的话题。我们能看到,斐波那契堆提供了一个快速优秀的解决方法。寻找一个快速优先队列的应用最初是由两个网络优化算法引起的:最短路径和最小生成树(MST)

2011-12-19

空空如也

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

TA关注的人

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