2022年游戏ui设计 .pdf
《2022年游戏ui设计 .pdf》由会员分享,可在线阅读,更多相关《2022年游戏ui设计 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、游戏 ui 设计 : 游戏 UI设计1疯狂代码 http:/CrazyC ?:http:/CrazyC 1.1 Surfaces的封装 CXSurface 1、Surfaces 是什么 : 通俗讲 surfaces 就是个 2 维矩形平面在 DX9 中和其对应 com 接口为IDirect3DSurface9LPDIRECT3DSURFACE9 2、Surfaces 作用: 作为个矩形平面 surfaces 用来在屏幕上显示平面图象即从文件中读取图象数据呈现给用户 3、IDirect3DSurface9使用般过程 : 声明: LPDIRECT3DSURFACE9 创建: CreateOffsc
2、reenPlainSurface() 获取图象信息 : D3DXGetImageInfoFromFile() 装载到 surfaces 中: D3DXLoadSurfaceFromFile( ) 获取back buffer地址: GetBackBuffer() 显示: UpdateSurface() 释放内存 Release 代码段如下 : LPDIRECT3DSURFACE9 g_Surface =NULL; D3DXIMAGE_INFO Info; D3DXGetImageInfoFromFile(D:image.jpg, &Info); g_pd3dDevice-CreateOffscr
3、eenPlainSurface(Info.Width, Info.Height, Info.Format, &g_Surface, NULL); D3DXLoadSurfaceFromFile(g_Surface, NULL, NULL, D:image.jpg, NULL, D3DX_FILTER_NONE,0 xFF000000, NULL); /- LPDIRECT3DSURFACE9 BackBuffer = NULL; g_pd3dDevice-GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO, &BackBuffer); g_pd3dDevice-
4、UpdateSurface(g_Surface, NULL, BackBuffer, NULL); (BackBuffer != NULL) BackBuffer-Release; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - /- (g_Surface!= NULL) g_Surface -Release; 由上述过程可以看到 IDirect3DSurface9使用虽然不十分复杂但有点不方便 创建和释放总要成对出现使用过程
5、中还穿插着 LPDIRECT3DDEVICE9接口这些若用个类封装起来使用就要方便多 4、如何封装 : 按照surfaces 功能创建它就用来显示图象因此要有读取图象接口和显示图象接口又要和LPDIRECT3DDEVICE9设备接口关联因此需要个设置设备接口如下所示: 1、声明及释放 声明: LPDIRECT3DSURFACE9 释放内存 Release 2、关联图像 :LoadFromFile 获取图象信息 : D3DXGetImageInfoFromFile() 创建: CreateOffscreenPlainSurface() 装载到 surfaces 中: D3DXLoadSurfac
6、eFromFile( ) 3、显示图象 Render 获取缓存 Cache 地址: GetBackBuffer() 显示: UpdateSurface() 4、关联设备接口 SetDevice 所以CXSurface定义如下 : CXSurface protected: LPDIRECT3DSURFACE9 m_Surface; LPDIRECT3DSURFACE9 m_BackBuffer; /Back buffer LPDIRECT3DDEVICE9 m_pDevice; /Direct3D设备指针 public: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
7、- - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - CXSurface(LPDIRECT3DDEVICE9 pDevice); CXSurface; HRESULT LoadFromFile(LPCSTR Path); void Render(void); ; 1.2 Textures & Sprite 的封装 CXTexture & CXSprite 1、何为 Textures Textures 是在屏幕上显示平面图形它能够提供比 surface 更多图形处理效果移动、缩放、旋转及作为纹理皮肤粘贴在
8、3D 模型上在 Direct3D 中其封装接口为 IDirect3DTexture9 2、何为 Sprite IDirect3DTexture9能从文件中读取纹理数据但由于Textures 不能直接复制到 back buffer因此在屏幕上绘制Textures 的前需要另个接口 ID3DXSprite( 精灵)ID3DXSprite 能够把若干个 Textures 复制给 backbuffer 因此需要 ID3DXSprite 个例子就可以绘制所有纹理 所以IDirect3DTexture9用来存放所需纹理但它本身又不能绘制纹理需要借助接口ID3DXSprite 3、IDirect3DText
9、ure9和ID3DXSprite 使用过程 定义: 创建:D3DXCreateTextureFromFile D3DXCreateSprite 创建变换矩阵 : D3DXMatrixTransformation2D 变换: SetTransform 绘制图象 : Draw 释放内存 : 代码如下 : D3DXCreateTextureFromFile(g_pd3dDevice, c:image.bmp”, &g_Texture); D3DXCreateSprite(g_pd3dDevice, &g_Sprite); /- D3DXVECTOR2 Translation; Translation
10、.x = 500; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - Translation.y = 500; D3DXVECTOR2 Scaling; Scaling.x = 1.0;f Scaling.y = 1.0f; D3DXMATRIX Mat; D3DXMatrixTransformation2D(&Mat, NULL, 0, &Scaling, NULL, 0, &Translation); g_Sprite-Be
11、gin(0); g_Sprite-SetTransform(& g_Sprite-Draw(g_Texture, g_Sprite-End; 4、 如何封装 从以上基本过程可以看到CXTexture需要完成功能 : 提供和 LPDIRECT3DDEVICE9接口和纹理文件文件关联对纹理进行处理 ( 缩放、旋转 ) CXTexture protected: LPDIRECT3DTEXTURE9 m_Texture; LPDIRECT3DDEVICE9 m_pDevice; D3DXVECTOR2 m_RotationCenter; D3DXVECTOR2 m_Translation; D3DXV
12、ECTOR2 m_Scaling; FLOAT m_Rotation; RECT m_SrcRect; public: CXTexture(LPDIRECT3DDEVICE9 pDevice); CXTexture; LPDIRECT3DTEXTURE9 GetTexture const m_Texture; void SetTexture(LPDIRECT3DTEXTURE9 Texture) const m_Texture = Texture; LPDIRECT3DDEVICE9 GetDevice const m_pDevice; void SetDevice(LPDIRECT3DDEV
13、ICE9 pDevice) const m_pDevice = pDevice; D3DXVECTOR2 GetRotationCenter const m_RotationCenter; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - void SetRotationCenter(D3DXVECTOR2 RotationCenter) m_RotationCenter = RotationCenter; D3DXVECTOR
14、2 GetTranslation const m_Translation; void SetTranslation (D3DXVECTOR2 Translation) const m_Translation = Translation; D3DXVECTOR2 GetScaling const m_Scaling; void SetScaling(D3DXVECTOR2 Scaling) const m_Scaling = Scaling; FLOAT GetRotation const m_Rotation; void SetRotation (FLOAT Rotation) const m
15、_Rotation = Rotation; RECT GetRect const m_SrcRect; void SetRect(RECT SrcRect) const m_SrcRect = SrcRect; HRESULT LoadFromFile(char* Path); ; CXSprite 主要功能就是在屏幕上显示 CXTexture 因此需要有和 LPDIRECT3DDEVICE9 接口和 CXTexture 连接 CXSprite protected: LPD3DXSPRITE m_Sprite; LPDIRECT3DDEVICE9 m_pDevice; public: CXSp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年游戏ui设计 2022 游戏 ui 设计
限制150内