随笔分类 -  DirectX

摘要:目前发现360上会验证失败导致assertion false的函数: D3DXMatrixLookAtLH() Cause: vecEye, vecAt均为Vec3(0,0,0) Solution: vecAt[Vec3(0,0,0)]->vecAt[Vec3(0,0,-1)] 阅读全文

posted @ 2009-03-04 21:59 活着就是幸福 阅读(229) 评论(0) 推荐(0)

摘要:DirectX SDK 2008 June中使用PIX进行Playback导致Clear等函数失效。2008 March版本的DXSDK没有问题。 阅读全文

posted @ 2009-03-04 21:58 活着就是幸福 阅读(213) 评论(0) 推荐(0)

摘要:1.Front buffer: 用来被显示卡显示的内存 2.Back buffer: 一块内存,里面的内容被提交给front buffer 3.Swap chain: Back buffer的集合,可以被连续的提交给front buffer. 4.D3D device至少有一个Swap chain。 5.Front buffer不被暴露给D3D。程序不能Lock或者渲染到front buffer... 阅读全文

posted @ 2008-12-11 23:25 活着就是幸福 阅读(271) 评论(0) 推荐(0)

摘要:1.光的数学 全局光照模型(Phong): Global Illumination = Ambient Light + Diffuse Light + Specular Light + Emissive Light 1. 环境光(常量光,所有方向和像素上都相同) 不依赖于顶点法线,光方向,光源位置,范围和衰减。 2. 漫反射光 依赖于光方向和表面法线向量。 ... 阅读全文

posted @ 2008-12-11 22:56 活着就是幸福 阅读(265) 评论(0) 推荐(0)

摘要:1. Lock资源会导致引用资源的其他操作被连续化。 2. DXTn格式以4x4块储存像素, 只能在4x4边界进行lock. 3. D3D使用最少-最近-使用优先级管理资源。如果检测到太多资源部嫩共存,则使用此技术。 资源池类型: D3DPOOL_DEFAULT: 最合适的地方。在设备丢失和reset时必须重新创建。 D3DPOOL_MANAGED: 托管资源在显示和系统内存里。设备丢失和rese... 阅读全文

posted @ 2008-12-05 13:22 活着就是幸福 阅读(197) 评论(0) 推荐(0)

摘要:1. alpha混合允许一个surface上的颜色材质和纹理通过透明度混合到另一个surface上。alpha混合依赖于D3DRS_SRCBLEND和D3DRS_DESTBLEND 。他们是成对使用的。 2. alpha测试 D3DRS_ALPHATESTENABLE控制开关。 D3DRS_ALPHAFUNC 控制行为 D3DRS_ALPHAREF 控制参考值 如果硬件不支持alpha测试那么... 阅读全文

posted @ 2008-12-05 12:17 活着就是幸福 阅读(418) 评论(0) 推荐(0)

摘要:1. 线list 单根线的集合。顶点数是大于等于2的偶数。线之间无关。材质和纹理只沿着线画。 2. 线Strips 连接的线段组成。开始和结束不连接。不担保共面。 3. 三角list 单个三角形集合。顶点数大于等于3的整数倍。三角形之间可以相邻或者无关。可以使用三角形Strip方式替代(不相邻的三角形之间可以使用退化三角形连接) 4. 三角Strips 一系列连接的三角形。程序不必重复指定... 阅读全文

posted @ 2008-12-04 23:35 活着就是幸福 阅读(269) 评论(0) 推荐(0)

摘要:1. IDirect3D9::CheckDeviceFormat 检查surface格式是否可用作texture. 检查surface格式是否可用作texture和render-target. 检查surface格式是否可用作depth/stencil buffer. 检查depth buffer和depth/stencil格式支持。 2. IDirect3D9::CheckDeviceType... 阅读全文

posted @ 2008-12-04 23:34 活着就是幸福 阅读(256) 评论(0) 推荐(0)

摘要:D3D设备可能处于可操作状态或者丢失状态。前者是正常状态。后者可能由失去键盘焦点或者全屏程序无法渲染造成。丢失状态的特点是所有的渲染操作都会返回成功值,但是渲染操作实际上失败了。这时 IDirect3DDevice9::Present会返回D3DERR_DEVICELOST。 会引起设备丢失的情况可能有:失去焦点,比如按下ALT+TAB 或者弹出一个系统对话框。也可能是由电源管理事件或者其他尝试... 阅读全文

