diff options
Diffstat (limited to 'src/graphics/core/nulldevice.h')
-rw-r--r-- | src/graphics/core/nulldevice.h | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/src/graphics/core/nulldevice.h b/src/graphics/core/nulldevice.h new file mode 100644 index 0000000..c6065a6 --- /dev/null +++ b/src/graphics/core/nulldevice.h @@ -0,0 +1,145 @@ +/* + * This file is part of the Colobot: Gold Edition source code + * Copyright (C) 2001-2014, Daniel Roux, EPSITEC SA & TerranovaTeam + * http://epsiteŃ.ch; http://colobot.info; http://github.com/colobot + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://gnu.org/licenses + */ + +/** + * \file graphics/core/device.h + * \brief Abstract graphics device - CDevice class and related structs/enums + */ + +#pragma once + + +#include "graphics/core/device.h" + +// Graphics module namespace +namespace Gfx { + +/** + * \class CNullDevice + * \brief Device implementation that doesn't render anything + * + */ +class CNullDevice : public CDevice +{ +public: + CNullDevice(); + virtual ~CNullDevice(); + + virtual void DebugHook(); + virtual void DebugLights(); + + virtual bool Create(); + virtual void Destroy(); + + virtual void BeginScene(); + virtual void EndScene(); + + virtual void Clear(); + + virtual void SetTransform(TransformType type, const Math::Matrix &matrix); + virtual const Math::Matrix& GetTransform(TransformType type); + virtual void MultiplyTransform(TransformType type, const Math::Matrix &matrix); + + virtual void SetMaterial(const Material &material); + virtual const Material& GetMaterial(); + + virtual int GetMaxLightCount(); + virtual void SetLight(int index, const Light &light); + virtual const Light& GetLight(int index); + virtual void SetLightEnabled(int index, bool enabled); + virtual bool GetLightEnabled(int index); + + virtual Texture CreateTexture(CImage *image, const TextureCreateParams ¶ms); + virtual Texture CreateTexture(ImageData *data, const TextureCreateParams ¶ms); + virtual void DestroyTexture(const Texture &texture); + virtual void DestroyAllTextures(); + + virtual int GetMaxTextureStageCount(); + virtual void SetTexture(int index, const Texture &texture); + virtual void SetTexture(int index, unsigned int textureId); + virtual Texture GetTexture(int index); + virtual void SetTextureEnabled(int index, bool enabled); + virtual bool GetTextureEnabled(int index); + + virtual void SetTextureStageParams(int index, const TextureStageParams ¶ms); + virtual TextureStageParams GetTextureStageParams(int index); + + virtual void SetTextureStageWrap(int index, Gfx::TexWrapMode wrapS, Gfx::TexWrapMode wrapT); + + virtual void DrawPrimitive(PrimitiveType type, const Vertex *vertices , int vertexCount, + Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)); + virtual void DrawPrimitive(PrimitiveType type, const VertexTex2 *vertices, int vertexCount, + Color color = Color(1.0f, 1.0f, 1.0f, 1.0f)); + virtual void DrawPrimitive(PrimitiveType type, const VertexCol *vertices , int vertexCount); + + virtual unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const Vertex* vertices, int vertexCount); + virtual unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const VertexTex2* vertices, int vertexCount); + virtual unsigned int CreateStaticBuffer(PrimitiveType primitiveType, const VertexCol* vertices, int vertexCount); + virtual void UpdateStaticBuffer(unsigned int bufferId, PrimitiveType primitiveType, const Vertex* vertices, int vertexCount); + virtual void UpdateStaticBuffer(unsigned int bufferId, PrimitiveType primitiveType, const VertexTex2* vertices, int vertexCount); + virtual void UpdateStaticBuffer(unsigned int bufferId, PrimitiveType primitiveType, const VertexCol* vertices, int vertexCount); + virtual void DrawStaticBuffer(unsigned int bufferId); + virtual void DestroyStaticBuffer(unsigned int bufferId); + + virtual int ComputeSphereVisibility(const Math::Vector ¢er, float radius); + + virtual void SetRenderState(RenderState state, bool enabled); + virtual bool GetRenderState(RenderState state); + + virtual void SetDepthTestFunc(CompFunc func); + virtual CompFunc GetDepthTestFunc(); + + virtual void SetDepthBias(float factor); + virtual float GetDepthBias(); + + virtual void SetAlphaTestFunc(CompFunc func, float refValue); + virtual void GetAlphaTestFunc(CompFunc &func, float &refValue); + + virtual void SetBlendFunc(BlendFunc srcBlend, BlendFunc dstBlend); + virtual void GetBlendFunc(BlendFunc &srcBlend, BlendFunc &dstBlend); + + virtual void SetClearColor(const Color &color); + virtual Color GetClearColor(); + + virtual void SetGlobalAmbient(const Color &color); + virtual Color GetGlobalAmbient(); + + virtual void SetFogParams(FogMode mode, const Color &color, float start, float end, float density); + virtual void GetFogParams(FogMode &mode, Color &color, float &start, float &end, float &density); + + virtual void SetCullMode(CullMode mode); + virtual CullMode GetCullMode(); + + virtual void SetShadeModel(ShadeModel model); + virtual ShadeModel GetShadeModel(); + + virtual void SetFillMode(FillMode mode) ; + virtual FillMode GetFillMode(); + + virtual void* GetFrameBufferPixels() const; + +private: + Math::Matrix m_matrix; + Material m_material; + Light m_light; +}; + + +} // namespace Gfx + |