上一页 1 ··· 6 7 8 9 10 11 下一页
摘要: 纹理映射在DirectX中,纹理用接口IDirect3DTexture9来表示。纹理是类似于表面的一个像素矩阵,与表面不同的是它可被映射到三角开单元中。Direct3D所使用的纹理 坐标第由沿水平方向的和垂直方向构成的(u,v)用坐标对标识的纹理元素为纹理元。Direct3D 将纹理坐标做了规范化处理使这限定于[0,1].修改顶点结构Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->struct Vertex{flaot _x, _y, _z; 阅读全文
posted @ 2010-04-13 15:38 xyecho 阅读(615) 评论(0) 推荐(0) 编辑
摘要: 光照光照的组成光源发出的的光由以下3个分量3种类型的光组成。·环境光(Ambient Lingth) 光经其他表面反射到达物体表面 并照亮整个场景。如 物体的某些部分一定程度地照亮,但物体并没有处于光照的直接照射下,而是由于其他物体对光的反射。·漫射光(Diffuse Lingth) 光沿着特定的方向传播,当它到达某一表面时, 将沿着各个方向均匀反射。无须考虑观察者的位置。·镜面光(Speculat Light) 光没特定方向传播。 当光到达一个表面时, 将严格地沿着上别一个方向反射,从而形成只能在一定角度范围内才能观察到的高亮度照射。在镜面光照议程中要考虑光线的 阅读全文
posted @ 2010-04-10 14:24 xyecho 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 颜色颜色表示颜色用RGB三元组表示。为红色(red)绿色(Green)蓝色(Blue)。RGB数据可用两种不同的结构来保存。1 D3DCOLOR结构 与DWORD类型完全相同。共有32位。各位被 分成四个8位项(section)每项存储一种分量的亮度量。第个分量的亮度值范围都在[0, 255]区间内。2 D3DCOLORVALUE 结构 有单精度浮点数据试题每个量的亮度值, 亮度值的取范围为[0, 1] (0表示没有亮度, 1表示亮度最大)可用结构D3DXCOLOR替代D3DCOLORVALUE, 前者包含了后者的数据成员 还提供了一组有用的构造函数和重载去运算符。顶点颜色图元的由构成该图元的 阅读全文
posted @ 2010-04-09 13:02 xyecho 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 顶点格式索引原理 视口矩阵 投影矩阵顶点格式 自定义两种顶点格式struct ColorVertex{float _x, _y, _z; //位置DWORD _color; //颜色};struct NormalTecVertex {float _x, -y, _z; //位置float _nx, _ny, _nz; //顶点法线float _u, _v; //纹理坐标};顶点结构定义好之后 需要用灵活顶点格式(Flexible Vertex Format,FVF)期望的组合来描述顶点的组织结构。#define FVF_COLOR (D3DFVF_XYZ | D3DFVF_DIFFUSE)对应 阅读全文
posted @ 2010-04-08 15:40 xyecho 阅读(739) 评论(0) 推荐(0) 编辑
摘要: 顶点缓存与索引缓存创建顶点缓存和索引缓存HRESULTIDirect3DIndexBuffer9:: CreateVertexBuffer(UINT Length,DWORD Usage,DWORD FVF,D3DPOOL Pool,IDirect3DVertexBuffer9 ** ppVertexBuffer,HANDLE * pHandle);HRESULTIDirect3DIndexBuffer9:: CreateVertexBuffer(UINT Length,DWORD Usage,DWORD FVF,D3DPOOL Pool,IDirect3DVertexBuffer9 **pp 阅读全文
posted @ 2010-04-07 14:36 xyecho 阅读(1606) 评论(0) 推荐(0) 编辑
摘要: Direct3D 的初始化分解为如下步骤:1 获取接口 IDrirect3D8的指针。2 检查设备性能(D3DCAPS9), 判断主显(primaty display adapter or primaty graphics card)卡是否支持硬件顶点运算.3 初始化 D3DPRESENT PARAMETERS 结构的一个实例。4 利用已初始化的D3DPRESENT PARAMETER 结构创建IDirect3DDevice9对象(一个C++对象)。获取接口IDirect3D9的指针要初始化IDirect3D,首先必须获取指向接口IDirect3D9的指针。 如下:IDirect3D9 *_d 阅读全文
posted @ 2010-04-06 22:24 xyecho 阅读(1105) 评论(0) 推荐(1) 编辑
摘要: 表面表面是Direct3D主要用于存储2D图像数据的一个像素矩阵。表面的宽度(width)和高度(height)都用像素来度量。跨度(pitch)则用字节来度量。具体地说, 跨度可能会比宽度更“宽”。在代码中, IDirect3DSurface9 来描述表面。该接口提供了几种直接从表面读取和写入数据的方法, 以及一种获取表相关信息的方法。 接口IDirect3DSurfac... 阅读全文
posted @ 2010-04-06 22:20 xyecho 阅读(570) 评论(0) 推荐(1) 编辑
摘要: 双缓冲技术在离屏缓冲绘制图像,然后将其拷贝到显示表面的处理过程被称作双缓冲技术。实现:额外的一块同主DirectDraw表面具有同样尺寸的内存。并在这块内存上画每一帧动画之后拷贝双内在到主显示表面。如:申请640X480X8的内存UCHAR *double_buffer = (UCHAR *) malloc (640*480);或者UCHAR *double_buffer = new UCHAR[640*480];实现:让后备缓冲显示出来,可以把后备缓冲拷贝到主显示页面代码如下:Code highlighting produced by Actipro CodeHighlighter (fre 阅读全文
posted @ 2010-03-30 14:48 xyecho 阅读(945) 评论(0) 推荐(0) 编辑
摘要: DirextX—ddsd.lpitch是什么? lpitch是结构体DDSURFACEDESC2的一项,这个结构体描述了页面/表面的一些信息。 lpitch一般译做步幅(stride)或内存宽度(memory width)。注意,它与DDSURFACEDESC2结构体中的另一项dwWidth的意义是不一样的。 lpitch的单位是字节,dwWidth的单位是像素。所以,一个640×480×8(640×480个像素,每像素用8位,即一个字节表示)页面,dwWidth=640 像素(字节)。但是,此时Lpitch不一定就等于640(字节)!同样一个640×4 阅读全文
posted @ 2010-03-30 14:44 xyecho 阅读(830) 评论(0) 推荐(0) 编辑
摘要: 创建一个主显示表面(Windows游戏编程大师P210)1、填充一个DDSURFACDESC2数据结构。描述你所希望创建的显示表面2、调用IdirectDraw7::CreateSurface() 创建显示表面HREXULT CreatSurface(LPDDSURFACEDESC2 lpDDSufraceDesc2, LPDIRECTDRAWSURFACE4 FAR *lplpDDSurface,IUnknown FAR *pUnkOuter);如何调用:lpdd->CreateSurface(&ddsd, &lpddsprimary, NULL)ddsd 为DDSUF 阅读全文
posted @ 2010-03-30 14:40 xyecho 阅读(234) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 下一页