
DirectX
文章平均质量分 72
trandy
这个作者很懒,什么都没留下…
展开
-
D3D基本概念
用过3DMAX的人都知道,一个3D场景是由很多模型(model)组成的,而模型就是通常说的网格(mesh), 它是由三角形面(triangle)组成,而每个三角形面又是由3个顶点(vertex)构成。如图: 材质(materal)和纹理(texture): 光有网格模型看上去就是一个物品的轮廓,为了让模型具有真实感,我们就要为模型赋予材质和纹理。 材质包含颜色,D3转载 2011-11-17 22:36:35 · 1649 阅读 · 0 评论 -
第一个D3D程序
#include LPDIRECT3D8 g_pD3D = NULL; // 用来创建D3D设备LPDIRECT3DDEVICE8 g_pd3dDevice = NULL; // D3D设备// 初始化D3DHRESULT InitD3D( HWND hWnd ){ // 创建D3D对象 if( NULL == ( g_pD3D =转载 2011-11-17 22:38:11 · 1123 阅读 · 0 评论 -
顶点渲染
渲染的基本步骤是这样的: (1) 定义顶点格式和FVF (2) 创建顶点缓冲区并填充之 (3) 用D3D进行渲染 我们来渲染一个简单的三角形,但它的3个顶点颜色不同。 一、首先来看定义顶点格式和FVF 想要渲染顶点,首先你得有个缓冲区,在D3D中这样定义: LPDIRECT3DVERTEXBUFFER8 g_pVB = NU转载 2011-11-17 22:39:19 · 2611 阅读 · 5 评论 -
索引顶点
什么是索引顶点呢?上次我们讲的渲染是直接把所有顶点的数据按顺序放到顶点缓冲中,然后每次取3个点的数据出来渲染成一个三角形,但是大家有没有考虑过,在一个3D模型中一个点可能要同时处于多个三角形面上,如果直接把顶点数据放进缓冲区,那么重复的顶点就会占用多余的内存。 怎么解决这个问题呢? 答案就是我们今天的主题--索引顶点! 我们把顶点的具体数据和代表三角形的3个顶点的索引分开,顶点数转载 2011-11-17 22:39:54 · 1251 阅读 · 0 评论 -
摄像机
首先来看摄象机的原理,还是先看图吧:(一张图胜过千言万语) 一台摄象机有以上画面中的一些属性: 1、 观察点:摄象机摆放的位置 2、 目标点:摄象机对着一个地方 3、 观察范围:圆锥形状投影范围的夹角大小,单位是弧度。 4、 可见的最近距离和最远距离:这两个距离中间的观察范围就是可见区域。 5、 纵横比:显示时候的宽和高比例,一般为1。 明白了转载 2011-11-17 22:41:14 · 671 阅读 · 0 评论 -
纹理
什么是纹理?纹理就是我们通常说的贴图(又叫蒙皮)。其原理就是在3D的模型上面覆盖上2D的图片,让我们的3D模型显得更真实。看下面的两张图片,左边的是没有贴图的老虎模型,右边是贴了图的,很明显,贴了图的看上去更真实一些。 令人高兴的是,D3D已经为我们提供了很方便的纹理功能,不过在实际动手之前,我们先来了解几个关于纹理的重要概念。一、纹理尺寸 纹理都是2D的图片,转载 2011-11-17 22:44:12 · 1364 阅读 · 0 评论 -
3D模型(.x)
2D游戏中的精灵和建筑的都是美术们预先画好的图片,那么3D中是什么呢?答案是‘模型’,是3DMAX或是MAYA做出来3D模型,模型中存储了顶点的位置、面的组成、顶点的纹理坐标、材质和贴图等等我们需要的信息。一般的3D游戏都有自己的模型格式,D3D也有一种模型格式,那就是.x文件。 D3D已经为我们做好.x文件的支持,所以使用起来非常的方便,只需要简单的几条函数就可以把一个模型渲染出来了。如果转载 2011-11-17 22:45:08 · 1166 阅读 · 0 评论 -
D3DXMatrixTranslation D3D中的平移函数
在3D里平移矩阵,应是使用最多的矩阵,由于每个物体相对位置,总是通过平移矩阵来变换出来。物体的整体移动,就是坐标点的移动。比如从点(x,y,z)移动到新的位置(x', y', z'),就可以使用下面的矩阵乘法实现:= ×上面的表示了X轴,Y轴,Z轴的平移距离。在D3D提供了平移函数D3DXMatrixTranslation,使用这个函数就可以设置一个平移矩阵。它的具体参数如下:转载 2011-11-18 20:04:10 · 1654 阅读 · 0 评论 -
D3D 已犯错误整理
显卡渲染时,要先擦后画void CD3DInit::Render(){ if(NULL == g_pD3DDevice) return; //--将填充后台缓冲区置为黑色 g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0),1.0f,0); g_pD3DD原创 2011-11-18 19:52:01 · 881 阅读 · 0 评论 -
D3D常用函数备份
D3DXCOLOR* D3DXColorAdd //两个颜色的组合值D3DXCOLOR* WINAPI D3DXColorAdjustContrast( //调整颜色对比度D3DXCOLOR *pOut,const D3DXCOLOR *pC,FLOAT c);D3DXCOLOR* WINAPI D3DXColorAdjustSaturation( //调整颜色饱和度转载 2011-11-20 19:37:39 · 653 阅读 · 0 评论 -
DrawIndexedPrimitive函数的详细解释
为了便于说明,首先假设存在下列的顶点缓冲和索引缓冲 vb= { {-1.0, 1.0, 0.0}, index 0 { 1.0, 1.0, 0.0}, index 1 { 1.0,-1.0, 0.0}, index 2 {-1.0,-1.0, 0.0}, index 3 {-2.0, 2.0, 0.0}, index 4转载 2011-11-21 10:38:57 · 737 阅读 · 0 评论 -
详细介绍Quake 2 BSP文件格式和应用
简介 BSP文件格式是QUAKE 2用于存储地图的一种文件格式,说得具体点,就是用于渲染Q2世界的。尽管有其他的信息包含在BSP文件中,用于其他游戏部分(如敌人AI,等等),在这篇文章中,我不将讨论他们。如果你有这方面的知识,请告诉我,我的E-MAIL在下面。在这篇文章中难免有错误之处,请告诉我。 为了更清楚的描述BSP文件格式,在这篇文章中将试图对Q2渲染引擎进行技术方面的描转载 2011-11-18 13:12:46 · 894 阅读 · 0 评论 -
BSP结构文件分析
一直都想把Hl2的BSP的文件给分析分析,之前也尝试过很多次,可一直进展缓慢,昨天又看了一下一个BSPLoad的源码,终于知道是个什么概念了…………头文件中包含:BSP文件的版本号等信息.struct dheader_t{ int ident; int version; lump_t转载 2011-11-18 13:12:18 · 788 阅读 · 0 评论 -
灯光
在D3D中有4种类型的灯光,用它们可以让3D世界显得真实。一、环境光(Ambient Light) 最简单的一种光,只有一个颜色值,它为世界提供一个基本的照明亮度。没有方向、没有衰减,也不会产生阴影。二、点光(Point Light) 从一个点向周围均匀发射的光,有最大的照明范围,亮度随距离衰减,最明显的一个例子就是我们家里用的灯泡。 三、方向光(Direc转载 2011-11-17 22:42:58 · 907 阅读 · 0 评论 -
D3DPRESENT_PARAMETERS 参数说明
D3DPRESENT_PARAMETERS 参数说明struct D3DPRESENT_PARAMETERS{ UINT BackBufferWidth; UINT BackBufferHeight; D3DFORMAT BackBufferFormat; UINT BackBufferCount; D3DMULTISAMPLE_TYPE转载 2011-11-16 13:33:18 · 576 阅读 · 0 评论 -
D3DMATRIX 和 D3DXMATRIXA16
在Direct3D中,顶点坐标变换通常是借助于矩阵实现的,因此下面首先介绍在Direct3D中提供的各种矩阵类型和相关的矩阵运算函数。1、D3DMATRIX矩阵类型D3DMATRIX是Direct3D中最简单的矩阵类型,其定义如下:typedef struct _D3DMATRIX { union { struct { fl转载 2011-11-16 13:59:14 · 3570 阅读 · 1 评论 -
IDirect3DDevice9::Clear
为了渲染并显示一个场景,此步骤中示例代码的做法是:清除后备缓冲,并设置为蓝色,将后备缓冲中的内容提交到前台缓冲中,最后将前台缓冲呈现给屏幕。为了清除一个场景,需要调用IDirect3DDevice9::Clear方法。// Clear the back buffer to a blue colorg_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TA转载 2011-11-16 14:08:22 · 2609 阅读 · 1 评论 -
D3DXMatrixPerspectiveFovLH
创建一个左手坐标系的透视投影矩阵。 定义: D3DXMATRIX *WINAPI D3DXMatrixPerspectiveFovLH( D3DXMATRIX *pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf); 参数: pOut [in, out] 指向D3DX转载 2011-11-16 14:00:58 · 1706 阅读 · 0 评论 -
D3DXCreateTextureFromFileEx中参数介绍
D3DXCreateTextureFromFileEx这个函数有14个参数,在MSDN中的原型(后面中文解释为本人理解,仅供参考,原文请查看MSDN):HRESULT D3DXCreateTextureFromFileEx(LPDIRECT3DDEVICE9 pDevice, //调入是IDirect3DDevice9对象指针LPCTSTR pSrcFile,转载 2011-11-16 14:15:19 · 7415 阅读 · 0 评论 -
SetRenderState 设置渲染状态
1). 设置着色模式: SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT) //设置平面着色模式SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD) //设置格劳德着色模式2). 设置转载 2011-11-16 14:19:58 · 5540 阅读 · 0 评论 -
SetStreamSource
(渲染数据流序号,顶点缓冲区指针,启始位置,顶点大小)第一个参数:渲染数据流是啥东西,一直不清楚,总是设为0。第二个参数:顶点缓冲区指针。第三个参数:启始位置,这个也不清楚,总是设为0。第四个参数:顶点大小。转载 2011-11-16 14:32:49 · 676 阅读 · 0 评论 -
D3DCULL_MODE
D3DCULL_MODE是背面隐藏消除的意思. 出于性能或者其它方面考虑,D3D默认在绘制三角形的时候,只绘制一面,D3DRS_CULLMODE可以设置绘制正面还是反面,或者两面都绘制,(可以这样定义:在观察空间观察某个三角形时,如果三角形的3个顶点p1、p2、p3呈逆(顺)时针排列时,显示这个三角形)。 SetRenderState( D3DRS_CUL转载 2011-11-16 13:32:47 · 2438 阅读 · 0 评论 -
D3DFVF_XYZ和D3DFVF_XYZRHW的区别
D3DFVF_XYZ和D3DFVF_XYZRHW有什么区别?以前好像没有仔细思考过。 今天,做了个实验得知,在顶点结构体中没有RHW时,Direct3D将执行视、投影、世界等变换以及进行光线计算,之后你才能在窗口中得到你所绘制的物体。当顶点结构体中有RHW时,就像上面那段英文所述,告知Direct3D使用的顶点已经在屏幕坐标系中了,不再执行视图、投影、世界等变换和光线计算,因为D转载 2011-11-16 13:33:48 · 514 阅读 · 0 评论 -
SetSamplerState
///////////////////////////////////设置四种寻址模式void CGameApp::SetItem(){if(KEYDOWN(VK_F1)) //环绕寻址{m_pD3DDevice->SetSamplerState(0,D3DSAMP_ADDRESSU,D3DTADDRESS_WRAP);m_pD3DDevice->SetSamplerSt转载 2011-11-16 13:52:04 · 1934 阅读 · 0 评论 -
DrawPrimitive
对于DrawPrimitive函数,MSDN中是这样的HRESULT DrawPrimitive(D3DPRIMITIVETYPE PrimitiveType,UINT StartVertex,UINT PrimitiveCount);第一个参数是一个标记,它通知 Direct3D 绘制哪种类型的物件;第二个参数是第一个顶点的索引;第三个参数通知绘制的物件的数目;转载 2011-11-16 14:33:57 · 1349 阅读 · 1 评论 -
ID3DXSprite
前言:本教程面向对DriectX 9.0有一定了解的读者,主要讲解DirectX 9.0的各个部分的功能及用法。希望对广大的游戏初学者有一定帮助,也好让本人对中国游戏事业的发展做出一些微不足道的贡献。作者:Fabric(由于本人是广东人,写文章难免参杂粤语写法,请见谅) 简介:ID3DXSprite是DriectX 9.0里面的一个简单模块,在DriectX 9.0帮助文档里面对其功能的描术转载 2012-03-17 00:36:57 · 1002 阅读 · 0 评论