随笔分类 - D3D
摘要:原文出处:SGI OpenGL 教程翻译:心蓝 潘李亮。 Email:Xheartblue@etang.com译者前言: 影子有两种经典的实现方法:一是Shadow Volume 。二是Shadow Mapping。如何用Light Mapping来实现投影影子呢?这就要用到Project Texture.直接翻译的意思就是投影纹理----把一个纹理像放幻灯片一样投影到场景中去,假想有一个电影机在放电影,沿着镜头方向,电影将被投在墙上,而投影纹理就类似于这种情况,我们想要使用的纹理就是电影机里Film。 以下是我在SGI的教程中找到的文章。奉献给大家。How to Project a Te..
阅读全文
摘要:http://flcstudio.blog.163.com/blog/static/756035392008115111123672/最近,我看到很多关于DirectX8在最新的API中摒弃DirectDraw的问题。很多人回到了以前的DX7.1中。我可以理解那些在DX7.1中有很多开发经验的人为什么这样做,但是有很多问题却是来自于那些刚学DX,还没有学过以前的API的初学者。人们争辩说很多人没有3D硬件,因此D3D对于DirectDraw是个错误的选择。我不相信那是真的,在D3D中进行2D渲染只需要做一点顶点操作,而其他的事情都可以被精简来提高填充率。简言之,在D3D中使用2D硬件进行2D渲
阅读全文
摘要:opengl 右手坐标系 列向量 左乘 列主序存储矩阵osg 右手坐标系 行向量 右乘 行主序存储矩阵d3d 左手坐标系 行向量 右乘 行主序存储矩阵ogre 右手坐标系 列向量 左乘 行主序存储矩阵 osg 底层使用的是opengl ,行向量,由于使用矩阵是行主序存储, 相同变换矩阵与opengl
阅读全文
摘要:3D图形渲染管线什么是渲染(Rendering)渲染简单的理解可能可以是这样:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景(如图1):图1:Rendering什么是渲染管线渲染管线也称为渲染流水线,是显示芯片内部处理图形信号相互独立的的并行处理单元。一个流水线是一序列可以并行和按照固定顺序进行的阶段。每个阶段都从它的前一阶段接收输入,然后把输出发给随后的阶段。就像一个在同一时间内,不同阶段不同的汽车一起制造的装配线,传统的图形硬件流水线以流水的方式处理大量的顶点、几何图元和片段。图2显示了当今图形处理器所使用的图形硬件流水线。三维应用程序传给图
阅读全文
摘要:1.镜头不对: 物体不在镜头范围内,检查视图矩阵,世界矩阵,投影矩阵. 2.颜色全黑: 打开光照情况下,MATERIAL全为0, 或,在没有打开光照情况下,颜色值为0,造成全黑.检查当前Material和顶点颜色和纹理颜色. 3.深度不对: 被已有的深度遮住了.检查当前深度,直接在此渲染前加Clear深度为1.0作测试. 4.CullMode设置不对: 所有三角形被当作背面剔除了,设为CULL_NONE测试. 5.3D物件的纹理坐标统统大于1.0,且此时纹理寻址方式为BORDER, 且BORDER被设为黑色,画面全黑. 6.深度被Clear为0.0,且打开深度测试,绝对什么都画不上,...
阅读全文
摘要:1. 在Create D3D资源的时候,使用V()宏是非常必要的,因为很多情况下,即使D3D 资源创建失败,他也会继续执行下去,如此以来,程序的bug的定位就麻烦了很多,而使用V()宏会在出错的地方及时停下来,当然也有不好的地方,因为宏定义本身使用了if语句,因此如果V()宏下方有else将会导致else匹配if时出错的问题。2. Pair函数成对使用,我把Create-Release,Begin-End等等函数称为Pair函数,更多的时候,这应该称为一种习惯,就像括号的匹配一样,前者容易导致内存泄露,而后者产生的bug就更加奇怪,例如release下结果正常,而debug模式下结果却比较奇怪
阅读全文
摘要:From the DXSDK DocumentationD3DFVF_XYZRHW - Vertex format includes the position of a transformed vertex. This flag cannot be used with the D3DFVF_XYZ or D3DFVF_NORMAL flags.D3DFVF_XYZW - Vertex format contains transformed and clipped (x, y, z, w) data. ProcessVertices does not invoke the clipper, in
阅读全文
摘要:from http://www.cnblogs.com/clayman/archive/2010/12/31/1923354.html DX9 DX10 DX11 DirectComputer:
阅读全文
摘要:http://www.sineysoft.com/blog/post/D3D_rm.html摘要受管贴图(Managed textures,也就是我们通常所谓的“自动管理贴图”),在DX6中首次被引入,经过一系列的改进和增强,在DX9中自动管理的资源类型增加到贴图,顶点缓冲,顶点索引缓冲,所有这些资源使用统一的公共接口。通过使用D3D资源管理器,应用程序可以轻松的处理设备丢失、处理稍微过量的显存使用。有时开发者在使用受管资源会遇到一些困难,这部分归咎与系统的抽象特性。在大多数情况下使用受管对象是不错的选择,但有时出于性能考虑也会使用非托管资源。这篇文章将讨论一般情况下如何处理资源,受管与非受管
阅读全文
摘要:1 只在必须的时候Clear。 IDirect3DDevice9::Clear函数通常需要花费较多的时间,因此要尽量少调用,而且只清空的确需要清空的缓存。 2 尽量减少状态切换。并且将需要进行的状态切换组合在一起设置。 状态包括RenderState,SamplerState,TextureStageState等 3 纹理尺寸尽可能小 4 从前至后渲染场景中的对象 从前至后渲染可以尽可能早地精选出不需要绘制的对象和象素 5 使用三角条带代替三角列表和三角扇。为了能更有效利用顶点高速缓存(cache),在排列条带时因考虑尽快重用顶点。 6 根所需要据消耗的系统资源...
阅读全文
摘要:http://hi.baidu.com/_%E2d_%B7%B3_%DE%B2%C2%D2/blog/item/6c5251d185c124d9572c84ae.html下面,我们来介绍一下怎么使用DX SDK自带的工具PIX For Windows来调试Shader。这里只做简要的介绍,具体的情参看PIX的文档哈。如何找到文档呢?打开DX SDK开始菜单下面的DirectX Documentation for C++,我的版本是09年8月版本的,到目前为止好像是最新版,呵呵。然后依次:DirectX Software Development Kit/Tools/DirectX Perform
阅读全文
摘要:最近在优化项目中用的到引擎,下面是搜集到的一下资料,转帖如下:1 只在必须的时候Clear。IDirect3DDevice9::Clear函数通常需要花费较多的时间,因此要尽量少调用,而且只清空的确需要清空的缓存。2 尽量减少状态切换。并且将需要进行的状态切换组合在一起设置。状态包括RenderState,SamplerState,TextureStageState等3 纹理尺寸尽可能小4 从前至后渲染场景中的对象从前至后渲染可以尽可能早地精选出不需要绘制的对象和象素5 使用三角条带代替三角列表和三角扇。为了能更有效利用顶点高速缓存(cache),在排列条带时因考虑尽快重用顶点。6 根所需要据
阅读全文
摘要:A painless introduction to PIX for WindowsFor those interested in game development technology, it’s been a great week of product releases! Monday we saw the 1.0 release ofXNA Game Studio Express. Wednesday brought the release of the December 2006 version of theDirectX SDK, which includes the product
阅读全文
摘要:http://www.cppblog.com/Leaf/archive/2009/08/11/92897.htmlhttp://blog.csdn.net/ltttklyzy/article/details/6330692
阅读全文
摘要:<1>. 若顶点结构中不设置颜色,也不设置顶点法线,只有位置。struct Vertex{ Vertex(){} Vertex(float x, float y, float z) { _x = x; _y = y; _z = z; } float _x, _y, _z; static const DWORD FVF;};const DWORD Vertex::FVF = D3DFVF_XYZ;绘制的时候D3D默认使用黑色来绘制三角形,所以Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_Z...
阅读全文
摘要:原文:http://www.cnblogs.com/winsonchen/archive/2008/02/17/1071319.html在3D游戏中,UI占了很大一部分窗口元素,比如魔兽争霸1024*768屏幕设置,除去底部控制台及顶部资源面板,场景渲染区域只有1024*570。要知道对于如今的3D游戏,越来越多的资源使用normalmap,越来越复杂的着色器代码,能够避免四分之一的ui窗口区域无效渲染,带来的性能提升余地是很大的。 正常的渲染次序是:RenderScene();RenderUI()。被UI界面遮挡的场景部分有两个方法可以优化:一是通过设置新的裁剪体过滤掉哪些经过坐标转换后被U
阅读全文
摘要:HRESULT SetClipPlane(DWORDIndex,CONST float *pPlane);参数:第一个是索引,不用说了。第二个是存着 A B C D的数组。这个数组最后会用来构建 Ax+By+Cz+Dw = 0;平面。然后顶点会根据自已的位置(x,y,z,w)来进行判断。如果Ax+By+Cz+Dw >= 0。则表示在平面前方,保留。反之则在后方,被裁剪掉。值得注意的时,在固定管线使用平面裁剪的时候,是在世界坐标系中处理的。而用SHADER的时候,是在裁剪空间中处理的。(即顶点输出的时候的坐标系)貌似还是太抽象。比如顶点输入坐标是pos 此时的坐标变换阵是WVP,则 Out
阅读全文
摘要:开始错误一大堆。。。都是shader里面的语法错误。。。我擦!#include "d3dUtility.h"const DWORD width = 640;const DWORD height = 480;//// Globals//IDirect3DDevice9* Device = 0; IDirect3DVertexShader9* pShader = 0;ID3DXConstantTable* pConstTable = 0;ID3DXMesh* teaPot = 0;D3DXHANDLE viewMatHandle;D3DXHAND...
阅读全文
摘要:http://blog.csdn.net/cppyin/article/details/6177742在3D程序中,通常用quaternion来计算3D物体的旋转角度,与Matrix相比,quaternion更加高效,占用的储存空间更小,此外也更便于插值。在数学上,quaternion表示复数w+xi+yj+zk,其中i,j,k都是虚数单位:i*i = j*j = k*k= -1i*j = k, j*i = -k可以把quaternion看做一个标量和一个3D向量的组合。实部w表示标量,虚部表示向量标记为V,或三个单独的分量(x,y,z)。所以quaternion可以记为[ w,V]或[ w,
阅读全文
摘要:SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE ) :不要剔除背面,即正反面都绘制。 SetRenderState( D3DRS_CULLMODE, D3DCULL_CW ) :把顺时针的方向看作背面剔除掉 SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW ) :把逆时针的方向看作背面剔除掉(在消隐中为默认值)默认值为D3DCULL_CCW, 即:把顺时针方向作为正面,逆时针方向的面作为反面剔除掉。
阅读全文

浙公网安备 33010602011771号