89 lines
3.1 KiB
C++
Executable File
89 lines
3.1 KiB
C++
Executable File
/**********************************************************************
|
|
*<
|
|
FILE: IHardwareMaterial.h
|
|
|
|
DESCRIPTION: Hardware Material Extension Interface class
|
|
|
|
CREATED BY: Norbert Jeske
|
|
|
|
HISTORY:
|
|
|
|
*> Copyright (c) 2002, All Rights Reserved.
|
|
**********************************************************************/
|
|
|
|
#ifndef _IHARDWARE_MATERIAL_H_
|
|
#define _IHARDWARE_MATERIAL_H_
|
|
|
|
#define IHARDWARE_MATERIAL_INTERFACE_ID Interface_ID(0x40c926b7, 0x7b3a66b7)
|
|
|
|
class IHardwareMaterial : public BaseInterface
|
|
{
|
|
public:
|
|
virtual Interface_ID GetID() { return IHARDWARE_MATERIAL_INTERFACE_ID; }
|
|
|
|
// Interface Lifetime
|
|
virtual LifetimeType LifetimeControl() { return noRelease; }
|
|
|
|
// Information provided from a Custom Attribute?
|
|
virtual void SetCustomFlag(bool bVal) = 0;
|
|
|
|
// Render States
|
|
virtual void SetFillMode(DWORD mode) = 0;
|
|
virtual void SetShadeMode(DWORD mode) = 0;
|
|
|
|
// Material Colors
|
|
virtual void SetMaterial(LPD3DXMATERIAL pMtl) = 0;
|
|
|
|
virtual void SetDiffuseColor(LPD3DXCOLOR pClr) = 0;
|
|
virtual void SetDiffuseColor(Color c, float alpha = 1.0f) = 0;
|
|
virtual void SetDiffuseColor(Point3 c, float alpha = 1.0f) = 0;
|
|
|
|
virtual void SetAmbientColor(LPD3DXCOLOR pClr) = 0;
|
|
virtual void SetAmbientColor(Color c, float alpha = 1.0f) = 0;
|
|
virtual void SetAmbientColor(Point3 c, float alpha = 1.0f) = 0;
|
|
|
|
virtual void SetSpecularColor(LPD3DXCOLOR pClr) = 0;
|
|
virtual void SetSpecularColor(Color c, float alpha = 1.0f) = 0;
|
|
virtual void SetSpecularColor(Point3 c, float alpha = 1.0f) = 0;
|
|
|
|
virtual void SetEmissiveColor(LPD3DXCOLOR pClr) = 0;
|
|
virtual void SetEmissiveColor(Color c, float alpha = 1.0f) = 0;
|
|
virtual void SetEmissiveColor(Point3 c, float alpha = 1.0f) = 0;
|
|
|
|
virtual void SetSpecularPower(float power) = 0;
|
|
|
|
// Texture States
|
|
virtual bool SetNumTexStages(DWORD numStages) = 0;
|
|
virtual bool SetTexture(DWORD stage, DWORD_PTR pTexture) = 0;
|
|
virtual bool SetTexture(DWORD stage, LPCSTR filename) = 0;
|
|
virtual bool SetTextureUVWSource(DWORD stage, DWORD type) = 0;
|
|
virtual bool SetTextureMapChannel(DWORD stage, DWORD numChan) = 0;
|
|
virtual bool SetTextureCoordIndex(DWORD stage, DWORD index) = 0;
|
|
|
|
// Texture Transforms
|
|
virtual bool SetTextureTransformFlag(DWORD stage, DWORD flag) = 0;
|
|
virtual bool SetTextureTransform(DWORD stage, LPD3DXMATRIX pTransform) = 0;
|
|
|
|
// Texture Stage States
|
|
virtual bool SetTextureColorOp(DWORD stage, DWORD colorOp) = 0;
|
|
virtual bool SetTextureColorArg(DWORD stage, DWORD argNum, DWORD colorArg) = 0;
|
|
virtual bool SetTextureAlphaOp(DWORD stage, DWORD alphaArg) = 0;
|
|
virtual bool SetTextureAlphaArg(DWORD stage, DWORD argNum, DWORD alphaArg) = 0;
|
|
virtual bool SetTextureAddressMode(DWORD stage, DWORD coordNum, DWORD mode) = 0;
|
|
|
|
// Shaders
|
|
virtual bool SetVertexShader(DWORD_PTR pVertexShader) = 0;
|
|
virtual bool SetPixelShader(DWORD_PTR pPixelShader) = 0;
|
|
|
|
// Effects
|
|
virtual bool SetEffect(DWORD_PTR pEffect) = 0;
|
|
|
|
// User Plugin
|
|
virtual bool SetPlugin(BaseInterface *pPlugin) = 0;
|
|
|
|
// Current Associated INode
|
|
virtual bool SetINode(INode *pINode) = 0;
|
|
};
|
|
|
|
#endif
|