1 //----------------------------------------------------------------------------- 2 // File: XBResource.h 3 // 4 // Desc: Loads resources from an XPR (Xbox Packed Resource) file. 5 // 6 // Hist: 03.12.01 - New for April XDK release 7 // 8 // Copyright (c) Microsoft Corporation. All rights reserved. 9 //----------------------------------------------------------------------------- 10 #ifndef XBRESOURCE_H 11 #define XBRESOURCE_H 12 13 14 15 //----------------------------------------------------------------------------- 16 // Name: XBResource_SizeOf() 17 // Desc: Determines the byte size of a D3DResource 18 //----------------------------------------------------------------------------- 19 DWORD XBResource_SizeOf( LPDIRECT3DRESOURCE8 pResource ); 20 21 22 23 24 25 //----------------------------------------------------------------------------- 26 // Name: struct XBRESOURCE 27 // Desc: Name tag for resources. An app may initialize this structure, and pass 28 // it to the resource's Create() function. From then on, the app may call 29 // GetResource() to retrieve a resource using an ascii name. 30 //----------------------------------------------------------------------------- 31 struct XBRESOURCE 32 { 33 CHAR* strName; 34 DWORD dwOffset; 35 }; 36 37 38 39 40 41 //----------------------------------------------------------------------------- 42 // Name: class CXBPackedResource 43 // Desc: 44 //----------------------------------------------------------------------------- 45 class CXBPackedResource 46 { 47 protected: 48 BYTE* m_pSysMemData; // Alloc'ed memory for resource headers etc. 49 BYTE* m_pVidMemData; // Alloc'ed memory for resource data, etc. 50 51 DWORD m_dwNumResources; // Number of loaded resources 52 53 XBRESOURCE* m_pResourceTags; // Tags to associate names with the resources 54 55 public: 56 // Loads the resources out of the specified bundle 57 HRESULT Create( LPDIRECT3DDEVICE8 pd3dDevice, const CHAR* strFilename, 58 DWORD dwNumResources, XBRESOURCE* pResourceTags = NULL ); 59 60 VOID Destroy(); 61 62 // Functions to retrieve resources by their offset GetData(DWORD dwOffset)63 VOID* GetData( DWORD dwOffset ) const 64 { return &m_pSysMemData[dwOffset]; } 65 GetResource(DWORD dwOffset)66 LPDIRECT3DRESOURCE8 GetResource( DWORD dwOffset ) const 67 { return (LPDIRECT3DRESOURCE8)GetData(dwOffset); } 68 GetTexture(DWORD dwOffset)69 LPDIRECT3DTEXTURE8 GetTexture( DWORD dwOffset ) const 70 { return (LPDIRECT3DTEXTURE8)GetData( dwOffset ); } 71 GetCubemap(DWORD dwOffset)72 LPDIRECT3DCUBETEXTURE8 GetCubemap( DWORD dwOffset ) const 73 { return (LPDIRECT3DCUBETEXTURE8)GetData( dwOffset ); } 74 GetVolumeTexture(DWORD dwOffset)75 LPDIRECT3DVOLUMETEXTURE8 GetVolumeTexture( DWORD dwOffset ) const 76 { return (LPDIRECT3DVOLUMETEXTURE8)GetData( dwOffset ); } 77 GetVertexBuffer(DWORD dwOffset)78 LPDIRECT3DVERTEXBUFFER8 GetVertexBuffer( DWORD dwOffset ) const 79 { return (LPDIRECT3DVERTEXBUFFER8)GetData( dwOffset ); } 80 81 // Functions to retrieve resources by their name 82 VOID* GetData( const CHAR* strName ) const; 83 GetResource(const CHAR * strName)84 LPDIRECT3DRESOURCE8 GetResource( const CHAR* strName ) const 85 { return (LPDIRECT3DRESOURCE8)GetData( strName ); } 86 GetTexture(const CHAR * strName)87 LPDIRECT3DTEXTURE8 GetTexture( const CHAR* strName ) const 88 { return (LPDIRECT3DTEXTURE8)GetResource( strName ); } 89 GetCubemap(const CHAR * strName)90 LPDIRECT3DCUBETEXTURE8 GetCubemap( const CHAR* strName ) const 91 { return (LPDIRECT3DCUBETEXTURE8)GetResource( strName ); } 92 GetVolumeTexture(const CHAR * strName)93 LPDIRECT3DVOLUMETEXTURE8 GetVolumeTexture( const CHAR* strName ) const 94 { return (LPDIRECT3DVOLUMETEXTURE8)GetResource( strName ); } 95 GetVertexBuffer(const CHAR * strName)96 LPDIRECT3DVERTEXBUFFER8 GetVertexBuffer( const CHAR* strName ) const 97 { return (LPDIRECT3DVERTEXBUFFER8)GetResource( strName ); } 98 99 // Constructor/destructor 100 CXBPackedResource(); 101 ~CXBPackedResource(); 102 }; 103 104 105 106 107 #endif XBRESOURCE_H 108