代码改变世界

Windows+GCC下内存对齐的常见问题

2013-11-27 20:10 by 空明流转, 1520 阅读, 收藏, 编辑
正文内容加载中...

Direct3D Draw函数 异步调用原理解析

2013-07-03 23:56 by 空明流转, 5837 阅读, 收藏, 编辑
摘要: 概述在D3D10中,一个基本的渲染流程可分为以下步骤:清理帧缓存;执行若干次的绘制:通过Device API创建所需Buffer;通过Map/Unmap填充数据到Buffer中;将Buffer设置到DeviceContext中;调用Draw执行绘制过程;调用Present提交渲染结果。在这一过程中,不被初学者注意、然而在深入学习时定会遇到的一个特性是:D3D的Draw函数是一个异步调用。我们知道,实际渲染的过程大部分是在GPU上完成的,CPU只负责发号施令。实际上,数据准备完成后,当你的程序调用了Draw函数后,CPU才会真正的将数据和命令提交到GPU上进行渲染。从命令提交到渲染完成通常需要数阅读全文

OS之争:永不停歇的战争(二,完结)

2013-03-05 20:06 by 空明流转, 3166 阅读, 收藏, 编辑
摘要: 人机界面的对战(续)UI的帮派战争如果说不同流派间比较算是内部的矛盾,那么流派间的竞争,可谓是帮派战争了。帮派战争中,最激烈当属Linux为代表的CLI阵营与Windows/Mac为代表GUI阵营之间的对抗。虽然双方都会将问题描述的花里胡哨,但是这些都是“将答案准备的足够复杂以让别人找不到明显的瑕疵”的做法。撇开表现形式不谈,我们看看操作系统最原始、最主要的需求:检索及管理文件;启动程序;管理已经启动的程序(进程)。为什么Linux和Windows的两伙人在这个问题上能斗的这么激烈,而且还不分胜负,就是因为这三个功能都足够简单,无论是GUI还是CLI都能够轻松胜任。所以说,单独在OS Nati阅读全文

OS之争:永不停歇的战争(一)

2013-03-05 03:18 by 空明流转, 4891 阅读, 收藏, 编辑
摘要: 不是专家和王垠不一样,和云风不一样,他们是大牛逼,而我只是个无名小卒。不是扫地僧,只是无名小卒。但是作为一个小卒,从看到王垠的《用Linux工作》开始,也有五六个年头了。实际上,我的计算机学习和编程几乎是同时开始的,这样算来,我也用了十三年的PC了。但是,对Mac,Linux和Windows仍然可以说是一无所知。但是王垠的态度,到了《漫谈Linux,Windows,Mac》有了90度的转折,而云风,则从C++的拥趸变成了坚实的反对者。不是我不明白,这世界变化快。然而即便是个别大牛的态度有所转变,也会有别的大牛前赴后继,赴汤蹈火。如今,我只是想作为一个局内的局外人,写点东西为这场无功而有趣的战争阅读全文

SALVIA 0.5.2优化谈

2013-02-11 20:13 by 空明流转, 1402 阅读, 收藏, 编辑
摘要: 梗概SALVIA 0.5.2 的优化经历是一个“跌宕起伏”的过程。这个过程的结果很简单:在Core 2 Duo T5800(2.0GHz x 2)上,Sponza的性能提升了60%,ComplexMesh性能提升了26%。背景SALVIA的整个渲染流程主要是以下几部分:根据Index Buffer获得需要进行变换的顶点;将顶点利用Vertex Shader进行变换;将变换后的顶点,输出成若干个float4;将三角形光栅化。SALVIA的光栅化是将三角形拆分成4x4的像素块若干,不满的块有掩码来处理;将像素进行插值;插完值后把像素送到Pixel Shader中处理一趟;处理完的结果用Blend 阅读全文

开源光栅化渲染器SALVIA的漫长五年(准·干货)

2013-01-13 05:31 by 空明流转, 4845 阅读, 收藏, 编辑
摘要: SALVIA是从07年底开始开发的。历经五年,无论是设计目标,还是使用到的一些方法,都和最初差别很大。谨以此文,纪念我在五年中作出来的各种傻逼决定。1. 2007年9月 - 2007年12月:可笑的动机,可笑的雏形动机与原型SALVIA出现的原因其实很可笑。07年底的时候我正在写一篇paper,将GP-GPU的。那个时候还没有CUDA一类的东西,一切都要靠Shader来。本来我手上的显卡是一块9550的SDRAM的简版。但是论文快结束的时候,突然这卡的风扇就罢工了。然后我降频用了大概一个多月,卡也废掉了。因为没钱买新显卡,我就打算写一个比D3D REF快的软件渲染器。07年底的时候,实现了第一阅读全文

最近招聘时,收到的简历上所发现的问题

2012-08-02 21:17 by 空明流转, 2654 阅读, 收藏, 编辑
摘要: 长话短说。从去年开始,给以前的公司和现在的公司招人。收到了不少简历。在收到的简历中,发现有一些简历存在着一些非技术性的共通问题:1. 格式问题明明是Doc的简历,但是打开后发现和文本文档没什么区别。什么格式都没有。这让阅读简历人从何下手啊?2. 字符对齐问题标题明明居中的,偏偏要抖两个字符;段首缩进的,参差不齐。段落内应该用对齐线对齐的,非要用空格对齐,狗啃过的一样。3. 字体问题一个段落内莫名其妙两三种字体。甚至有的连字号都不一样。4. 段落间距问题段落间距不一致,稀稀落落。段间距的作用,原本在于可以将逻辑上完整的一个部分区分开。结果段落间距不一致,让读简历的人读起来也磕磕巴巴的。5. 强调阅读全文

LLVM随笔

2011-11-23 18:28 by 空明流转, 1342 阅读, 收藏, 编辑
摘要: 1. LLVM在x86和x64下都和Microsft C++ ABI的吻合程度不够。目前已知在以下情况下会出错: 参数为结构体的 返回值为结构体 以下情况我没有完整测试过: 返回值为单个浮点 返回值为向量(_m128 / <4 x float>) 参数为向量(_m128 / <4xfloat>) 所以建议大家统一将是结构体的返回值和参数以引用/指针的形式传递。 对于大小为4个或者8个字节的结构体如果希望按值传递,那么需要在LLVM函数的签名上使用i32/i64作为参数类型,并使用bit cast在函数体内强制转换成结构体。 2. LLVM提供了很多的Intrinsics阅读全文

LLVM的调用协议与内存对齐

2011-08-18 08:51 by 空明流转, 1610 阅读, 收藏, 编辑
摘要: 本文讨论了在使用LLVM的过程中可能遇到的跨语言调用协议和内存对齐的问题。阅读全文