summaryrefslogtreecommitdiff
path: root/materialsystem/imatrendercontextinternal.h
diff options
context:
space:
mode:
Diffstat (limited to 'materialsystem/imatrendercontextinternal.h')
-rw-r--r--materialsystem/imatrendercontextinternal.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/materialsystem/imatrendercontextinternal.h b/materialsystem/imatrendercontextinternal.h
new file mode 100644
index 0000000..ed08716
--- /dev/null
+++ b/materialsystem/imatrendercontextinternal.h
@@ -0,0 +1,79 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#ifndef IMATRENDERCONTEXTINTERNAL_H
+#define IMATRENDERCONTEXTINTERNAL_H
+
+#if defined( _WIN32 )
+#pragma once
+#endif
+
+// typedefs to allow use of delegation macros
+typedef Vector4D LightCube_t[6];
+
+
+abstract_class IMatRenderContextInternal : public IMatRenderContext
+{
+ // For now, stuck implementing these until IMaterialSystem is reworked
+ bool Connect(CreateInterfaceFn) { return true; }
+ void Disconnect(void) {}
+ void *QueryInterface(const char *pszInterface) { return NULL; }
+ InitReturnVal_t Init(void) { return INIT_OK; }
+ void Shutdown(void) {}
+
+public:
+ virtual float GetFloatRenderingParameter(int parm_number) const = 0;
+ virtual int GetIntRenderingParameter(int parm_number) const = 0;
+ virtual Vector GetVectorRenderingParameter(int parm_number) const = 0;
+
+ virtual void SwapBuffers() = 0;
+
+ virtual void SetCurrentMaterialInternal(IMaterialInternal* pCurrentMaterial) = 0;
+ virtual IMaterialInternal* GetCurrentMaterialInternal() const = 0;
+ virtual int GetLightmapPage() = 0;
+ virtual void ForceDepthFuncEquals( bool) = 0;
+
+ virtual bool InFlashlightMode() const = 0;
+ virtual void BindStandardTexture( Sampler_t, StandardTextureId_t ) = 0;
+ virtual void GetLightmapDimensions( int *, int *) = 0;
+ virtual MorphFormat_t GetBoundMorphFormat() = 0;
+ virtual ITexture *GetRenderTargetEx( int ) = 0;
+ virtual void DrawClearBufferQuad( unsigned char, unsigned char, unsigned char, unsigned char, bool, bool, bool ) = 0;
+
+ virtual bool OnDrawMesh( IMesh *pMesh, int firstIndex, int numIndices ) = 0;
+ virtual bool OnDrawMesh( IMesh *pMesh, CPrimList *pLists, int nLists ) = 0;
+ virtual bool OnSetFlexMesh( IMesh *pStaticMesh, IMesh *pMesh, int nVertexOffsetInBytes ) = 0;
+ virtual bool OnSetColorMesh( IMesh *pStaticMesh, IMesh *pMesh, int nVertexOffsetInBytes ) = 0;
+ virtual bool OnSetPrimitiveType( IMesh *pMesh, MaterialPrimitiveType_t type ) = 0;
+ virtual bool OnFlushBufferedPrimitives() = 0;
+
+ virtual void SyncMatrices() = 0;
+ virtual void SyncMatrix( MaterialMatrixMode_t ) = 0;
+
+ virtual void ForceHardwareSync() = 0;
+ virtual void BeginFrame() = 0;
+ virtual void EndFrame() = 0;
+
+ virtual void SetFrameTime( float frameTime ) = 0;
+ virtual void SetCurrentProxy( void *pProxy ) = 0;
+ virtual void MarkRenderDataUnused( bool bBeginFrame ) = 0;
+ virtual CMatCallQueue *GetCallQueueInternal() = 0;
+
+ // Map and unmap a texture. The pRecipient->OnAsyncMapComplete is called when complete.
+ virtual void AsyncMap( ITextureInternal* pTexToMap, IAsyncTextureOperationReceiver* pRecipient, void* pExtraArgs ) = 0;
+ virtual void AsyncUnmap( ITextureInternal* pTexToUnmap ) = 0;
+
+ // Copy from a render target to a staging texture, in order with other async commands.
+ virtual void AsyncCopyRenderTargetToStagingTexture( ITexture* pDst, ITexture* pSrc, IAsyncTextureOperationReceiver* pRecipient, void* pExtraArgs ) = 0;
+
+#ifdef DX_TO_GL_ABSTRACTION
+ virtual void DoStartupShaderPreloading( void ) = 0;
+#endif
+
+ virtual void TextureManagerUpdate() = 0;
+};
+
+#endif // IMATRENDERCONTEXTINTERNAL_H