上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 70 下一页
摘要: #include<stdio.h>voidmain(){inta[5]={10,20,30,40,50};int*p,*q;p=&a[0];q=&a[2];printf("%d,%d,%d,%d,q-p=%d\n",*p,*q,p,q,q-p);}得出结果是10,30,1245036,1245044,q-p=2q-p又得2?指针相减就是得出两个指针之间差距的元素个数INT型占四个字节,所以a[0]和a[2]之间相差的地址为8 阅读全文
posted @ 2011-03-31 14:23 oayx 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 在使用NVIDIA PerfHUD 5 Launcher的时候,明显发现现在的CPU时间和GPU时间不均衡,于是考虑优化。下面是参考NVIDIA的OGP开始总结。优化代码通常是找出瓶颈,对瓶颈进行优化,这里暂不考虑CPU内部的优化方法,主要记录CPU->GPU的3D渲染流水线的瓶颈查出方法以及优化手段。若仅希望进行CPU方面的优化,可使用一些辅助工具,如Inter的Intel(R) VTune(TM) Performance Analyzer,Intel(R) Thread Profiler 3.1,AMD的CodeAnalyst等。进行优化的步骤如上面所说:1:找出瓶颈,2:对其优化。 阅读全文
posted @ 2011-03-29 15:06 oayx 阅读(1937) 评论(0) 推荐(1) 编辑
摘要: Skybox搞好后,发现在边线有很明显的裂缝,一开始时不知道如何解决,后来问了人,有人说把纹理采样改成Point,有人说纹理坐标改成0.001到0.999,这两样我都试过,发现改成Point裂缝是消除了,但看起来很不好看,改成0.001到0.999也有裂缝。 后来再问了一位高手,他就说了句,把Texture Addressing改了就行了。然后叫我直接查看DX SDK,我看了几种texture的address模式,终于领悟了,要采用纹理寻址的Clamp Texture Address Mode,可查看SDK。再把纹理坐标改成是0.001到0.999。问题就完美解决了。 渲染代码如下:p3DD. 阅读全文
posted @ 2011-03-17 17:07 oayx 阅读(912) 评论(0) 推荐(0) 编辑
摘要: 温故知新,水面很早就实现了,但没有在这里写过,今天总结一下。 水的模拟要达到以下效果:水面的折射与反射,水的波动。要达到这种效果,需要以下四张纹理:折射纹理(RenderTarget),反射纹理(RenderTarget),Bumpmap,水自己的纹理。 折射与反射的原理就不具体说了,下面只说实现步骤。 一、渲染到纹理 RenderTarget的创建我不多述了,网上查查,我创建的是256X256的纹理,格式为X8R8G8B8。折射纹理比较简单,直接把当前的地形或在水面以下的物体渲染多次,注意,为提高性能,在这次pass中,可以选择带clip的shader(假如用到shader)或者直接使用水. 阅读全文
posted @ 2011-03-17 16:47 oayx 阅读(1051) 评论(0) 推荐(0) 编辑
摘要: RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要。但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿,不知道是因为太简单还是因为这项技术已经出现很长时间了。总之我是在摸索这个东西的时候绕了不少弯子。现在把具体的实现方法写下来。渲染到纹理,顾名思义就是把渲染目标从帧缓存变成一个纹理。这样就可以把一个场景渲染后在进行Post Process,做出现在流行的各种特效。另外在利用GPU做通用计算的时候程序也是通过RTT和GPU交换数据的。实现步骤:声明变量LPDIRECT3DTEXTURE9 pRenderTexture = NULL; // 目标纹理LPDIRECT 阅读全文
posted @ 2011-03-14 14:57 oayx 阅读(1265) 评论(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 阅读(2033) 评论(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 阅读(762) 评论(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 阅读(669) 评论(0) 推荐(0) 编辑
摘要: Jake Simpson 译者: 向海 第1部分: 游戏引擎介绍, 渲染和构造3D世界 介绍 自Doom游戏时代以来我们已经走了很远。 DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎"。 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型,场景和声音创造新的游戏, 或向已有的游戏素材中添加新的东西。大量的新游戏根据已经存在的游戏引擎开发出来,而大多数都以ID公司的Quake引擎为基础, 这些游戏包括Counter Strike, Team Fortress, Tac Ops, Strike Force, 阅读全文
posted @ 2011-03-13 16:32 oayx 阅读(776) 评论(0) 推荐(0) 编辑
摘要: 自由骑士笃志原创- -欢迎转载,呃,个人不对日志内任何资料真实性准确性负责BigWorld:澳大利亚优点: 1:动态负载均衡,服务器承受能力好。 2:服务器有较高的容错性,对服务器状况有专业的记录和管理报表分析。 3:功能全面,使用非常方便,开发速度快。 4:支持无缝世界。 5:嵌入的Python脚本,开发非常方面。缺点: 1:该引擎更适合制作FPS游戏。 2:结构完整度高,模块间契合度大,优化难度大。 3:仅支持RedHat服务器系统。其他描述:授权费用: 一个许可针对一个项目一个游戏。若一次性购买,价格为200W美元。相关技术说明: BW和其他网游引擎不同,它不是针对地图为单元,将地图为单 阅读全文
posted @ 2011-03-12 15:24 oayx 阅读(1988) 评论(0) 推荐(0) 编辑
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 70 下一页