- 博客(42)
- 资源 (3)
- 收藏
- 关注
翻译 随机采样方法
分下面几个部分来介绍常见的随机采样方法: 一、拒绝——接受采样 该方法是用一个我们很容易采样到的分布去模拟需要采样的分布。它要满足一些条件,如下: 其具体的采集过程如下所示: 几何上的解释如下: 由上面的解释可知,其实是在给定一个样本x的情况下,然后又随机选取一个y值,该y值是在轮廓线Mq(x)下随机产生的
2014-09-30 10:53:25
4952
翻译 Better Sampling
A couple of days ago, I compared the images my ambient occlusion integrator produced with those of Modo using similar settings. I noticed immediately how much ‘cleaner’ the render from Modo was. Clear
2014-09-26 15:46:55
879
翻译 The State of Rendering – Part 2
In Part 1 of The State of Rendering, we looked at the latest trends in the visual effects industry including the move to physically plausible shading and lighting. Part 2 explores the major players
2014-09-22 16:19:48
18485
翻译 The State of Rendering – Part 1
Part 1 of 2. This part deals with the rendering trends in the VFX industry today. Part 2 includes a run down of 14 of the most popular renderers for VFX. Many of the issues in this special two part
2014-09-22 16:15:31
8549
转载 敏捷开发
现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... 为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资料的讲述方式让初学者不太容易理解;所以我决定写一篇扫盲性的博文,同时试着也与园内的朋友一起分享交流一下,希
2014-07-12 02:45:43
592
翻译 C\C++代码优化的27个建议
1. 记住阿姆达尔定律:funccost是函数func运行时间百分比,funcspeedup是你优化函数的运行的系数。所以,如果你优化了函数TriangleIntersect执行40%的运行时间,使它运行快了近两倍,而你的程序会运行快25%。这意味着不经常使用的代码不需要做较多优化考虑(或者完全不优化)。这里有句俗语:让经常执行的路径运行更加高效,而运行稀少的路径正确运行。
2014-05-23 18:53:20
596
转载 C++实现自己的信号槽
Qt信号与槽GUI程序中,当我们我们点击一个按钮时,我们会期待我们自定义的某个函数被调用。对此,较老的工具集(toolkits)都是通过回调函数(callback)来实现的,Qt的神奇之处就在于,它使用信号(signal)与槽(slot)的技术来取代了回调。在继续之前,我们先看一眼最最常用的 connnect 函数:connect(btn, "2clicked()", this
2014-03-20 22:25:46
3040
转载 Singleton
This chapter is an anomaly. Every other chapter in this book shows you how to use a design pattern. This chapter shows you how not to use one.Despite noble intentions, the Singleton pattern descri
2014-02-28 23:05:33
815
原创 d3d11中如何枚举适配器(Enumerate Adapters)
DirectX 10和11使用DirectX图形基础结构(DXGI),枚举计算机上的可用图形适配器。你通常需要枚举适配器,原因如下: 1.确定有多少图形适配器安装在我们的计算机上 2.为了帮助我们选择使用哪个适配器来创建一个Direct3D设备 3.为了获取 IDXGIAdapter对象 ,它可以知道我们的设备能力(device capabilities)
2014-02-24 22:04:30
3986
原创 d3d11中的Device
设备(Devices) 一个Direct3D设备分配和销毁对象,渲染图元(renders primitives),并用图形驱动程序和硬件进行通信。在Direct3D11中,一个设备被分离成一个设备对象(device)创建资源,另一个是设备上下文(device-context)对象用来将资源绑定到管线上并执行渲染。1.介绍在Direct3D11中的设备 D
2014-02-24 21:33:48
3351
原创 设计游戏关卡
正文之前知识没有捷径,只有学习才会提高创意:大脑中信息的重新排列组合作为一名职业策划人员,一定得先考虑市场走向,再衡量公司的能力,接着才能去思考能做和要做什么游戏游戏先驱们主导世界的日子已经过去了,现在的游戏业是一个产业,没人会突然被发现,然后一夜之间成为巨星,对任何想入门的人来说,在你面前必定是一条漫长的路一个看书的人比一个不看书的人成功的几率要大许多学习是提升能力的唯一途径关卡策划
2014-02-05 18:43:29
6155
翻译 很酷的C语言技巧
C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非常简单,并且仍然有一些非常有用的语法技巧和功能,只是没有多少人知道罢了。指定的初始化很多人都知道像这样来静态地初始化数组:1intfibs[] = {1, 1, 2, 3, 5};C99标准实
2014-01-25 23:25:13
977
转载 游戏中的组件系统介绍
Evolve Your HierarchyRefactoring Game Entities with ComponentsUp until fairly recent years, game programmers have consistently used a deep class hierarchy to represent game entities. T
2014-01-25 15:03:47
1295
转载 迷一样的c
1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?#include #include int main() { while(1) { fprintf(stdout,"hello-std-out"); fprintf(stderr,"hello-std-err"); sleep(1); }
2014-01-15 19:03:54
770
原创 程序员面试精粹02
求子数组最大和的程序题目:输入一个整型数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 举例来说:输入的数组为 1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数
2014-01-06 16:15:15
886
3
原创 程序员面试精粹01
1.设计一个包含min()函数的栈要求: 1.定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素; 2.函数min、push 以及pop 的时间复杂度都是O(1);下面我们就来看看如何实现这个栈。语言方面,我们选择C来实现~
2014-01-06 12:35:06
1006
1
翻译 编写你的第一个垃圾收集器
本文作者 Bob Nystrom 是 Google Dart 团队的一名工程师,所以下文中”处理一些工作上的事情“中的链接是指向了 Dart 官网。Bob 之前(曾在 EA 公司)做过游戏开发,UI 设计。更多信息,请看他的简历。 每当我倍感压力以及有很多事情要做的时候,我总是有这样一种反常的反应,那就是希望做一些其他的事情来摆脱这种状况。通常情况下,这些事情都是些我能够编写并实现的独立的
2013-12-31 10:33:58
736
翻译 C++语言的15个晦涩特性
这个列表收集了 C++ 语言的一些晦涩(Obscure)特性,是我经年累月研究这门语言的各个方面收集起来的。C++非常庞大,我总是能学到一些新知识。即使你对C++已了如指掌,也希望你能从列表中学到一些东西。下面列举的特性,根据晦涩程度由浅入深进行排序。1. 方括号的真正含义2. 最烦人的解析3.替代运算标记符4. 重定义关键字5. Placement new6.在声明变量的同时进行分支7.
2013-12-30 19:08:34
507
转载 动态规划算法及代码
动态规划 算法总体思想 动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题。但是经分解得到的子问题往往不是互相独立的。不同子问题的数目常常只有多项式量级。在用分治法求解时,有些子问题被重复计算了许多次。如果能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,就可以避免大量重复计算,从而得到多项式时间算法。
2013-12-24 23:13:12
3175
翻译 游戏引擎中的通用编程技术
游戏引擎中的通用编程技术引言你是否正在考虑构建一个游戏引擎呢?你对如何构建一个游戏引擎是否已经有了一个明确的计划呢?你是否已经对如何组织游戏引擎各个模块之间的关系有了一个通盘的考虑?如果没有,那么本文将对你建立一个良好的游戏架构提出一些有益的方案,如果你已经对上面的问题有了一个明确的答案,那么本文不是你需要阅读的内容。本文的目的是给那些没有任何建立完整游戏引擎经验的人提
2013-12-17 20:34:24
1655
翻译 C++代码风格07
7. 注释注释虽然写起来很痛苦, 但对保证代码可读性至关重要. 下面的规则描述了如何注释以及在哪儿注释. 当然也要记住: 注释固然很重要, 但最好的代码本身应该是自文档化. 有意义的类型名和变量名, 要远胜过要用注释解释的含糊不清的名字.你写的注释是给代码读者看的: 下一个需要理解你的代码的人. 慷慨些吧, 下一个人可能就是你!7.1. 注释风格Tip使用 //
2013-12-15 00:24:50
536
翻译 C++代码风格06
6. 命名约定最重要的一致性规则是命名管理. 命名风格快速获知名字代表是什么东东: 类型? 变量? 函数? 常量? 宏 ... ? 甚至不需要去查找类型声明. 我们大脑中的模式匹配引擎可以非常可靠的处理这些命名规则.命名规则具有一定随意性, 但相比按个人喜好命名, 一致性更重, 所以不管你怎么想, 规则总归是规则.6.1. 通用命名规则Tip函数命名, 变量命名
2013-12-13 15:29:11
569
翻译 C++代码风格05
5. 其他 C++ 特性5.1. 引用参数Tip所以按引用传递的参数必须加上 const.定义:在 C 语言中, 如果函数需要修改变量的值, 参数必须为指针, 如 int foo(int *pval). 在 C++ 中, 函数还可以声明引用参数:int foo(int &val).优点:定义引用参数防止出现 (*pval)++ 这样丑
2013-12-13 15:25:41
696
翻译 C++代码风格04
4. 来自 Google 的奇技Google 用了很多自己实现的技巧 / 工具使 C++ 代码更加健壮, 我们使用 C++ 的方式可能和你在其它地方见到的有所不同.4.1. 智能指针Tip如果确实需要使用智能指针的话, scoped_ptr 完全可以胜任. 你应该只在非常特定的情况下使用 std::tr1::shared_ptr, 例如 STL 容器中的对象
2013-12-13 15:05:37
620
转载 随机快速排序
随机快速排序算法是对快速算法的一种优化,本质没什么区别,随机快速排序的最坏情况就是和快速排序一样。上代码: [cpp] view plaincopy// Randomizde_QuickSort.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #incl
2013-12-08 15:55:28
638
转载 快速排序 解析
快速排序法原理也是用了分治法,主要原理是将数组分为A[p..q-1] 和A[q+1..r],然后调整元素使得A[p..q-1]小于等于q,也小于等于A[q+1..r]。然后不断的递归,到最后就排序完成。上代码:[cpp] view plaincopy// QuickSort.cpp : 定义控制台应用程序的入口点。 //
2013-12-08 15:52:56
566
转载 游戏资源缓存ResourceCache
1.什么是资源高速缓存 资源高速缓存的原理与其它内存高速缓存的工作原理是相似的。在游戏的状态转换过程中,有些数据是刚才使用过的,那么直接从资源高速缓存中载入即可。例如,RPG游戏中主角从大地图进入一个房间,探索一番后主角退出房间,此时只要直接从缓存中载入大地图数据即可,节省了从硬盘载入数据的时间,要知道从硬盘载入数据是非常慢的。当然,如果你的游戏所使用的数据文件很少,那么你可以在游
2013-12-07 23:14:33
2091
转载 Implementing Component-Entity-Systems
Implementing Component-Entity-SystemsThis is the follow-up to my article from April, Understanding Component-Entity-Systems. If you haven't read that article yet, I suggest looking it over bec
2013-12-07 23:00:41
1120
转载 Understanding Component-Entity-Systems
Understanding Component-Entity-SystemsThe traditional way to implement game entities was to use object-oriented programming. Each entity was an object, which intuitively allowed for an instant
2013-12-07 22:58:01
881
翻译 3D Engine 的设计架构
3D Engine 的设计架构[B]Elements Of A Game Engine3D Engine 的设计架构[/B]Luke Hodorowicz05 March 200128 Sep 2001Introduction (简介)让咱们谈谈你如何撰写一份提供优雅性能的3D引擎。你的引擎需要提供的包括:曲面(curved surfaces)、动态光线
2013-12-07 22:47:50
842
翻译 c++内存管理 03
3 探讨C++内存回收3.1 C++内存对象大会战 如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛。用C或C++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响着程序的效率和性能,更为主要的是,当我们操作内存的时候一不小心就会出现问题,而且很多时候,这些问题都是不易发觉的,比如内存泄漏,比如悬挂指针。笔者今天在这里并不是要讨论如何避免这
2013-12-07 22:32:50
644
翻译 c++内存管理 02
2 内存泄漏2.1 C++中动态内存分配引发问题的解决方案假设我们要开发一个String类,它可以方便地处理字符串数据。我们可以在类中声明一个数组,考虑到有时候字符串极长,我们可以把数组大小设为200,但一般的情况下又不需要这么多的空间,这样是浪费了内存。对了,我们可以使用new操作符,这样是十分灵活的,但在类中就会出现许多意想不到的问题,本文就是针对这一现象而写的。现在,我们先来开发
2013-12-07 22:26:47
538
翻译 C++代码风格03
3. 类类是 C++ 中代码的基本单元. 显然, 它们被广泛使用. 本节列举了在写一个类时的主要注意事项.3.1. 构造函数的职责Tip构造函数中只进行那些没什么意义的 (trivial, 注: 简单初始化对于程序执行没有实际的逻辑意义, 因为成员变量 "有意义" 的值大多不在构造函数中确定) 初始化, 可能的话, 使用 Init() 方法集中初始化有意义的 (
2013-12-07 22:15:32
612
翻译 C++代码风格02
2. 作用域2.1. 名字空间Tip鼓励在 .cc 文件内使用匿名名字空间. 使用具名的名字空间时, 其名称可基于项目名或相对路径. 不要使用 using 关键字.定义:名字空间将全局作用域细分为独立的, 具名的作用域, 可有效防止全局作用域的命名冲突.优点:虽然类已经提供了(可嵌套的)命名轴线 (注: 将命名分割在不同类的作用域内)
2013-12-07 22:00:51
701
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人