104 lines
3.8 KiB
C
104 lines
3.8 KiB
C
|
//===== Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ======//
|
|||
|
//
|
|||
|
// Purpose:
|
|||
|
//
|
|||
|
// $Workfile: $
|
|||
|
// $Date: $
|
|||
|
// $NoKeywords: $
|
|||
|
//===========================================================================//
|
|||
|
#ifndef MATERIALSYSTEMUTIL_H
|
|||
|
#define MATERIALSYSTEMUTIL_H
|
|||
|
|
|||
|
#ifdef _WIN32
|
|||
|
#pragma once
|
|||
|
#endif
|
|||
|
|
|||
|
#include "bitmap/imageformat.h" //ImageFormat enum definition
|
|||
|
#include "materialsystem/imaterialsystem.h" // RenderTargetSizeMode_t and MaterialRenderTargetDepth_t definition
|
|||
|
#include "materialsystem/itexture.h"
|
|||
|
//-----------------------------------------------------------------------------
|
|||
|
// Forward declarations
|
|||
|
//-----------------------------------------------------------------------------
|
|||
|
class IMaterial;
|
|||
|
class KeyValues;
|
|||
|
|
|||
|
class KeyValues;
|
|||
|
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------
|
|||
|
// Little utility class to deal with material references
|
|||
|
//-----------------------------------------------------------------------------
|
|||
|
class CMaterialReference
|
|||
|
{
|
|||
|
public:
|
|||
|
// constructor, destructor
|
|||
|
CMaterialReference( char const* pMaterialName = 0, const char *pTextureGroupName = 0, bool bComplain = true );
|
|||
|
~CMaterialReference();
|
|||
|
|
|||
|
// Attach to a material
|
|||
|
void Init( const char* pMaterialName, const char *pTextureGroupName, bool bComplain = true );
|
|||
|
void Init( const char *pMaterialName, KeyValues *pVMTKeyValues );
|
|||
|
void Init( IMaterial* pMaterial );
|
|||
|
void Init( CMaterialReference& ref );
|
|||
|
void Init( const char *pMaterialName, const char *pTextureGroupName, KeyValues *pVMTKeyValues );
|
|||
|
|
|||
|
// Detach from a material
|
|||
|
void Shutdown( bool bDeleteIfUnreferenced = false );
|
|||
|
bool IsValid() { return m_pMaterial != 0; }
|
|||
|
|
|||
|
// Automatic casts to IMaterial
|
|||
|
operator IMaterial*() { return m_pMaterial; }
|
|||
|
operator IMaterial const*() const { return m_pMaterial; }
|
|||
|
IMaterial* operator->() { return m_pMaterial; }
|
|||
|
|
|||
|
// Assignment operator
|
|||
|
const CMaterialReference& operator=( const CMaterialReference &ref );
|
|||
|
|
|||
|
|
|||
|
private:
|
|||
|
CMaterialReference( CMaterialReference &ref ) { }
|
|||
|
|
|||
|
IMaterial* m_pMaterial;
|
|||
|
};
|
|||
|
|
|||
|
//-----------------------------------------------------------------------------
|
|||
|
// Little utility class to deal with texture references
|
|||
|
//-----------------------------------------------------------------------------
|
|||
|
class CTextureReference
|
|||
|
{
|
|||
|
public:
|
|||
|
// constructor, destructor
|
|||
|
CTextureReference( );
|
|||
|
CTextureReference( const CTextureReference &ref );
|
|||
|
~CTextureReference();
|
|||
|
|
|||
|
// Attach to a texture
|
|||
|
void Init( char const* pTexture, const char *pTextureGroupName, bool bComplain = true );
|
|||
|
void InitProceduralTexture( const char *pTextureName, const char *pTextureGroupName, int w, int h, ImageFormat fmt, int nFlags );
|
|||
|
void InitRenderTarget( int w, int h, RenderTargetSizeMode_t sizeMode, ImageFormat fmt, MaterialRenderTargetDepth_t depth, bool bHDR, char *pStrOptionalName = NULL );
|
|||
|
#if defined( _X360 )
|
|||
|
// used when RT coupling is disparate (texture is DDR based, surface is EDRAM based)
|
|||
|
void InitRenderTargetTexture( int width, int height, RenderTargetSizeMode_t sizeMode, ImageFormat fmt, MaterialRenderTargetDepth_t depth, bool bHDR, char *pStrOptionalName = NULL );
|
|||
|
void InitRenderTargetSurface( int width, int height, ImageFormat fmt, bool bSameAsTexture, RTMultiSampleCount360_t multiSampleCount = RT_MULTISAMPLE_NONE );
|
|||
|
#endif
|
|||
|
void Init( ITexture* pTexture );
|
|||
|
|
|||
|
// Detach from a texture
|
|||
|
void Shutdown( bool bDeleteIfUnReferenced = false );
|
|||
|
bool IsValid() { return m_pTexture != 0; }
|
|||
|
|
|||
|
// Automatic casts to ITexture
|
|||
|
operator ITexture*() { return m_pTexture; }
|
|||
|
operator ITexture const*() const { return m_pTexture; }
|
|||
|
ITexture* operator->() { return m_pTexture; }
|
|||
|
|
|||
|
// Assignment operator
|
|||
|
const CTextureReference& operator=( CTextureReference &ref );
|
|||
|
|
|||
|
private:
|
|||
|
ITexture* m_pTexture;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
#endif // !MATERIALSYSTEMUTIL_H
|