摘要: 摘要受管贴图(Managed textures,也就是我们通常所谓的“自动管理贴图”),在DX6中首次被引入,经过一系列的改进和增强,在DX9中自动管理的资源类型增加到贴图,顶点缓冲,顶点索引缓冲,所有这些资源使用统一的公共接口。通过使用D3D资源管理器,应用程序可以轻松的处理设备丢失、处理稍微过量的显存使用。有时开发者在使用受管资源会遇到一些困难,这部分归咎与系统的抽象特性。在大多数情况下使用受管对象是不错的选择,但有时出于性能考虑也会使用非托管资源。这篇文章将讨论一般情况下如何处理资源,受管与非受管资源的行为差别。内容l显示内存l受管资源l驱动管制资源l默认资源l系统内存资源l一般性的建议 阅读全文
posted @ 2014-02-08 20:39 紫龙_ 阅读(275) 评论(0) 推荐(0)
摘要: DirectX中投影变换D3DXMatrixPerspectiveFovLH()其实产生的变换矩阵不是将3D物体转换为2D平面画面的变换。实际 上是把3D世界的物体变换到(1,1,0) (-1,1,0) (-1,-1,0) (1,-1,0) (1,1,1) (-1,1,1) (-1,-1,1) (1,-1,1)这个小盒子中。在Jim Adams 的著作和Frank Luna 的著作中都把这个变换矩阵讲成从3D到2D的变换。实际上在DirectX中3D到2D的变换是由SDK自己完成的。而我们要做的是 把3D世界变换到上面那个小盒子中。这个变换矩阵是投影变换的预变换。在DirectX中,把视口的高 阅读全文
posted @ 2014-02-08 15:09 紫龙_ 阅读(237) 评论(0) 推荐(0)
摘要: 这个帖可能在这儿发比较奇怪,不过我是一个信仰黑客精神的程序员,也非常支持KlayGE的研发,希望发一些我的原创资料,和作者,以及KlayGE的作用者交流,甚至有一些麻烦的问题,也希望作者可以解答,如果KlayGE的研发能够涉及到这些东西,那就最好了。作为一个刚从业不久的引擎开发人员,为了能快速有效地提高自己引擎的渲染质量,使用了各种办法来解析Cryengine的渲染手法。在此我将以专业的视角来与您分享我的经验和成果。如果您也是专业的图形程序员,希望与您一起讨论,解读这款令人惊叹的引擎,如果您是一个刚刚入门的新人或者爱好者,这将成为您不可多得的原创中文资料。Cryengine是目前最难窥探的引擎 阅读全文
posted @ 2014-02-08 15:08 紫龙_ 阅读(267) 评论(0) 推荐(0)
摘要: 什么是纹理熟悉DX的兄弟们都知道什么叫纹理了,这里简单介绍一下,先看看现实生活中的例子吧,其实纹理的例子比比皆是,比如地板,墙面都是纹理。在图形学 中,纹理主要是为了增强场景的真实感,比如你想绘制一个地面,简单一点可以直接使用一个矩形,稍微复杂一点可以用三角形网格,再复杂一点可以使用地面纹 理,有了纹理以后真实感明显增强了。DX中的纹理其实就是就是对现实生活中纹理的模拟,但是它不仅仅是一张图片那么简单,有着完整的数据结构,比如宽度, 高度,内存类型,表面(Surface)等。渲染到纹理常规的渲染操作都是直接将场景呈现到backbuffer中的,backbuffer说白了其实就是一个表面,再说白 阅读全文
posted @ 2014-02-08 15:06 紫龙_ 阅读(775) 评论(0) 推荐(0)
摘要: 深入理解D3D9对图形程序员来说意义重大,我把以前的一些学习笔记都汇总起来,希望对朋友们有些所帮助,因为是零散笔记,思路很杂,还请包涵。其实只要你能完美理解D3DLOCK、D3DUSAGE、D3DPOOL、LOST DEVICE、QUERY、Present()、BeginScene()、EndScene()等概念,就算是理解D3D9了, 不知道大家有没有同感。有如下几个问题,如果你能圆满回答就算过关:)。问题1、 D3DPOOL_DEFAULT、D3DPOOL_MANAGED、D3DPOOL_SYSTEMMEM和D3DPOOL_SCRATCH到底有何本质区别?2、 D3DUSAGE的具体怎么使 阅读全文
posted @ 2014-02-08 14:33 紫龙_ 阅读(310) 评论(0) 推荐(0)
摘要: 1 只在必须的时候Clear。IDirect3DDevice9::Clear函数通常需要花费较多的时间,因此要尽量少调用,而且只清空的确需要清空的缓存。2 尽量减少状态切换。并且将需要进行的状态切换组合在一起设置。状态包括RenderState,SamplerState,TextureStageState等3 纹理尺寸尽可能小4 从前至后渲染场景中的对象从前至后渲染可以尽可能早地精选出不需要绘制的对象和象素5 使用三角条带代替三角列表和三角扇。为了能更有效利用顶点高速缓存(cache),在排列条带时因考虑尽快重用顶点。6 根所需要据消耗的系统资源来逐步减少特效。7 经常性地检测程序的性能。这样 阅读全文
posted @ 2014-02-08 11:53 紫龙_ 阅读(138) 评论(0) 推荐(0)
摘要: 1、关于SetViewPort如果不调用SetViewPort,那么设备对应的ViewPort是什么。2、关于多线程渲染如果逻辑线程和渲染线程分开, 则存在两种渲染方式a、逻辑线程一次性提交渲染任务, 即先update,再render,两个过程严格分开, 在render提交渲染指令。b、逻辑线程多次... 阅读全文
posted @ 2014-02-08 10:53 紫龙_ 阅读(217) 评论(0) 推荐(0)