posted @ 2008-12-04 23:33 活着就是幸福 阅读(495) 评论(0) 推荐(0)

摘要:1. 枚举显示卡。单显卡可跳过,使用D3DADAPTER_DEFAULT 2。枚举显示模式IDirect3D9::EnumAdapterModes。 3。使用IDirect3D9::CheckDeviceType检测显示模式 4. 使用IDirect3D9::GetDeviceCaps 检测设备功能,返回的功能担保可以被所有的显示模式支持。 5. 使用IDirect3D9::CheckDevice... 阅读全文

posted @ 2008-12-04 23:33 活着就是幸福 阅读(489) 评论(0) 推荐(0)

摘要:如果将物体全部放在世界坐标系中,然后按照事先想好的场景排好位置,也就是各自都乘以了各自的从物体坐标系到世界坐标系的变换矩阵,那么现在可以在世界坐标系中放置一个摄像机进行拍摄了。 按照(1)里面的例子,我女朋友处于屋子的中心(世界坐标系的原点),我处于(1, 0, 1)处,两个人都是和世界坐标系坐标轴重叠,也就是都看着Z轴方向,都处于立正的状态(其实干点别的更好),那么她的MatTransToWo... 阅读全文

posted @ 2008-11-19 21:57 活着就是幸福 阅读(1641) 评论(1) 推荐(0)

摘要:物体坐标系是模型本身的一个坐标系,一般来讲都是以物体的中心为原点,按一定的比例放置一个物体。比如以自己的腹部为中心,以视线的方向为Z轴正方向,右手方向为X轴正方向,从脚到头的方向为Y轴正方向,以米为单位,假设身高为1.75米,那么自己的头(中心)会处于物体坐标系(0, 0.875, 0)的位置(如果X或Z不是0,你就长歪了)。 世界坐标系是把一堆物体集中放置在一起并且指出它们互相关系的坐标系。比... 阅读全文

posted @ 2008-11-19 20:55 活着就是幸福 阅读(616) 评论(0) 推荐(0)

摘要:1.时间戳自动检测和覆盖 2.颜色提示 3.双平台 4.XBOX360自动产生UPDB文件 不足: 1.产生的UPDB文件都在根目录下 2.错误信息混在编译警告中 3.360版必须打开工程使用DEBUG版进行编译。PC可以使用命令行。 阅读全文

posted @ 2008-10-25 14:56 活着就是幸福 阅读(264) 评论(0) 推荐(0)

摘要:Each shader will have it's own constant table, since each has to be compiled seperately with a call to D3DXD3DXCompileShaderFromFile. Therefore changes to shader constants for one shader will not affe... 阅读全文

posted @ 2008-10-25 14:52 活着就是幸福 阅读(203) 评论(0) 推荐(0)

摘要:非static 定义的变量在shader里面不会使用初始值。 比如float screen_width = 1280.0; 运行时并不会等于1280,貌似会变成0. 好像要调用SetDefault()方法。 阅读全文

posted @ 2008-10-25 14:50 活着就是幸福 阅读(272) 评论(0) 推荐(0)

摘要: 阅读全文

posted @ 2008-10-25 13:09 活着就是幸福 阅读(10891) 评论(0) 推荐(0)

摘要:在两者功能冲突的状态下,好像设置了SetPixelShader以后就按照PixelShader进行输 出,而忽略掉SetTextureStageState的设置。如果想要SetTextureStageState起作用,必须 SetPixelShader( NULL )或者不设置。 比如顶点有Diffuse,加一张Texture SetTextureStageState要使用顶点颜色,而Pixel... 阅读全文

posted @ 2008-10-25 13:07 活着就是幸福 阅读(1323) 评论(0) 推荐(1)

摘要:如果SetFVF()里用了D3DFVF_TEX[N]的话,等于前面的D3DFVF_TEX[N-1]都设置过了,在写 vertex declaration的时候,也要把相应的tex写上.GameDev上各位Gurus回答的原文摘抄如下: 1. D3DFVF_TEXCOORD2 counts as "this vertex has TWO texcoordinates". It's not "Th... 阅读全文

posted @ 2008-10-25 13:06 活着就是幸福 阅读(918) 评论(0) 推荐(0)

摘要:Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->D3DVERTEXELEMENT9 vertexelement[] = { { 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT... 阅读全文

posted @ 2008-10-25 12:39 活着就是幸福 阅读(243) 评论(0) 推荐(0)