开发技巧
pizi0475
这个作者很懒,什么都没留下…
展开
-
Direct3D的一些小贴士
GPU性能调试:通常来说,使用CPU时间事件来调试GPU是低效并且是不准确的。D3D API在多数命令下会阻塞,甚至是Draw函数。它会在一些时间片上做一些真正的工作,而这往往是不可预知的。因此,GPU的性能调试只能用PIX或者是其他专用产品,例如NVIDIA’s NVPerfHUD来进行。显卡所用的内存:显卡所用的内存可以分为两大类:本地的和非本地的(相对于显卡来说)。在转载 2011-05-16 16:24:00 · 1320 阅读 · 0 评论 -
The Cg Runtime:OpenGL中调用Cg程序
http://blog.csdn.net/xiajun07061225/article/details/7189991 原文:《The Cg Tutorial》(Cg手册):Appendix B:The Cg Runtime,Page195很多地方可能翻译得不好,还请大家见谅、指教!注意:我省略了其中的Direct3D的部分,因为本人现在正使用OpenGL开发。转载 2012-09-01 19:46:25 · 1579 阅读 · 0 评论 -
一种简单有效的3D模型的动画多线程方案
分类:Parallel Computing 标签:Multi-Core; Game一种简单有效的3D模型的动画多线程方案作者:郭胜,英特尔公司软件与解决方案事业部摘要 本文将介绍一种简单而有效的多线程方案,能加速大量的3D模型的动画渲染。此方案通过使用线程池、双缓冲、间隔更新等方法显著提升了骨骼动转载 2012-09-02 04:34:18 · 2867 阅读 · 0 评论 -
OpenGL多线程多视图的实现
http://blog.csdn.net/bugrunner/article/details/5259155OpenGL在MFC下的多视图显示在很多场合都能用到,而且表现力够强。前段时间自己需要做一个类似于MAX之类的场景编辑工具,用来编辑自己正在做的FPS游戏中所需要的场景。由于自己不懂美工、不会用MAX,所以在学习MAX与做一个自己更容易操作的编辑器两者间,就一直很纠结,最终还是选择做一个转载 2012-09-02 05:19:00 · 2002 阅读 · 0 评论 -
关于cu和.cuh文件高亮 VS2010
原文地址:http://www.haogongju.net/art/94989CUDA C/C++关键字和函数高亮显示:在上面HelloWorldCuda.cu文件中发现CUDA C/C++的关键字__global__等没有高亮显示,而且还有下划曲线。下面进行CUDA C/C++关键字和函数的语法高亮显示,配置Visual AssistX 函数高亮,代码提示等功能。下面是关于代码高转载 2012-09-02 10:58:23 · 6662 阅读 · 0 评论 -
从3DS MAX中导出骨骼动画注意的几件事
http://blog.csdn.net/windyxu/article/details/779967 编写插件从MAX中导出骨骼动画的几点注意事项.1.首先要遍历所有的MESH,和BONE,并导出0时刻的MESH所有顶点位置及索引,和BONE的世界变换矩阵的逆矩阵.这些信息可以单独放到一个文件中,以后加入动作时,每个动作可以做为一个文件.2.如果使用Physique做为转载 2012-09-02 16:10:14 · 4922 阅读 · 0 评论 -
VAssistX的VA Snippet Editor使用小讲
http://blog.csdn.net/yeduwu/article/details/4696424 代码有点排不齐,是因为粘贴的原因,忘见谅。另外,这是我第一篇文章,希望大家鼓励。谢谢!首先,先上效果代码 1//******************************************************************** 2//转载 2012-09-02 11:04:54 · 1822 阅读 · 0 评论 -
Dll 模块间(dll, exe)使用导出变量、静态变量和外部变量的试验与结论
[原]模块间(dll, exe)使用导出变量、静态变量和外部变量的试验与结论Technorati 标签: vc,模块,导出变量,静态变量,外部变量// Dll头文件声明 AFX_EXT_DATA int D1_nCount; extern int D1_nCountE; static int D1_nCountS = 0; AFX_EXT_API int D1_GetCou转载 2012-09-06 17:15:30 · 5139 阅读 · 1 评论 -
DLL在多个相同或不同的exe之间共享静态数据
在Windows via C/C++的chap17中讲到,在通常情况下,一个dll文件同时被多处关联使用或exe文件同时有多个实例在运行,通过memory mapping在内存中实际只存在一份dll或exe的数据。如果dll或exe中的全局变量被修改,则通过copy-on-write,将被修改的内容所在page在内存中复制出一份,并将引用关联改为新的page。这样就不会影响到其他使用同一份page转载 2012-09-06 17:25:58 · 2475 阅读 · 0 评论 -
Ogre 大场景优化
整个机场模型一共有三千多个mesh文件,加载到程序中倒没出什么状况;加载后竟然显示每次渲染用了三千多个batch,帧速率也就20左右。以前一直以为,有多少个material就会有多少个batch,可是“质问”过宋以后,发现人家已经将能合并的都合并了,一共只有72个material,顿时晕倒!! mesh和batch的数量不会这么吻合吧? 看来除了material,subm转载 2012-06-20 09:19:45 · 2595 阅读 · 0 评论 -
DirectX 性能优化
1 只在必须的时候Clear。IDirect3DDevice9::Clear函数通常需要花费较多的时间,因此要尽量少调用,而且只清空的确需要清空的缓存。2 尽量减少状态切换。并且将需要进行的状态切换组合在一起设置。状态包括RenderState,SamplerState,TextureStageState等3 纹理尺寸尽可能小4 从前至后渲染场景中的对象从前至后渲染可以尽可转载 2011-05-16 16:22:00 · 3436 阅读 · 2 评论 -
阐述C++编译器变量进行优化说明
在大多数情况下,把变量缓存在寄存器中是一个非常有价值的优化方法,如果不用的话很可惜。C++编译器提供了显式禁用这种缓存优化的机会。如果你声明变量是使用了volatile修饰符,编译器就不会把这个变量缓存在寄存器里——每次访问都将去存取变量在内存中的实际位置。防止了C++编译器对所修饰的变量进行优化。主要应用于多线程编程。volatile 可以用于修饰原生类型也可用于自定义类型。volatile转载 2011-04-04 18:31:00 · 1964 阅读 · 0 评论 -
细谈VC程序调试的若干方法
记得我刚开始用VC编程时,多次遇到程序编译链接都没有任何错误提示时运行却发生意外错误或者陷入死机状态,对此我真是茫然不知所措。后来经过项目工程的“洗礼”,我学到了一些解决这类错误的方法同时也将自己积累的经验运用到开发工作中,从而避免了重蹈覆辙,编程效率得以明显提高。如果你用VC而不精通解决上述种种莫名其妙故障的调试技术,那么软件的进度和质量将无法保障。VC调试之重要不言而喻。其实V转载 2010-04-09 13:55:00 · 1587 阅读 · 0 评论 -
OpenGL 性能优化
作者: Yang Jian (jyang@cad.zju.edu.cn) 日期: 2009-05-04 本文从硬件体系结构、状态机、光照、纹理、顶点数组、LOD、Cull等方面分析了如何优化 OpenGL 程序的性能。 OpenGL状态机(State Machine)OpenGL状态机的目前只有1.1版本,也是最经典的,大家可以参考下述链接:ftp://ftp.转载 2010-04-01 12:51:00 · 2682 阅读 · 0 评论 -
关于引擎优化的相关资料
最近在优化项目中用的到引擎,下面是搜集到的一下资料,转帖如下: 1 只在必须的时候Clear。IDirect3DDevice9::Clear函数通常需要花费较多的时间,因此要尽量少调用,而且只清空的确需要清空的缓存。2 尽量减少状态切换。并且将需要进行的状态切换组合在一起设置。状态包括RenderState,SamplerState,TextureStageStat转载 2012-07-20 16:42:43 · 2283 阅读 · 0 评论 -
C++的风格与技巧
C++的风格与技巧翻译:左轻侯(译注:本文的翻译相当艰苦。Bjarne Stroustrup不愧是创立C++语言的一代大师,不但思想博大精深,而且在遣词造句上,也非常精微深奥。有很多地方,译者反复斟酌,都不能取得理想的效果,只能尽力而为。Html格式的文档见译者主页:http://www.wushuang.net如果你对这个翻译稿有任何意见和建议,请发信给译者:onekey@163转载 2010-02-04 15:12:00 · 1336 阅读 · 0 评论 -
VS中对.fx文件进行Custom Build的设置
http://blog.csdn.net/bugrunner/article/details/6684904 对于D3D中.fx文件进行编译可以直接使用D3D Tools中的fxc.exe,或是在程序运行后加载.fx文件的时间调用fx编译器进行编译,但这样种种不便。受CUDA文件编译设置的启发,同样可以对.fx进行custom build设置,进而直接调用fxc.exe进行编译。转载 2012-09-02 05:37:18 · 2477 阅读 · 0 评论 -
使用VAssistX为VS2008 c++代码添加函数头注释
本文出处:http://mr-m.me/vassistx_vs2008_cpp.html 在VC6.0里边,C++函数头注释是使用一个宏完成的,VS系列中C#在函数头输入三个反斜杠也会自动生成XML格式的函数头注释。又懒得在VS2008中写类似于添加函数头的注释,只能依靠一些工具了,今天给大家介绍VAssistX。大家可以下载VAssistX插件,安装的时候一定要把VS2008转载 2012-09-02 10:44:49 · 2502 阅读 · 0 评论 -
C++代码优化方法总结
C++代码优化方法总结 优化是一个非常大的主题,本文并不是去深入探讨性能分析理论,算法的效率,况且我也没有这个能力。我只是想把一些可以简单的应用到你的C++代码中的优化技术总结在这里,这样,当你遇到几种不同的编程策略的时候,就可以对每种策略的性能进行一个大概的估计。这也是本文的目的之所在。一. 优化之前 在进行优化之前,我们首先应该做的是发现我们代码的瓶颈(bottleneck)在转载 2010-05-20 23:02:00 · 1545 阅读 · 0 评论 -
嵌入式实时程序设计C/C++的代码优化
1 引言 计算机技术和信息技术的高速发展的今天,计算机和计算机技术大量应用在人们的日常生活中,嵌入式计算机也得到了广泛的应用。 嵌入式计算机是指完成一种或多种特定功能的计算机系统,是软硬件的紧密结合体。具有软件代码小、高度自动化、响应速度快等特点。 特别适合于要求实时和多任务的应用体系。嵌入式实时系统是目前蓬勃发展的行业之一。 但是,实时嵌入式系统的特点使得其软件受时间和空间的严格限制,加转载 2010-04-08 14:51:00 · 1308 阅读 · 0 评论 -
Ogre的渲染优化心得
做商业网络游戏的话,效率是一个不可避免的话题,为了留更多的空间给客户端的逻辑,那么渲染模块就应该尽量高效. 小弟只浅谈一下Ogre的渲染优化,以大家熟悉的天龙八部为例. 以网上流传版本的天龙代码来看,Ogre和CEGUI部分的渲染都有严重的性能问题, Ogre: 地形的实现,一个tile,只按材质做了批次优化,并没有按材质做摄像机的裁剪,导致游戏视角下批次增加很多 静态实体的合并,完全错误的做法,转载 2011-04-11 16:14:00 · 2754 阅读 · 1 评论 -
DLL和EXE怎样共享全局变量?
全局共享数据 #pragma data_seg ("shareddata") HWND sharedwnd=NULL;//共享数据 #pragma data_seg() 编译选项加入 /SECTION:shareddata,rws ============================用p转载 2012-09-06 17:26:48 · 2523 阅读 · 0 评论 -
DLL分配的内存如何在EXE里面释放
总结下面几个要点:1. 保证内存分配和清除的统一性:如果一个DLL提供一个能够分配内存的函数,那么这个DLL同时应该提供一个函数释放这些内存。数据的创建和清除应该在同一个层次上。曾经遇到过这样的例子:在dll中分配了一块内存,通过PostMessage将其地址传给应用。然后应用去释放它,结果总是报异常。2.如果exe用 MFC Appwizard方式生成, dll用win32方式生成,转载 2012-09-06 17:19:35 · 2000 阅读 · 0 评论 -
使用VC2005一些问题及解决方案
首先是我使用VC2005在不通阶段的不通感受:刚开始安装VS2005时候感觉:真是大啊!装了我一个上午!!而且运行个VC有时能耗我好大的内存。。刚使用VC2005时候的感受:界面挺不错,貌似功能更强大,对C++标准支持的很好,还可以用我最喜欢的Comic Sans MS字体,还支持代码收缩等等。。虽然比较慢,但是不像VC6.0那样老是出现编译死机的情况。开始用VC2005学习写东西的时转载 2012-09-22 09:42:52 · 2364 阅读 · 0 评论 -
vs2005奇怪的断点无效问题
最近一工程中,在调试的时候,有些cpp文件都可以设置断点并且跟进去,但是有一个cpp文件总是不能设置断点,提示“当前不会命中断点。源代码与原始版本不同。” 重新更换过n次文件都不起作用,然后在goole搜索此类类似问题,找到下篇文章,然后我把那个cpp文件用记事本打开,另存为unicode格式,再重新编译,最后问题解决!也可以更改vs2005的设置,选项->常规,将要求源文件与原始版本完全匹配的勾转载 2012-09-22 09:44:40 · 1276 阅读 · 0 评论 -
代码自动生成-宏递归思想
Macro Recursionauthor: Kevin Lynx Preface 本文可能是代码自动生成-宏带来的奇技淫巧>的续写。我尽力阐述如何让宏递归(或者说重复)地有规律地产生一些符号,而让我们少写很多重复代码,也许这些代码只有那么一点点的不同。将这项小技巧用于底层库的编写,会让代码看起来干净不少,同时文件尺寸也会骤然下降。Problem转载 2012-10-21 16:40:45 · 3164 阅读 · 0 评论 -
使用非2次方幂的图像纹理的问题
图像使用2次方是很讨厌的问题,不在技术难度上,而在技术妥协上.实际上要求美工作出2次方纹理,并且整张图的空间利用率要高,是很难的.当有些策划丢过来奇奇怪怪的尺寸的图像,我都要吐血,当知道2n次方限制后,他们把图像尺寸扩大一下,再丢给我空余大量空白的2n次方纹理,再吐血.玻璃渣资源里标准的2n次方人物纹理,图像挤的满满的,每个身体部位纹理还是一个矩形,利用率之高不得不令人佩服,然而这对美工要转载 2012-11-08 20:09:36 · 9506 阅读 · 0 评论 -
分享Unity工具十天创建iPad游戏的经验
作者:James Bowling数周前,我在网上与朋友聊天时,决定挑战下自己的能力。我想看看能否在1周时间内用Unity开发工具创建出一款游戏。我并没有丰富的Unity开发经验,因而绝大多数时间会花在学习如何实现目标的方法上。 Unity(downeu.com) 我成功地做到了,尽管花了不止7天,但是相差不多。这款游戏不是我做过的最棒或最精致的游戏,但也不能算最差。游戏转载 2012-12-30 21:48:12 · 2427 阅读 · 0 评论 -
perfHUD使用说明
以下前半部分是PerfHUD 6 Quick Tutorial,后半部分是PerfHUD 6 User Guide注意使用PerfKit_x86_XP_6.62.0120.1800.exe中的驱动,才能正常显示PerfHUD图表。还要看看PerfSDK中的NVIDIA Developer Control Panel是否可以开启,若可以,才说明安装无误。另外,driver time和dr转载 2013-05-09 09:21:18 · 3868 阅读 · 0 评论 -
C/C++ 内存泄露与检测
“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用malloc失败,否则都不会导致任何问题。实际上,使用C/C++这类没有垃圾回收机制的语言时,你很多时间都花在处理如何正确释放内存上。如果程序运行时间足够长,如后台进程运行在服务器上,只要服务器不宕机就一转载 2013-09-16 20:00:56 · 1724 阅读 · 0 评论 -
Visual Studio 11可视化多核多线程编程的行为
Visual Studio 2010 可以采取的第一个操作是打开分析菜单,启动性能向导,然后选择"形象的多线程应用程序的行为"。到了Visual Studio 11情况发生变化了, Visual Studio 11 DP 性能向导中不存在可视化选项。它去了哪里?并发可视化工具成为其自身 Visual Studio 11 DP 分析菜单中的菜单项。Visual Studio 2010 与 Visua转载 2014-01-02 20:59:34 · 2286 阅读 · 0 评论 -
Unity3D 游戏架构脚本该如何来写
这篇文章MOMO主要想大家说明一下我在Unity3D游戏开发中是如何写游戏脚本的,对于Unity3D这套游戏引擎来说入门极快,可是要想做好却非常的难。这篇文章的目的是让哪些已经上手Unity3D游戏引擎的朋友学会如何更好的写游戏脚本,当然本文这紧紧是我这么多年对游戏开发的认知,你也可以有你自己的看法。首先我们看看游戏主要是由哪几部分组成的,如下图所示,任何平台下的任何游戏核心都是由:数据、逻辑、渲转载 2015-07-16 10:18:46 · 2069 阅读 · 0 评论 -
ANSI和UNICODE编程的注意事项
建立UNICODE编码工程 在VC60下,默认方式下建立的是ANSI编码的工程(注:编译的exe内部,其资源字符是以UNICODE保存),建立UNICODE编码工程的方法:1、为工程添加UNICODE和_UNICODE预处理选项。 具体步骤:打开[工程]->[设置…]对话框,在C/C++标签对话框的“预处理程序定义”中去除_MBCS,加上_UNICODE,UNICODE转载 2012-09-20 21:49:02 · 1530 阅读 · 0 评论 -
VS2005调试技巧集合
下面有从浅入深的6个问题,您可以尝试回答一下一个如下的语句for (int i = 0; i 在一个1000次的循环体内部设置断点,你希望当循环进行到900次后中断,怎么才能做到呢?你有一个表达式在上面循环的某一次发生了变化,你想知道是哪一次,在哪个地方,怎么才能做到?你希望你的断点在被命中100次后,每命中三次中断一次,比如第103,第106,第109怎样做?你有在调试一转载 2012-09-20 21:44:13 · 1386 阅读 · 0 评论 -
内存泄露检测工具 Visual Leak Detector for Visual C++ 2008/2010
Visual Leak Detector是一款免费的检查内存泄露的工具。最新的2.1版本可以很好的支持VS2008/2010。点击这里下载 安装后,在VS中设置Tool->Options 选择Projects and Solutions中的VC++ Directories,将Visual Leak Detector安装路径中的include和lib路径设置Include Files和L转载 2012-09-20 21:28:33 · 1466 阅读 · 0 评论 -
#pragma data_seg介绍
#pragma data_seg介绍 用#pragma data_seg建立一个新的数据段并定义共享数据,其具体格式为: #pragma data_seg ("shareddata") HWND sharedwnd=NULL;//共享数据 #pragma data_seg() -----------------------------------转载 2012-09-06 17:32:52 · 1555 阅读 · 0 评论 -
游戏工程里的使用C++静态库与动态库
假设我们有3个工程及其工程类型:CORE DLLENGINE DLLGAME EXED3DRENDER DLL其中D3DRENDER是GAME动态载入的,其需要链接CORE,ENGINE这是一个很常见的模式,但是不好的是,因为CORE和ENGINE均是DLL,代码中的Symbol都被导出才可使用转载 2012-09-07 06:48:56 · 1329 阅读 · 0 评论 -
DLL与EXE之间的内存 new 与 delete 上的问题
最近在做的一个项目,我们的一个EXE调用了DLL,其中EXE会使用DLL new出来的变量指针,而且会在EXE delete这些指针,同样,DLL也会使用及delete由EXE new出来的变量指针。开始在做测试的时候没有发现任何问题,当时用的是DEBUG版本。 可是后来发现Release版本运行程序时总是会崩,于是开始疯狂地调试,终于找到了导致崩溃的原因:我们的Release版的EX转载 2012-09-06 17:18:19 · 1707 阅读 · 0 评论 -
在DLL中用CRT静态库申请内存,EXE释放是不行的
因为malloc/free,new/delete都是调用HeapAlloc/HeapFree来实现来实现内存分配是释放的。查看Windows的API可以看到,这两个函数都需要一个Heap的HANDLE做为参数。CRT库采用了全局变量来保存这个HANDLE。如果是CRT静态链接,CRT库的代码会链接到各个DLL中去,也包括这个全局变量。也就是说,每个使用CRT静态链接的dll中都有一个自己的转载 2012-09-06 17:20:46 · 1785 阅读 · 0 评论 -
如何只在heap上创建对象,如何只在stack上建立对象?
只能在堆上创建的对象,代码如下 class HeapOnly{public: void destroy() const { delete this; }private: ~HeapOnly(){};};int main(){ //HeapOnly obj; HeapOnly转载 2012-09-11 22:00:51 · 1224 阅读 · 0 评论