xbox-kernel/private/ntos/ani2/logo_renderer.h
2020-09-30 17:17:25 +02:00

106 lines
2.8 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// File: logo_renderer.h
//
// Copyright 2001 Pipeworks Software
///////////////////////////////////////////////////////////////////////////////
#ifndef __LOGO_RENDERER_H__
#define __LOGO_RENDERER_H__
class LogoRenderer
{
private:
LPDIRECT3DVERTEXBUFFER8 pLipVB;
WORD *pLipIndices;
DWORD nLipVerts;
DWORD nLipIndices;
LPDIRECT3DTEXTURE8 pLipTex;
LPDIRECT3DVERTEXBUFFER8 pSurfaceVB;
WORD *pSurfaceIndices;
DWORD nSurfaceVerts;
DWORD nSurfaceIndices;
LPDIRECT3DTEXTURE8 pSurfaceTex;
LPDIRECT3DVERTEXBUFFER8 pSurfaceTopVB;
WORD *pSurfaceTopIndices;
DWORD nSurfaceTopVerts;
DWORD nSurfaceTopIndices;
LPDIRECT3DTEXTURE8 pSurfaceTopTex;
LPDIRECT3DVERTEXBUFFER8 pInteriorVB;
WORD *pInteriorIndices;
DWORD nInteriorVerts;
DWORD nInteriorIndices;
bool bRenderText;
LPDIRECT3DVERTEXBUFFER8 pText_VB;
WORD *pText_Indices;
DWORD nText_Verts;
DWORD nText_Indices;
D3DMATRIX matText_Anim;
LPDIRECT3DVERTEXBUFFER8 pSlashTM_VB;
WORD *pSlashTM_Indices;
DWORD nSlashTM_Verts;
DWORD nSlashTM_Indices;
LPDIRECT3DVERTEXBUFFER8 pTextTM_VB;
WORD *pTextTM_Indices;
DWORD nTextTM_Verts;
DWORD nTextTM_Indices;
LPDIRECT3DTEXTURE8 pTMTex;
float fTMAlpha;
DWORD dwInteriorPShader;
DWORD dwInteriorVShader;
void createSlash();
void createText();
void createTMs();
LPDIRECT3DTEXTURE8 pSlashTexture;
bool bHasWordmark;
void createSlashSurface(); // don't call until camera is in final position
// Decompressed slash data.
WORD * indices_xboxlogolip_0;
float * verts_xboxlogolip_0;
WORD * indices_xboxlogosurface_0;
float * verts_xboxlogosurface_0;
WORD * indices_xboxlogosurfacetop_0;
float * verts_xboxlogosurfacetop_0;
WORD * indices_xboxlogointerior_0;
float * verts_xboxlogointerior_0;
WORD * indices_tm_wordmark_0;
float * verts_tm_wordmark_0;
WORD * indices_tm_slash_0;
float * verts_tm_slash_0;
// Decompressed wordmark data.
WORD * indices_text_0;
float * verts_text_0;
void decompressData();
float * decompressPosData(short *pdata,int ncount,float f_oo_pos_scale,float f_pos_delta );
float * decompressPosTexData(short *pdata,int ncount,float f_oo_pos_scale,float f_pos_delta,
float f_oo_tex_scale,float f_tex_delta );
WORD * decompressIndexData(char *pdata,int ncount);
public:
void create();
void destroy();
void advanceTime(float fElapsedTime, float fDt);
void render(const D3DMATRIX &mat_otw, bool b_force_3d_render = false);
};
#endif // __LOGO_RENDERER_H__