IrrlichtEngine
IVideoDriver.h
Go to the documentation of this file.
00001 // Copyright (C) 2002-2011 Nikolaus Gebhardt
00002 // This file is part of the "Irrlicht Engine".
00003 // For conditions of distribution and use, see copyright notice in irrlicht.h
00004 
00005 #ifndef __IRR_I_VIDEO_DRIVER_H_INCLUDED__
00006 #define __IRR_I_VIDEO_DRIVER_H_INCLUDED__
00007 
00008 #include "rect.h"
00009 #include "SColor.h"
00010 #include "ITexture.h"
00011 #include "irrArray.h"
00012 #include "matrix4.h"
00013 #include "plane3d.h"
00014 #include "dimension2d.h"
00015 #include "position2d.h"
00016 #include "SMaterial.h"
00017 #include "IMeshBuffer.h"
00018 #include "triangle3d.h"
00019 #include "EDriverTypes.h"
00020 #include "EDriverFeatures.h"
00021 #include "SExposedVideoData.h"
00022 
00023 namespace irr
00024 {
00025 namespace io
00026 {
00027         class IAttributes;
00028         struct SAttributeReadWriteOptions;
00029         class IReadFile;
00030         class IWriteFile;
00031 } // end namespace io
00032 namespace scene
00033 {
00034         class IMeshBuffer;
00035         class IMesh;
00036         class IMeshManipulator;
00037         class ISceneNode;
00038 } // end namespace scene
00039 
00040 namespace video
00041 {
00042         struct S3DVertex;
00043         struct S3DVertex2TCoords;
00044         struct S3DVertexTangents;
00045         struct SLight;
00046         class IImageLoader;
00047         class IImageWriter;
00048         class IMaterialRenderer;
00049         class IGPUProgrammingServices;
00050 
00052         enum E_TRANSFORMATION_STATE
00053         {
00055                 ETS_VIEW = 0,
00057                 ETS_WORLD,
00059                 ETS_PROJECTION,
00061                 ETS_TEXTURE_0,
00063                 ETS_TEXTURE_1,
00065                 ETS_TEXTURE_2,
00067                 ETS_TEXTURE_3,
00068 #if _IRR_MATERIAL_MAX_TEXTURES_>4
00069 
00070                 ETS_TEXTURE_4,
00071 #if _IRR_MATERIAL_MAX_TEXTURES_>5
00072 
00073                 ETS_TEXTURE_5,
00074 #if _IRR_MATERIAL_MAX_TEXTURES_>6
00075 
00076                 ETS_TEXTURE_6,
00077 #if _IRR_MATERIAL_MAX_TEXTURES_>7
00078 
00079                 ETS_TEXTURE_7,
00080 #endif
00081 #endif
00082 #endif
00083 #endif
00084 
00085                 ETS_COUNT
00086         };
00087 
00089 
00092         enum E_LOST_RESOURCE
00093         {
00095                 ELR_DEVICE = 1,
00097                 ELR_TEXTURES = 2,
00099                 ELR_RTTS = 4,
00101                 ELR_HW_BUFFERS = 8
00102         };
00103 
00105 
00106         enum E_RENDER_TARGET
00107         {
00109                 ERT_FRAME_BUFFER=0,
00111                 ERT_RENDER_TEXTURE,
00113                 ERT_MULTI_RENDER_TEXTURES,
00115                 ERT_STEREO_LEFT_BUFFER,
00117                 ERT_STEREO_RIGHT_BUFFER,
00119                 ERT_STEREO_BOTH_BUFFERS,
00121                 ERT_AUX_BUFFER0,
00123                 ERT_AUX_BUFFER1,
00125                 ERT_AUX_BUFFER2,
00127                 ERT_AUX_BUFFER3,
00129                 ERT_AUX_BUFFER4
00130         };
00131 
00133         enum E_FOG_TYPE
00134         {
00135                 EFT_FOG_EXP=0,
00136                 EFT_FOG_LINEAR,
00137                 EFT_FOG_EXP2
00138         };
00139 
00140         const c8* const FogTypeNames[] =
00141         {
00142                 "FogExp",
00143                 "FogLinear",
00144                 "FogExp2",
00145                 0
00146         };
00147 
00148         struct SOverrideMaterial
00149         {
00151                 SMaterial Material;
00153 
00154                 u32 EnableFlags;
00156 
00157                 u16 EnablePasses;
00159 
00161                 bool Enabled;
00162 
00164                 SOverrideMaterial() : EnableFlags(0), EnablePasses(0), Enabled(false) {}
00165 
00167                 void apply(SMaterial& material)
00168                 {
00169                         if (Enabled)
00170                         {
00171                                 for (u32 i=0; i<32; ++i)
00172                                 {
00173                                         const u32 num=(1<<i);
00174                                         if (EnableFlags & num)
00175                                         {
00176                                                 switch (num)
00177                                                 {
00178                                                 case EMF_WIREFRAME: material.Wireframe = Material.Wireframe; break;
00179                                                 case EMF_POINTCLOUD: material.PointCloud = Material.PointCloud; break;
00180                                                 case EMF_GOURAUD_SHADING: material.GouraudShading = Material.GouraudShading; break;
00181                                                 case EMF_LIGHTING: material.Lighting = Material.Lighting; break;
00182                                                 case EMF_ZBUFFER: material.ZBuffer = Material.ZBuffer; break;
00183                                                 case EMF_ZWRITE_ENABLE: material.ZWriteEnable = Material.ZWriteEnable; break;
00184                                                 case EMF_BACK_FACE_CULLING: material.BackfaceCulling = Material.BackfaceCulling; break;
00185                                                 case EMF_FRONT_FACE_CULLING: material.FrontfaceCulling = Material.FrontfaceCulling; break;
00186                                                 case EMF_BILINEAR_FILTER: material.TextureLayer[0].BilinearFilter = Material.TextureLayer[0].BilinearFilter; break;
00187                                                 case EMF_TRILINEAR_FILTER: material.TextureLayer[0].TrilinearFilter = Material.TextureLayer[0].TrilinearFilter; break;
00188                                                 case EMF_ANISOTROPIC_FILTER: material.TextureLayer[0].AnisotropicFilter = Material.TextureLayer[0].AnisotropicFilter; break;
00189                                                 case EMF_FOG_ENABLE: material.FogEnable = Material.FogEnable; break;
00190                                                 case EMF_NORMALIZE_NORMALS: material.NormalizeNormals = Material.NormalizeNormals; break;
00191                                                 case EMF_TEXTURE_WRAP:
00192                                                         material.TextureLayer[0].TextureWrapU = Material.TextureLayer[0].TextureWrapU;
00193                                                         material.TextureLayer[0].TextureWrapV = Material.TextureLayer[0].TextureWrapV;
00194                                                         break;
00195                                                 case EMF_ANTI_ALIASING: material.AntiAliasing = Material.AntiAliasing; break;
00196                                                 case EMF_COLOR_MASK: material.ColorMask = Material.ColorMask; break;
00197                                                 case EMF_COLOR_MATERIAL: material.ColorMaterial = Material.ColorMaterial; break;
00198                                                 case EMF_USE_MIP_MAPS: material.UseMipMaps = Material.UseMipMaps; break;
00199                                                 case EMF_BLEND_OPERATION: material.BlendOperation = Material.BlendOperation; break;
00200                                                 case EMF_POLYGON_OFFSET:
00201                                                         material.PolygonOffsetDirection = Material.PolygonOffsetDirection;
00202                                                         material.PolygonOffsetFactor = Material.PolygonOffsetFactor; break;
00203                                                 }
00204                                         }
00205                                 }
00206                         }
00207                 }
00208 
00209         };
00210 
00211         struct IRenderTarget
00212         {
00213                 IRenderTarget(ITexture* texture,
00214                                 E_COLOR_PLANE colorMask=ECP_ALL,
00215                                 E_BLEND_FACTOR blendFuncSrc=EBF_ONE,
00216                                 E_BLEND_FACTOR blendFuncDst=EBF_ONE_MINUS_SRC_ALPHA,
00217                                 E_BLEND_OPERATION blendOp=EBO_NONE) :
00218                         RenderTexture(texture),
00219                         TargetType(ERT_RENDER_TEXTURE), ColorMask(colorMask),
00220                         BlendFuncSrc(blendFuncSrc), BlendFuncDst(blendFuncDst),
00221                         BlendOp(blendOp) {}
00222                 IRenderTarget(E_RENDER_TARGET target,
00223                                 E_COLOR_PLANE colorMask=ECP_ALL,
00224                                 E_BLEND_FACTOR blendFuncSrc=EBF_ONE,
00225                                 E_BLEND_FACTOR blendFuncDst=EBF_ONE_MINUS_SRC_ALPHA,
00226                                 E_BLEND_OPERATION blendOp=EBO_NONE) :
00227                         RenderTexture(0),
00228                         TargetType(target), ColorMask(colorMask),
00229                         BlendFuncSrc(blendFuncSrc), BlendFuncDst(blendFuncDst),
00230                         BlendOp(blendOp) {}
00231                 bool operator!=(const IRenderTarget& other) const
00232                 {
00233                         return ((RenderTexture != other.RenderTexture) ||
00234                                 (TargetType != other.TargetType) ||
00235                                 (ColorMask != other.ColorMask) ||
00236                                 (BlendFuncSrc != other.BlendFuncSrc) ||
00237                                 (BlendFuncDst != other.BlendFuncDst) ||
00238                                 (BlendOp != other.BlendOp));
00239                 }
00240                 ITexture* RenderTexture;
00241                 E_RENDER_TARGET TargetType:8;
00242                 E_COLOR_PLANE ColorMask:8;
00243                 E_BLEND_FACTOR BlendFuncSrc:4;
00244                 E_BLEND_FACTOR BlendFuncDst:4;
00245                 E_BLEND_OPERATION BlendOp:4;
00246         };
00247 
00249 
00256         class IVideoDriver : public virtual IReferenceCounted
00257         {
00258         public:
00259 
00261 
00278                 virtual bool beginScene(bool backBuffer=true, bool zBuffer=true,
00279                                 SColor color=SColor(255,0,0,0),
00280                                 const SExposedVideoData& videoData=SExposedVideoData(),
00281                                 core::rect<s32>* sourceRect=0) =0;
00282 
00284 
00287                 virtual bool endScene() =0;
00288 
00290 
00293                 virtual bool queryFeature(E_VIDEO_DRIVER_FEATURE feature) const =0;
00294 
00296 
00300                 virtual void disableFeature(E_VIDEO_DRIVER_FEATURE feature, bool flag=true) =0;
00301 
00303 
00319                 virtual const io::IAttributes& getDriverAttributes() const=0;
00320 
00322 
00325                 virtual bool checkDriverReset() =0;
00326 
00328 
00331                 virtual void setTransform(E_TRANSFORMATION_STATE state, const core::matrix4& mat) =0;
00332 
00334 
00336                 virtual const core::matrix4& getTransform(E_TRANSFORMATION_STATE state) const =0;
00337 
00339 
00340                 virtual u32 getImageLoaderCount() const = 0;
00341 
00343 
00346                 virtual IImageLoader* getImageLoader(u32 n) = 0;
00347 
00349 
00350                 virtual u32 getImageWriterCount() const = 0;
00351 
00353 
00356                 virtual IImageWriter* getImageWriter(u32 n) = 0;
00357 
00359 
00361                 virtual void setMaterial(const SMaterial& material) =0;
00362 
00364 
00373                 virtual ITexture* getTexture(const io::path& filename) = 0;
00374 
00376 
00385                 virtual ITexture* getTexture(io::IReadFile* file) =0;
00386 
00388 
00394                 virtual ITexture* getTextureByIndex(u32 index) =0;
00395 
00397 
00398                 virtual u32 getTextureCount() const = 0;
00399 
00401 
00403                 virtual void renameTexture(ITexture* texture, const io::path& newName) = 0;
00404 
00406 
00415                 virtual ITexture* addTexture(const core::dimension2d<u32>& size,
00416                         const io::path& name, ECOLOR_FORMAT format = ECF_A8R8G8B8) = 0;
00417 
00419 
00429                 virtual ITexture* addTexture(const io::path& name, IImage* image, void* mipmapData=0) = 0;
00430 
00432 
00441                 virtual ITexture* addRenderTargetTexture(const core::dimension2d<u32>& size,
00442                                 const io::path& name = "rt", const ECOLOR_FORMAT format = ECF_UNKNOWN) =0;
00443 
00445 
00452                 virtual void removeTexture(ITexture* texture) =0;
00453 
00455 
00461                 virtual void removeAllTextures() =0;
00462 
00464                 virtual void removeHardwareBuffer(const scene::IMeshBuffer* mb) =0;
00465 
00467                 virtual void removeAllHardwareBuffers() =0;
00468 
00470 
00471                 virtual void addOcclusionQuery(scene::ISceneNode* node,
00472                                 const scene::IMesh* mesh=0) =0;
00473 
00475                 virtual void removeOcclusionQuery(scene::ISceneNode* node) =0;
00476 
00478                 virtual void removeAllOcclusionQueries() =0;
00479 
00481 
00483                 virtual void runOcclusionQuery(scene::ISceneNode* node, bool visible=false) =0;
00484 
00486 
00488                 virtual void runAllOcclusionQueries(bool visible=false) =0;
00489 
00491 
00493                 virtual void updateOcclusionQuery(scene::ISceneNode* node, bool block=true) =0;
00494 
00496 
00498                 virtual void updateAllOcclusionQueries(bool block=true) =0;
00499 
00501 
00504                 virtual u32 getOcclusionQueryResult(scene::ISceneNode* node) const =0;
00505 
00507 
00523                 virtual void makeColorKeyTexture(video::ITexture* texture,
00524                                                 video::SColor color,
00525                                                 bool zeroTexels = false) const =0;
00526 
00528 
00540                 virtual void makeColorKeyTexture(video::ITexture* texture,
00541                                 core::position2d<s32> colorKeyPixelPos,
00542                                 bool zeroTexels = false) const =0;
00543 
00545 
00552                 virtual void makeNormalMapTexture(video::ITexture* texture, f32 amplitude=1.0f) const =0;
00553 
00555 
00586                 virtual bool setRenderTarget(video::ITexture* texture,
00587                         bool clearBackBuffer=true, bool clearZBuffer=true,
00588                         SColor color=video::SColor(0,0,0,0)) =0;
00589 
00591 
00602                 virtual bool setRenderTarget(E_RENDER_TARGET target, bool clearTarget=true,
00603                                         bool clearZBuffer=true,
00604                                         SColor color=video::SColor(0,0,0,0)) =0;
00605 
00607                 virtual bool setRenderTarget(const core::array<video::IRenderTarget>& texture,
00608                         bool clearBackBuffer=true, bool clearZBuffer=true,
00609                         SColor color=video::SColor(0,0,0,0)) =0;
00610 
00612 
00615                 virtual void setViewPort(const core::rect<s32>& area) =0;
00616 
00618 
00619                 virtual const core::rect<s32>& getViewPort() const =0;
00620 
00622 
00636                 virtual void drawVertexPrimitiveList(const void* vertices, u32 vertexCount,
00637                                 const void* indexList, u32 primCount,
00638                                 E_VERTEX_TYPE vType=EVT_STANDARD,
00639                                 scene::E_PRIMITIVE_TYPE pType=scene::EPT_TRIANGLES,
00640                                 E_INDEX_TYPE iType=EIT_16BIT) =0;
00641 
00643 
00662                 virtual void draw2DVertexPrimitiveList(const void* vertices, u32 vertexCount,
00663                                 const void* indexList, u32 primCount,
00664                                 E_VERTEX_TYPE vType=EVT_STANDARD,
00665                                 scene::E_PRIMITIVE_TYPE pType=scene::EPT_TRIANGLES,
00666                                 E_INDEX_TYPE iType=EIT_16BIT) =0;
00667 
00669 
00677                 void drawIndexedTriangleList(const S3DVertex* vertices,
00678                         u32 vertexCount, const u16* indexList, u32 triangleCount)
00679                 {
00680                         drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_STANDARD, scene::EPT_TRIANGLES, EIT_16BIT);
00681                 }
00682 
00684 
00692                 void drawIndexedTriangleList(const S3DVertex2TCoords* vertices,
00693                         u32 vertexCount, const u16* indexList, u32 triangleCount)
00694                 {
00695                         drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_2TCOORDS, scene::EPT_TRIANGLES, EIT_16BIT);
00696                 }
00697 
00699 
00707                 void drawIndexedTriangleList(const S3DVertexTangents* vertices,
00708                         u32 vertexCount, const u16* indexList, u32 triangleCount)
00709                 {
00710                         drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_TANGENTS, scene::EPT_TRIANGLES, EIT_16BIT);
00711                 }
00712 
00714 
00722                 void drawIndexedTriangleFan(const S3DVertex* vertices,
00723                         u32 vertexCount, const u16* indexList, u32 triangleCount)
00724                 {
00725                         drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_STANDARD, scene::EPT_TRIANGLE_FAN, EIT_16BIT);
00726                 }
00727 
00729 
00737                 void drawIndexedTriangleFan(const S3DVertex2TCoords* vertices,
00738                         u32 vertexCount, const u16* indexList, u32 triangleCount)
00739                 {
00740                         drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_2TCOORDS, scene::EPT_TRIANGLE_FAN, EIT_16BIT);
00741                 }
00742 
00744 
00752                 void drawIndexedTriangleFan(const S3DVertexTangents* vertices,
00753                         u32 vertexCount, const u16* indexList, u32 triangleCount)
00754                 {
00755                         drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_TANGENTS, scene::EPT_TRIANGLE_FAN, EIT_16BIT);
00756                 }
00757 
00759 
00773                 virtual void draw3DLine(const core::vector3df& start,
00774                         const core::vector3df& end, SColor color = SColor(255,255,255,255)) =0;
00775 
00777 
00790                 virtual void draw3DTriangle(const core::triangle3df& triangle,
00791                         SColor color = SColor(255,255,255,255)) =0;
00792 
00794 
00805                 virtual void draw3DBox(const core::aabbox3d<f32>& box,
00806                         SColor color = SColor(255,255,255,255)) =0;
00807 
00809 
00812                 virtual void draw2DImage(const video::ITexture* texture,
00813                         const core::position2d<s32>& destPos) =0;
00814 
00816 
00831                 virtual void draw2DImage(const video::ITexture* texture, const core::position2d<s32>& destPos,
00832                         const core::rect<s32>& sourceRect, const core::rect<s32>* clipRect =0,
00833                         SColor color=SColor(255,255,255,255), bool useAlphaChannelOfTexture=false) =0;
00834 
00836 
00855                 virtual void draw2DImageBatch(const video::ITexture* texture,
00856                                 const core::position2d<s32>& pos,
00857                                 const core::array<core::rect<s32> >& sourceRects,
00858                                 const core::array<s32>& indices,
00859                                 s32 kerningWidth=0,
00860                                 const core::rect<s32>* clipRect=0,
00861                                 SColor color=SColor(255,255,255,255),
00862                                 bool useAlphaChannelOfTexture=false) =0;
00863 
00865 
00880                 virtual void draw2DImageBatch(const video::ITexture* texture,
00881                                 const core::array<core::position2d<s32> >& positions,
00882                                 const core::array<core::rect<s32> >& sourceRects,
00883                                 const core::rect<s32>* clipRect=0,
00884                                 SColor color=SColor(255,255,255,255),
00885                                 bool useAlphaChannelOfTexture=false) =0;
00886 
00888 
00897                 virtual void draw2DImage(const video::ITexture* texture, const core::rect<s32>& destRect,
00898                         const core::rect<s32>& sourceRect, const core::rect<s32>* clipRect =0,
00899                         const video::SColor * const colors=0, bool useAlphaChannelOfTexture=false) =0;
00900 
00902 
00909                 virtual void draw2DRectangle(SColor color, const core::rect<s32>& pos,
00910                         const core::rect<s32>* clip =0) =0;
00911 
00913 
00929                 virtual void draw2DRectangle(const core::rect<s32>& pos,
00930                                 SColor colorLeftUp, SColor colorRightUp,
00931                                 SColor colorLeftDown, SColor colorRightDown,
00932                                 const core::rect<s32>* clip =0) =0;
00933 
00935 
00938                 virtual void draw2DRectangleOutline(const core::recti& pos,
00939                                 SColor color=SColor(255,255,255,255)) =0;
00940 
00942 
00947                 virtual void draw2DLine(const core::position2d<s32>& start,
00948                                         const core::position2d<s32>& end,
00949                                         SColor color=SColor(255,255,255,255)) =0;
00950 
00952 
00955                 virtual void drawPixel(u32 x, u32 y, const SColor& color) =0;
00956 
00958 
00970                 virtual void draw2DPolygon(core::position2d<s32> center,
00971                                 f32 radius,
00972                                 video::SColor color=SColor(100,255,255,255),
00973                                 s32 vertexCount=10) =0;
00974 
00976 
00989                 virtual void drawStencilShadowVolume(const core::array<core::vector3df>& triangles, bool zfail=true, u32 debugDataVisible=0) =0;
00990 
00992 
01011                 virtual void drawStencilShadow(bool clearStencilBuffer=false,
01012                         video::SColor leftUpEdge = video::SColor(255,0,0,0),
01013                         video::SColor rightUpEdge = video::SColor(255,0,0,0),
01014                         video::SColor leftDownEdge = video::SColor(255,0,0,0),
01015                         video::SColor rightDownEdge = video::SColor(255,0,0,0)) =0;
01016 
01018 
01019                 virtual void drawMeshBuffer(const scene::IMeshBuffer* mb) =0;
01020 
01022 
01038                 virtual void setFog(SColor color=SColor(0,255,255,255),
01039                                 E_FOG_TYPE fogType=EFT_FOG_LINEAR,
01040                                 f32 start=50.0f, f32 end=100.0f, f32 density=0.01f,
01041                                 bool pixelFog=false, bool rangeFog=false) =0;
01042 
01044                 virtual void getFog(SColor& color, E_FOG_TYPE& fogType,
01045                                 f32& start, f32& end, f32& density,
01046                                 bool& pixelFog, bool& rangeFog) = 0;
01047 
01049 
01050                 virtual ECOLOR_FORMAT getColorFormat() const =0;
01051 
01053 
01054                 virtual const core::dimension2d<u32>& getScreenSize() const =0;
01055 
01057 
01061                 virtual const core::dimension2d<u32>& getCurrentRenderTargetSize() const =0;
01062 
01064 
01069                 virtual s32 getFPS() const =0;
01070 
01072 
01076                 virtual u32 getPrimitiveCountDrawn( u32 mode =0 ) const =0;
01077 
01079                 virtual void deleteAllDynamicLights() =0;
01080 
01084                 virtual s32 addDynamicLight(const SLight& light) =0;
01085 
01087 
01088                 virtual u32 getMaximalDynamicLightAmount() const =0;
01089 
01091 
01092                 virtual u32 getDynamicLightCount() const =0;
01093 
01095 
01098                 virtual const SLight& getDynamicLight(u32 idx) const =0;
01099 
01103                 virtual void turnLightOn(s32 lightIndex, bool turnOn) =0;
01104 
01106 
01108                 virtual const wchar_t* getName() const =0;
01109 
01111 
01117                 virtual void addExternalImageLoader(IImageLoader* loader) =0;
01118 
01120 
01126                 virtual void addExternalImageWriter(IImageWriter* writer) =0;
01127 
01129 
01132                 virtual u32 getMaximalPrimitiveCount() const =0;
01133 
01135 
01144                 virtual void setTextureCreationFlag(E_TEXTURE_CREATION_FLAG flag, bool enabled=true) =0;
01145 
01147 
01150                 virtual bool getTextureCreationFlag(E_TEXTURE_CREATION_FLAG flag) const =0;
01151 
01153 
01161                 virtual IImage* createImageFromFile(const io::path& filename) = 0;
01162 
01164 
01171                 virtual IImage* createImageFromFile(io::IReadFile* file) =0;
01172 
01174 
01181                 virtual bool writeImageToFile(IImage* image, const io::path& filename, u32 param = 0) = 0;
01182 
01184 
01192                 virtual bool writeImageToFile(IImage* image, io::IWriteFile* file, u32 param =0) =0;
01193 
01195 
01209                 virtual IImage* createImageFromData(ECOLOR_FORMAT format,
01210                         const core::dimension2d<u32>& size, void *data,
01211                         bool ownForeignMemory=false,
01212                         bool deleteMemory = true) =0;
01213 
01215 
01221                 virtual IImage* createImage(ECOLOR_FORMAT format, const core::dimension2d<u32>& size) =0;
01222 
01224 
01230                 _IRR_DEPRECATED_ virtual IImage* createImage(ECOLOR_FORMAT format, IImage *imageToCopy) =0;
01231 
01233 
01240                 _IRR_DEPRECATED_ virtual IImage* createImage(IImage* imageToCopy,
01241                                 const core::position2d<s32>& pos,
01242                                 const core::dimension2d<u32>& size) =0;
01243 
01245 
01252                 virtual IImage* createImage(ITexture* texture,
01253                                 const core::position2d<s32>& pos,
01254                                 const core::dimension2d<u32>& size) =0;
01255 
01257 
01259                 virtual void OnResize(const core::dimension2d<u32>& size) =0;
01260 
01262 
01282                 virtual s32 addMaterialRenderer(IMaterialRenderer* renderer, const c8* name =0) =0;
01283 
01285 
01289                 virtual IMaterialRenderer* getMaterialRenderer(u32 idx) =0;
01290 
01292 
01293                 virtual u32 getMaterialRendererCount() const =0;
01294 
01296 
01305                 virtual const c8* getMaterialRendererName(u32 idx) const =0;
01306 
01308 
01313                 virtual void setMaterialRendererName(s32 idx, const c8* name) =0;
01314 
01316 
01325                 virtual io::IAttributes* createAttributesFromMaterial(const video::SMaterial& material,
01326                         io::SAttributeReadWriteOptions* options=0) =0;
01327 
01329 
01335                 virtual void fillMaterialStructureFromAttributes(video::SMaterial& outMaterial, io::IAttributes* attributes) =0;
01336 
01338 
01341                 virtual const SExposedVideoData& getExposedVideoData() =0;
01342 
01344 
01345                 virtual E_DRIVER_TYPE getDriverType() const =0;
01346 
01348 
01351                 virtual IGPUProgrammingServices* getGPUProgrammingServices() =0;
01352 
01354                 virtual scene::IMeshManipulator* getMeshManipulator() =0;
01355 
01357 
01363                 virtual void clearZBuffer() =0;
01364 
01366 
01367                 virtual IImage* createScreenShot(video::ECOLOR_FORMAT format=video::ECF_UNKNOWN, video::E_RENDER_TARGET target=video::ERT_FRAME_BUFFER) =0;
01368 
01370 
01374                 virtual video::ITexture* findTexture(const io::path& filename) = 0;
01375 
01377 
01385                 virtual bool setClipPlane(u32 index, const core::plane3df& plane, bool enable=false) =0;
01386 
01388 
01394                 virtual void enableClipPlane(u32 index, bool enable) =0;
01395 
01397 
01398                 virtual void setMinHardwareBufferVertexCount(u32 count) =0;
01399 
01401 
01405                 virtual SOverrideMaterial& getOverrideMaterial() =0;
01406 
01408 
01421                 virtual SMaterial& getMaterial2D() =0;
01422 
01424 
01426                 virtual void enableMaterial2D(bool enable=true) =0;
01427 
01429                 virtual core::stringc getVendorInfo() =0;
01430 
01432 
01435                 virtual void setAmbientLight(const SColorf& color) =0;
01436 
01438 
01441                 virtual void setAllowZWriteOnTransparent(bool flag) =0;
01442 
01444                 virtual core::dimension2du getMaxTextureSize() const =0;
01445 
01447 
01456                 virtual void convertColor(const void* sP, ECOLOR_FORMAT sF, s32 sN,
01457                                 void* dP, ECOLOR_FORMAT dF) const =0;
01458         };
01459 
01460 } // end namespace video
01461 } // end namespace irr
01462 
01463 
01464 #endif