Archive

Archive for December, 2010

D3D9的Pixel和Texel(续)

December 13th, 2010 No comments

前一篇只说了屏幕坐标和纹理坐标一一对应,也就是说没有缩放的情况。实际上有时候会需要把图素进行缩放后渲染,举个例子,把3×3像素的纹理(注意,不是整张纹理3×3,而是取一张纹理上3×3大小的一部分)渲染成屏幕上的4×4像素大小,如下图。和以前一样,红色的线框代表纹理像素的边界,灰色线框代表屏幕像素的边界,由于纹理被放大了,所以只有在图素边界处二者才是重合的。

这里有个不容易觉察到的问题,估计已经让很多程序员抓狂过,也就是放大后的图素的边界像素上会多出一些来历不明的颜色,放大倍数越大就越明显。实际上,这是采样到边界以外的纹理像素了。

Read more…

Categories: 程序/算法 Tags: ,

如何实现一个STL的allocator(内存分配器)

December 12th, 2010 1 comment

注意,这里只是讲如何实现一个“能用的 ”allocator,而不是如何实现一个很高级很牛的allocator。当然,你可以回头自己把它变的很高级很牛。

这里假设你已经知道STL的allocator是做什么用的,如果不知道的话随便打开一个STL容器的代码看一看也能很容易猜到。

话说如果我们只想要一个能工作allocator,那就直接使用STL自带的默认实现好了,但是万一想要自己定制一个,你可能会不知道如何下手,而且你又不想去翻阅c++标准文档,也不想去啃如天书般的STL源码,那就走这条捷径——照抄下面的代码,不需要问为什么。

Read more…

Categories: 程序/算法 Tags: