摘要: RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要。但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿,不知道是因为太简单还是因为这项技术已经出现很长时间了。总之我是在摸索这个东西的时候绕了不少弯子。现在把具体的实现方法写下来。渲染到纹理,顾名思义就是把渲染目标从帧缓存变成一个纹理。这样就可以把一个场景渲染后在进行Post Process,做出现在流行的各种特效。另外在利用GPU做通用计算的时候程序也是通过RTT和GPU交换数据的。实现步骤:声明变量LPDIRECT3DTEXTURE9 pRenderTexture = NULL; // 目标纹理LPDIRECT 阅读全文
posted @ 2011-03-14 14:57 oayx 阅读(1266) 评论(0) 推荐(0) 编辑
摘要: 你要寻找什么,而且你有一个容器或者你有一个由迭代器划分出来的区间——你要找的东西就在里面。你要怎么完成搜索呢?你箭袋中的箭有这些:count、count_if、find、find_if、binary_search、lower_bound、upper_bound和equal_range。面对着它们,你要怎么做出选择?简单。你寻找的是能又快又简单的东西。越快越简单的越好。暂时,我假设你有一对指定了搜索区间的迭代器。然后,我会考虑到你有的是一个容器而不是一个区间的情况。要选择搜索策略,必须依赖于你的迭代器是否定义了一个有序区间。如果是,你就可以通过binary_search、lower_bound、 阅读全文
posted @ 2011-03-14 14:05 oayx 阅读(2036) 评论(0) 推荐(0) 编辑
摘要: 有些容器拥有和STL算法同名的成员函数。关联容器提供了count、find、lower_bound、upper_bound和equal_range,而list提供了remove、remove_if、unique、sort、merge和reverse。大多数情况下,你应该用成员函数代替算法。这样做有两个理由。首先,成员函数更快。其次,比起算法来,它们与容器结合得更好(尤其是关联容器)。那是因为同名的算法和成员函数通常并不是是一样的。我们以对关联容器的实验开始。假如有一个set<int>,它容纳了一百万个元素,而你想找到元素727的第一个出现位置(如果存在的话)。这儿有两个最自然的方法 阅读全文
posted @ 2011-03-14 13:47 oayx 阅读(763) 评论(0) 推荐(0) 编辑
摘要: 假定你有一个标准STL容器,c,容纳int,Container<int> c;而你想把c中所有值为1963的对象都去掉。令人吃惊的是,完成这项任务的方法因不同的容器类型而不同:没有一种方法是通用的。如果你有一个连续内存容器(vector、deque或string——参见条款1),最好的方法是erase-remove惯用法(参见条款32):c.erase(remove(c.begin(), c.end(), 1963), // 当c是vector、stringc.end()); // 或deque时,// erase-remove惯用法// 是去除特定值的元素// 的最佳方法这方法也 阅读全文
posted @ 2011-03-14 10:02 oayx 阅读(670) 评论(0) 推荐(0) 编辑