Files
itgmania212121/stepmania/src/RageDisplay_D3D.h
T
Glenn Maynard 7951b5f3e7 Add helpers: RageDisplay::CreateSurfaceFromPixfmt, RageDisplay::FindPixelFormat.
UpdateTexture can now take any image format; it doesn't have to match the
original format, or even be a standard pixel format.  This is because we
can often do the conversion much more efficiently within UpdateTexture
than we can in the caller.  With D3D, we can convert any source format
as we copy, preventing an extra blit. OpenGL can do it on the fly if
it happens to be a known texture format.

We can figure out the pixel format from the image itself, so there's
no need to pass pixfmt to UpdateTexture.

Add BGR8, for movies with OpenGL.
2003-06-29 08:13:18 +00:00

75 lines
2.2 KiB
C++

#ifndef RAGEDISPLAY_D3D_H
#define RAGEDISPLAY_D3D_H
class RageException_D3DNotInstalled: public exception { };
class RageException_D3DNoAcceleration: public exception { };
class RageDisplay_D3D: public RageDisplay
{
public:
RageDisplay_D3D( VideoModeParams params );
~RageDisplay_D3D();
void Update(float fDeltaTime);
bool IsSoftwareRenderer();
void ResolutionChanged();
const PixelFormatDesc *GetPixelFormatDesc(PixelFormat pf) const;
void BeginFrame();
void EndFrame();
VideoModeParams GetVideoModeParams() const;
void SetBlendMode( BlendMode mode );
bool SupportsTextureFormat( PixelFormat pixfmt );
unsigned CreateTexture( PixelFormat pixfmt, SDL_Surface*& img );
void UpdateTexture(
unsigned uTexHandle,
SDL_Surface* img,
int xoffset, int yoffset, int width, int height
);
void DeleteTexture( unsigned uTexHandle );
void SetTexture( RageTexture* pTexture );
void SetTextureModeModulate();
void SetTextureModeGlow( GlowMode m=GLOW_WHITEN );
void SetTextureWrapping( bool b );
int GetMaxTextureSize() const;
void SetTextureFiltering( bool b);
bool IsZBufferEnabled() const;
void SetZBuffer( bool b );
void ClearZBuffer();
void SetBackfaceCull( bool b );
void SetAlphaTest( bool b );
void SetMaterial(
float emissive[4],
float ambient[4],
float diffuse[4],
float specular[4],
float shininess
);
void SetLighting( bool b );
void SetLightOff( int index );
void SetLightDirectional(
int index,
RageColor ambient,
RageColor diffuse,
RageColor specular,
RageVector3 dir );
void DrawQuads( const RageVertex v[], int iNumVerts );
void DrawFan( const RageVertex v[], int iNumVerts );
void DrawStrip( const RageVertex v[], int iNumVerts );
void DrawTriangles( const RageVertex v[], int iNumVerts );
void DrawIndexedTriangles( const RageVertex v[], int iNumVerts, const Uint16* pIndices, int iNumIndices );
// void DrawLineStrip( const RageVertex v[], int iNumVerts, float LineWidth );
void SaveScreenshot( CString sPath );
protected:
bool TryVideoMode( VideoModeParams params, bool &bNewDeviceOut );
void SetViewport(int shift_left, int shift_down);
RageMatrix GetOrthoMatrix( float l, float r, float b, float t, float zn, float zf );
};
#endif