Irrlicht 3D Engine
 
Loading...
Searching...
No Matches
IVideoDriver.h
Go to the documentation of this file.
1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h
4
5#ifndef __IRR_I_VIDEO_DRIVER_H_INCLUDED__
6#define __IRR_I_VIDEO_DRIVER_H_INCLUDED__
7
8#include "rect.h"
9#include "SColor.h"
10#include "ITexture.h"
11#include "irrArray.h"
12#include "matrix4.h"
13#include "plane3d.h"
14#include "dimension2d.h"
15#include "position2d.h"
16#include "SMaterial.h"
17#include "IMeshBuffer.h"
18#include "triangle3d.h"
19#include "EDriverTypes.h"
20#include "EDriverFeatures.h"
21#include "SExposedVideoData.h"
22
23namespace irr
24{
25namespace io
26{
27 class IAttributes;
28 struct SAttributeReadWriteOptions;
29 class IReadFile;
30 class IWriteFile;
31} // end namespace io
32namespace scene
33{
34 class IMeshBuffer;
35 class IMesh;
36 class IMeshManipulator;
37 class ISceneNode;
38} // end namespace scene
39
40namespace video
41{
42 struct S3DVertex;
43 struct S3DVertex2TCoords;
44 struct S3DVertexTangents;
45 struct SLight;
46 class IImageLoader;
47 class IImageWriter;
48 class IMaterialRenderer;
49 class IGPUProgrammingServices;
50
53 {
68#if _IRR_MATERIAL_MAX_TEXTURES_>4
70 ETS_TEXTURE_4,
71#if _IRR_MATERIAL_MAX_TEXTURES_>5
73 ETS_TEXTURE_5,
74#if _IRR_MATERIAL_MAX_TEXTURES_>6
76 ETS_TEXTURE_6,
77#if _IRR_MATERIAL_MAX_TEXTURES_>7
79 ETS_TEXTURE_7,
80#endif
81#endif
82#endif
83#endif
86 };
87
89
103
105
131
139
140 const c8* const FogTypeNames[] =
141 {
142 "FogExp",
143 "FogLinear",
144 "FogExp2",
145 0
146 };
147
149 {
153
156
159
162
165
167 void apply(SMaterial& material)
168 {
169 if (Enabled)
170 {
171 for (u32 i=0; i<32; ++i)
172 {
173 const u32 num=(1<<i);
174 if (EnableFlags & num)
175 {
176 switch (num)
177 {
178 case EMF_WIREFRAME: material.Wireframe = Material.Wireframe; break;
179 case EMF_POINTCLOUD: material.PointCloud = Material.PointCloud; break;
181 case EMF_LIGHTING: material.Lighting = Material.Lighting; break;
182 case EMF_ZBUFFER: material.ZBuffer = Material.ZBuffer; break;
183 case EMF_ZWRITE_ENABLE: material.ZWriteEnable = Material.ZWriteEnable; break;
189 case EMF_FOG_ENABLE: material.FogEnable = Material.FogEnable; break;
191 case EMF_TEXTURE_WRAP:
194 break;
195 case EMF_ANTI_ALIASING: material.AntiAliasing = Material.AntiAliasing; break;
196 case EMF_COLOR_MASK: material.ColorMask = Material.ColorMask; break;
198 case EMF_USE_MIP_MAPS: material.UseMipMaps = Material.UseMipMaps; break;
203 }
204 }
205 }
206 }
207 }
208
209 };
210
212 {
214 E_COLOR_PLANE colorMask=ECP_ALL,
215 E_BLEND_FACTOR blendFuncSrc=EBF_ONE,
217 E_BLEND_OPERATION blendOp=EBO_NONE) :
218 RenderTexture(texture),
220 BlendFuncSrc(blendFuncSrc), BlendFuncDst(blendFuncDst),
221 BlendOp(blendOp) {}
223 E_COLOR_PLANE colorMask=ECP_ALL,
224 E_BLEND_FACTOR blendFuncSrc=EBF_ONE,
226 E_BLEND_OPERATION blendOp=EBO_NONE) :
227 RenderTexture(0),
228 TargetType(target), ColorMask(colorMask),
229 BlendFuncSrc(blendFuncSrc), BlendFuncDst(blendFuncDst),
230 BlendOp(blendOp) {}
231 bool operator!=(const IRenderTarget& other) const
232 {
233 return ((RenderTexture != other.RenderTexture) ||
234 (TargetType != other.TargetType) ||
235 (ColorMask != other.ColorMask) ||
236 (BlendFuncSrc != other.BlendFuncSrc) ||
237 (BlendFuncDst != other.BlendFuncDst) ||
238 (BlendOp != other.BlendOp));
239 }
246 };
247
249
256 class IVideoDriver : public virtual IReferenceCounted
257 {
258 public:
259
261
278 virtual bool beginScene(bool backBuffer=true, bool zBuffer=true,
279 SColor color=SColor(255,0,0,0),
280 const SExposedVideoData& videoData=SExposedVideoData(),
281 core::rect<s32>* sourceRect=0) =0;
282
284
287 virtual bool endScene() =0;
288
290
293 virtual bool queryFeature(E_VIDEO_DRIVER_FEATURE feature) const =0;
294
296
300 virtual void disableFeature(E_VIDEO_DRIVER_FEATURE feature, bool flag=true) =0;
301
303
319 virtual const io::IAttributes& getDriverAttributes() const=0;
320
322
325 virtual bool checkDriverReset() =0;
326
328
331 virtual void setTransform(E_TRANSFORMATION_STATE state, const core::matrix4& mat) =0;
332
334
336 virtual const core::matrix4& getTransform(E_TRANSFORMATION_STATE state) const =0;
337
339
340 virtual u32 getImageLoaderCount() const = 0;
341
343
347
349
350 virtual u32 getImageWriterCount() const = 0;
351
353
357
359
361 virtual void setMaterial(const SMaterial& material) =0;
362
364
373 virtual ITexture* getTexture(const io::path& filename) = 0;
374
376
386
388
394 virtual ITexture* getTextureByIndex(u32 index) =0;
395
397
398 virtual u32 getTextureCount() const = 0;
399
401
403 virtual void renameTexture(ITexture* texture, const io::path& newName) = 0;
404
406
416 const io::path& name, ECOLOR_FORMAT format = ECF_A8R8G8B8) = 0;
417
419
429 virtual ITexture* addTexture(const io::path& name, IImage* image, void* mipmapData=0) = 0;
430
432
444 const io::path& name = "rt", const ECOLOR_FORMAT format = ECF_UNKNOWN) =0;
445
447
454 virtual void removeTexture(ITexture* texture) =0;
455
457
463 virtual void removeAllTextures() =0;
464
466 virtual void removeHardwareBuffer(const scene::IMeshBuffer* mb) =0;
467
469 virtual void removeAllHardwareBuffers() =0;
470
472
474 const scene::IMesh* mesh=0) =0;
475
478
480 virtual void removeAllOcclusionQueries() =0;
481
483
485 virtual void runOcclusionQuery(scene::ISceneNode* node, bool visible=false) =0;
486
488
490 virtual void runAllOcclusionQueries(bool visible=false) =0;
491
493
495 virtual void updateOcclusionQuery(scene::ISceneNode* node, bool block=true) =0;
496
498
500 virtual void updateAllOcclusionQueries(bool block=true) =0;
501
503
507
509
526 video::SColor color,
527 bool zeroTexels = false) const =0;
528
530
543 core::position2d<s32> colorKeyPixelPos,
544 bool zeroTexels = false) const =0;
545
547
554 virtual void makeNormalMapTexture(video::ITexture* texture, f32 amplitude=1.0f) const =0;
555
557
588 virtual bool setRenderTarget(video::ITexture* texture,
589 bool clearBackBuffer=true, bool clearZBuffer=true,
590 SColor color=video::SColor(0,0,0,0)) =0;
591
593
604 virtual bool setRenderTarget(E_RENDER_TARGET target, bool clearTarget=true,
605 bool clearZBuffer=true,
606 SColor color=video::SColor(0,0,0,0)) =0;
607
610 bool clearBackBuffer=true, bool clearZBuffer=true,
611 SColor color=video::SColor(0,0,0,0)) =0;
612
614
617 virtual void setViewPort(const core::rect<s32>& area) =0;
618
620
621 virtual const core::rect<s32>& getViewPort() const =0;
622
624
638 virtual void drawVertexPrimitiveList(const void* vertices, u32 vertexCount,
639 const void* indexList, u32 primCount,
642 E_INDEX_TYPE iType=EIT_16BIT) =0;
643
645
664 virtual void draw2DVertexPrimitiveList(const void* vertices, u32 vertexCount,
665 const void* indexList, u32 primCount,
668 E_INDEX_TYPE iType=EIT_16BIT) =0;
669
671
679 void drawIndexedTriangleList(const S3DVertex* vertices,
680 u32 vertexCount, const u16* indexList, u32 triangleCount)
681 {
682 drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_STANDARD, scene::EPT_TRIANGLES, EIT_16BIT);
683 }
684
686
695 u32 vertexCount, const u16* indexList, u32 triangleCount)
696 {
697 drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_2TCOORDS, scene::EPT_TRIANGLES, EIT_16BIT);
698 }
699
701
710 u32 vertexCount, const u16* indexList, u32 triangleCount)
711 {
712 drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_TANGENTS, scene::EPT_TRIANGLES, EIT_16BIT);
713 }
714
716
724 void drawIndexedTriangleFan(const S3DVertex* vertices,
725 u32 vertexCount, const u16* indexList, u32 triangleCount)
726 {
727 drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_STANDARD, scene::EPT_TRIANGLE_FAN, EIT_16BIT);
728 }
729
731
740 u32 vertexCount, const u16* indexList, u32 triangleCount)
741 {
742 drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_2TCOORDS, scene::EPT_TRIANGLE_FAN, EIT_16BIT);
743 }
744
746
755 u32 vertexCount, const u16* indexList, u32 triangleCount)
756 {
757 drawVertexPrimitiveList(vertices, vertexCount, indexList, triangleCount, EVT_TANGENTS, scene::EPT_TRIANGLE_FAN, EIT_16BIT);
758 }
759
761
775 virtual void draw3DLine(const core::vector3df& start,
776 const core::vector3df& end, SColor color = SColor(255,255,255,255)) =0;
777
779
792 virtual void draw3DTriangle(const core::triangle3df& triangle,
793 SColor color = SColor(255,255,255,255)) =0;
794
796
807 virtual void draw3DBox(const core::aabbox3d<f32>& box,
808 SColor color = SColor(255,255,255,255)) =0;
809
811
814 virtual void draw2DImage(const video::ITexture* texture,
815 const core::position2d<s32>& destPos) =0;
816
818
833 virtual void draw2DImage(const video::ITexture* texture, const core::position2d<s32>& destPos,
834 const core::rect<s32>& sourceRect, const core::rect<s32>* clipRect =0,
835 SColor color=SColor(255,255,255,255), bool useAlphaChannelOfTexture=false) =0;
836
838
857 virtual void draw2DImageBatch(const video::ITexture* texture,
858 const core::position2d<s32>& pos,
859 const core::array<core::rect<s32> >& sourceRects,
860 const core::array<s32>& indices,
861 s32 kerningWidth=0,
862 const core::rect<s32>* clipRect=0,
863 SColor color=SColor(255,255,255,255),
864 bool useAlphaChannelOfTexture=false) =0;
865
867
882 virtual void draw2DImageBatch(const video::ITexture* texture,
883 const core::array<core::position2d<s32> >& positions,
884 const core::array<core::rect<s32> >& sourceRects,
885 const core::rect<s32>* clipRect=0,
886 SColor color=SColor(255,255,255,255),
887 bool useAlphaChannelOfTexture=false) =0;
888
890
899 virtual void draw2DImage(const video::ITexture* texture, const core::rect<s32>& destRect,
900 const core::rect<s32>& sourceRect, const core::rect<s32>* clipRect =0,
901 const video::SColor * const colors=0, bool useAlphaChannelOfTexture=false) =0;
902
904
911 virtual void draw2DRectangle(SColor color, const core::rect<s32>& pos,
912 const core::rect<s32>* clip =0) =0;
913
915
931 virtual void draw2DRectangle(const core::rect<s32>& pos,
932 SColor colorLeftUp, SColor colorRightUp,
933 SColor colorLeftDown, SColor colorRightDown,
934 const core::rect<s32>* clip =0) =0;
935
937
940 virtual void draw2DRectangleOutline(const core::recti& pos,
941 SColor color=SColor(255,255,255,255)) =0;
942
944
949 virtual void draw2DLine(const core::position2d<s32>& start,
950 const core::position2d<s32>& end,
951 SColor color=SColor(255,255,255,255)) =0;
952
954
957 virtual void drawPixel(u32 x, u32 y, const SColor& color) =0;
958
960
973 f32 radius,
974 video::SColor color=SColor(100,255,255,255),
975 s32 vertexCount=10) =0;
976
978
991 virtual void drawStencilShadowVolume(const core::array<core::vector3df>& triangles, bool zfail=true, u32 debugDataVisible=0) =0;
992
994
1013 virtual void drawStencilShadow(bool clearStencilBuffer=false,
1014 video::SColor leftUpEdge = video::SColor(255,0,0,0),
1015 video::SColor rightUpEdge = video::SColor(255,0,0,0),
1016 video::SColor leftDownEdge = video::SColor(255,0,0,0),
1017 video::SColor rightDownEdge = video::SColor(255,0,0,0)) =0;
1018
1020
1021 virtual void drawMeshBuffer(const scene::IMeshBuffer* mb) =0;
1022
1024
1028 virtual void drawMeshBufferNormals(const scene::IMeshBuffer* mb, f32 length=10.f, SColor color=0xffffffff) =0;
1029
1031
1047 virtual void setFog(SColor color=SColor(0,255,255,255),
1048 E_FOG_TYPE fogType=EFT_FOG_LINEAR,
1049 f32 start=50.0f, f32 end=100.0f, f32 density=0.01f,
1050 bool pixelFog=false, bool rangeFog=false) =0;
1051
1053 virtual void getFog(SColor& color, E_FOG_TYPE& fogType,
1054 f32& start, f32& end, f32& density,
1055 bool& pixelFog, bool& rangeFog) = 0;
1056
1058
1059 virtual ECOLOR_FORMAT getColorFormat() const =0;
1060
1062
1063 virtual const core::dimension2d<u32>& getScreenSize() const =0;
1064
1066
1071
1073
1078 virtual s32 getFPS() const =0;
1079
1081
1085 virtual u32 getPrimitiveCountDrawn( u32 mode =0 ) const =0;
1086
1088 virtual void deleteAllDynamicLights() =0;
1089
1093 virtual s32 addDynamicLight(const SLight& light) =0;
1094
1096
1098
1100
1101 virtual u32 getDynamicLightCount() const =0;
1102
1104
1107 virtual const SLight& getDynamicLight(u32 idx) const =0;
1108
1112 virtual void turnLightOn(s32 lightIndex, bool turnOn) =0;
1113
1115
1117 virtual const wchar_t* getName() const =0;
1118
1120
1126 virtual void addExternalImageLoader(IImageLoader* loader) =0;
1127
1129
1135 virtual void addExternalImageWriter(IImageWriter* writer) =0;
1136
1138
1141 virtual u32 getMaximalPrimitiveCount() const =0;
1142
1144
1153 virtual void setTextureCreationFlag(E_TEXTURE_CREATION_FLAG flag, bool enabled=true) =0;
1154
1156
1160
1162
1170 virtual IImage* createImageFromFile(const io::path& filename) = 0;
1171
1173
1181
1183
1190 virtual bool writeImageToFile(IImage* image, const io::path& filename, u32 param = 0) = 0;
1191
1193
1201 virtual bool writeImageToFile(IImage* image, io::IWriteFile* file, u32 param =0) =0;
1202
1204
1219 const core::dimension2d<u32>& size, void *data,
1220 bool ownForeignMemory=false,
1221 bool deleteMemory = true) =0;
1222
1224
1230 virtual IImage* createImage(ECOLOR_FORMAT format, const core::dimension2d<u32>& size) =0;
1231
1233
1239 _IRR_DEPRECATED_ virtual IImage* createImage(ECOLOR_FORMAT format, IImage *imageToCopy) =0;
1240
1242
1250 const core::position2d<s32>& pos,
1251 const core::dimension2d<u32>& size) =0;
1252
1254
1261 virtual IImage* createImage(ITexture* texture,
1262 const core::position2d<s32>& pos,
1263 const core::dimension2d<u32>& size) =0;
1264
1266
1268 virtual void OnResize(const core::dimension2d<u32>& size) =0;
1269
1271
1291 virtual s32 addMaterialRenderer(IMaterialRenderer* renderer, const c8* name =0) =0;
1292
1294
1299
1301
1302 virtual u32 getMaterialRendererCount() const =0;
1303
1305
1314 virtual const c8* getMaterialRendererName(u32 idx) const =0;
1315
1317
1322 virtual void setMaterialRendererName(s32 idx, const c8* name) =0;
1323
1325
1335 io::SAttributeReadWriteOptions* options=0) =0;
1336
1338
1345
1347
1351
1353
1354 virtual E_DRIVER_TYPE getDriverType() const =0;
1355
1357
1361
1364
1366
1372 virtual void clearZBuffer() =0;
1373
1375
1377
1379
1383 virtual video::ITexture* findTexture(const io::path& filename) = 0;
1384
1386
1394 virtual bool setClipPlane(u32 index, const core::plane3df& plane, bool enable=false) =0;
1395
1397
1403 virtual void enableClipPlane(u32 index, bool enable) =0;
1404
1406
1407 virtual void setMinHardwareBufferVertexCount(u32 count) =0;
1408
1410
1415
1417
1431
1433
1435 virtual void enableMaterial2D(bool enable=true) =0;
1436
1439
1441
1444 virtual void setAmbientLight(const SColorf& color) =0;
1445
1447
1450 virtual void setAllowZWriteOnTransparent(bool flag) =0;
1451
1454
1456
1465 virtual void convertColor(const void* sP, ECOLOR_FORMAT sF, s32 sN,
1466 void* dP, ECOLOR_FORMAT dF) const =0;
1467 };
1468
1469} // end namespace video
1470} // end namespace irr
1471
1472
1473#endif
Base class of most objects of the Irrlicht Engine.
4x4 matrix. Mostly used as transformation matrix for 3d calculations.
Definition matrix4.h:46
Axis aligned bounding box in 3d dimensional space.
Definition aabbox3d.h:22
Self reallocating template array (like stl vector) with additional features.
Definition irrArray.h:23
Provides a generic interface for attributes and their values and the possiblity to serialize them.
Definition IAttributes.h:42
Interface providing read acess to a file.
Definition IReadFile.h:18
Interface providing write access to a file.
Definition IWriteFile.h:18
Struct for holding a mesh with a single material.
Definition IMeshBuffer.h:40
Class which holds the geometry of an object.
Definition IMesh.h:24
An interface for easy manipulation of meshes.
Scene node interface.
Definition ISceneNode.h:41
Interface making it possible to create and use programs running on the GPU.
Interface for software image data.
Definition IImage.h:23
Class which is able to create a image from a file.
Interface for writing software image data.
Interface for material rendering.
Interface of a Video Driver dependent Texture.
Definition ITexture.h:99
Interface to driver which is able to perform 2d and 3d graphics functions.
virtual bool beginScene(bool backBuffer=true, bool zBuffer=true, SColor color=SColor(255, 0, 0, 0), const SExposedVideoData &videoData=SExposedVideoData(), core::rect< s32 > *sourceRect=0)=0
Applications must call this method before performing any rendering.
void drawIndexedTriangleList(const S3DVertex2TCoords *vertices, u32 vertexCount, const u16 *indexList, u32 triangleCount)
Draws an indexed triangle list.
virtual IImageWriter * getImageWriter(u32 n)=0
Retrieve the given image writer.
virtual void addOcclusionQuery(scene::ISceneNode *node, const scene::IMesh *mesh=0)=0
Create occlusion query.
void drawIndexedTriangleList(const S3DVertexTangents *vertices, u32 vertexCount, const u16 *indexList, u32 triangleCount)
Draws an indexed triangle list.
virtual s32 addMaterialRenderer(IMaterialRenderer *renderer, const c8 *name=0)=0
Adds a new material renderer to the video device.
virtual void removeHardwareBuffer(const scene::IMeshBuffer *mb)=0
Remove hardware buffer.
virtual u32 getOcclusionQueryResult(scene::ISceneNode *node) const =0
Return query result.
virtual void draw2DImage(const video::ITexture *texture, const core::position2d< s32 > &destPos, const core::rect< s32 > &sourceRect, const core::rect< s32 > *clipRect=0, SColor color=SColor(255, 255, 255, 255), bool useAlphaChannelOfTexture=false)=0
Draws a 2d image using a color.
virtual ITexture * getTexture(const io::path &filename)=0
Get access to a named texture.
virtual u32 getImageWriterCount() const =0
Retrieve the number of image writers.
virtual void removeAllTextures()=0
Removes all textures from the texture cache and deletes them.
virtual void OnResize(const core::dimension2d< u32 > &size)=0
Event handler for resize events. Only used by the engine internally.
virtual void draw2DImageBatch(const video::ITexture *texture, const core::position2d< s32 > &pos, const core::array< core::rect< s32 > > &sourceRects, const core::array< s32 > &indices, s32 kerningWidth=0, const core::rect< s32 > *clipRect=0, SColor color=SColor(255, 255, 255, 255), bool useAlphaChannelOfTexture=false)=0
Draws a set of 2d images, using a color and the alpha channel of the texture.
virtual void drawMeshBufferNormals(const scene::IMeshBuffer *mb, f32 length=10.f, SColor color=0xffffffff)=0
Draws normals of a mesh buffer.
virtual bool setRenderTarget(const core::array< video::IRenderTarget > &texture, bool clearBackBuffer=true, bool clearZBuffer=true, SColor color=video::SColor(0, 0, 0, 0))=0
Sets new multiple render targets.
virtual void clearZBuffer()=0
Clears the ZBuffer.
virtual core::stringc getVendorInfo()=0
Get the graphics card vendor name.
virtual void removeAllHardwareBuffers()=0
Remove all hardware buffers.
virtual void getFog(SColor &color, E_FOG_TYPE &fogType, f32 &start, f32 &end, f32 &density, bool &pixelFog, bool &rangeFog)=0
Gets the fog mode.
virtual u32 getPrimitiveCountDrawn(u32 mode=0) const =0
Returns amount of primitives (mostly triangles) which were drawn in the last frame.
virtual void renameTexture(ITexture *texture, const io::path &newName)=0
Renames a texture.
virtual void draw2DVertexPrimitiveList(const void *vertices, u32 vertexCount, const void *indexList, u32 primCount, E_VERTEX_TYPE vType=EVT_STANDARD, scene::E_PRIMITIVE_TYPE pType=scene::EPT_TRIANGLES, E_INDEX_TYPE iType=EIT_16BIT)=0
Draws a vertex primitive list in 2d.
virtual _IRR_DEPRECATED_ IImage * createImage(ECOLOR_FORMAT format, IImage *imageToCopy)=0
Creates a software image by converting it to given format from another image.
virtual void turnLightOn(s32 lightIndex, bool turnOn)=0
virtual _IRR_DEPRECATED_ IImage * createImage(IImage *imageToCopy, const core::position2d< s32 > &pos, const core::dimension2d< u32 > &size)=0
Creates a software image from a part of another image.
virtual const SLight & getDynamicLight(u32 idx) const =0
Returns light data which was previously set by IVideoDriver::addDynamicLight().
virtual bool writeImageToFile(IImage *image, const io::path &filename, u32 param=0)=0
Writes the provided image to a file.
virtual SMaterial & getMaterial2D()=0
Get the 2d override material for altering its values.
virtual IImage * createImageFromData(ECOLOR_FORMAT format, const core::dimension2d< u32 > &size, void *data, bool ownForeignMemory=false, bool deleteMemory=true)=0
Creates a software image from a byte array.
virtual ITexture * addTexture(const io::path &name, IImage *image, void *mipmapData=0)=0
Creates a texture from an IImage.
virtual void draw2DImage(const video::ITexture *texture, const core::rect< s32 > &destRect, const core::rect< s32 > &sourceRect, const core::rect< s32 > *clipRect=0, const video::SColor *const colors=0, bool useAlphaChannelOfTexture=false)=0
Draws a part of the texture into the rectangle. Note that colors must be an array of 4 colors if used...
virtual bool checkDriverReset()=0
Check if the driver was recently reset.
virtual u32 getTextureCount() const =0
Returns amount of textures currently loaded.
virtual void setMaterialRendererName(s32 idx, const c8 *name)=0
Sets the name of a material renderer.
virtual const io::IAttributes & getDriverAttributes() const =0
Get attributes of the actual video driver.
virtual ITexture * addRenderTargetTexture(const core::dimension2d< u32 > &size, const io::path &name="rt", const ECOLOR_FORMAT format=ECF_UNKNOWN)=0
Adds a new render target texture to the texture cache.
void drawIndexedTriangleList(const S3DVertex *vertices, u32 vertexCount, const u16 *indexList, u32 triangleCount)
Draws an indexed triangle list.
virtual void addExternalImageWriter(IImageWriter *writer)=0
Adds an external image writer to the engine.
virtual s32 getFPS() const =0
Returns current frames per second value.
virtual void removeAllOcclusionQueries()=0
Remove all occlusion queries.
virtual void draw3DLine(const core::vector3df &start, const core::vector3df &end, SColor color=SColor(255, 255, 255, 255))=0
Draws a 3d line.
virtual void updateOcclusionQuery(scene::ISceneNode *node, bool block=true)=0
Update occlusion query. Retrieves results from GPU.
virtual void makeNormalMapTexture(video::ITexture *texture, f32 amplitude=1.0f) const =0
Creates a normal map from a height map texture.
virtual void draw2DImageBatch(const video::ITexture *texture, const core::array< core::position2d< s32 > > &positions, const core::array< core::rect< s32 > > &sourceRects, const core::rect< s32 > *clipRect=0, SColor color=SColor(255, 255, 255, 255), bool useAlphaChannelOfTexture=false)=0
Draws a set of 2d images, using a color and the alpha channel of the texture.
virtual SOverrideMaterial & getOverrideMaterial()=0
Get the global Material, which might override local materials.
virtual void drawPixel(u32 x, u32 y, const SColor &color)=0
Draws a pixel.
virtual void draw2DRectangleOutline(const core::recti &pos, SColor color=SColor(255, 255, 255, 255))=0
Draws the outline of a 2D rectangle.
virtual const wchar_t * getName() const =0
Gets name of this video driver.
virtual IImage * createImageFromFile(io::IReadFile *file)=0
Creates a software image from a file.
virtual void makeColorKeyTexture(video::ITexture *texture, video::SColor color, bool zeroTexels=false) const =0
Sets a boolean alpha channel on the texture based on a color key.
virtual bool endScene()=0
Presents the rendered image to the screen.
virtual void enableMaterial2D(bool enable=true)=0
Enable the 2d override material.
virtual void draw3DBox(const core::aabbox3d< f32 > &box, SColor color=SColor(255, 255, 255, 255))=0
Draws a 3d axis aligned box.
virtual IImage * createImage(ECOLOR_FORMAT format, const core::dimension2d< u32 > &size)=0
Creates an empty software image.
virtual void setMinHardwareBufferVertexCount(u32 count)=0
Set the minimum number of vertices for which a hw buffer will be created.
virtual void draw2DLine(const core::position2d< s32 > &start, const core::position2d< s32 > &end, SColor color=SColor(255, 255, 255, 255))=0
Draws a 2d line. Both start and end will be included in coloring.
void drawIndexedTriangleFan(const S3DVertexTangents *vertices, u32 vertexCount, const u16 *indexList, u32 triangleCount)
Draws an indexed triangle fan.
virtual const core::dimension2d< u32 > & getCurrentRenderTargetSize() const =0
Get the size of the current render target.
virtual IImage * createScreenShot(video::ECOLOR_FORMAT format=video::ECF_UNKNOWN, video::E_RENDER_TARGET target=video::ERT_FRAME_BUFFER)=0
Make a screenshot of the last rendered frame.
virtual s32 addDynamicLight(const SLight &light)=0
void drawIndexedTriangleFan(const S3DVertex *vertices, u32 vertexCount, const u16 *indexList, u32 triangleCount)
Draws an indexed triangle fan.
virtual void draw2DRectangle(const core::rect< s32 > &pos, SColor colorLeftUp, SColor colorRightUp, SColor colorLeftDown, SColor colorRightDown, const core::rect< s32 > *clip=0)=0
Draws a 2d rectangle with a gradient.
virtual void setTextureCreationFlag(E_TEXTURE_CREATION_FLAG flag, bool enabled=true)=0
Enables or disables a texture creation flag.
virtual const core::dimension2d< u32 > & getScreenSize() const =0
Get the size of the screen or render window.
virtual bool setRenderTarget(video::ITexture *texture, bool clearBackBuffer=true, bool clearZBuffer=true, SColor color=video::SColor(0, 0, 0, 0))=0
Sets a new render target.
virtual void setMaterial(const SMaterial &material)=0
Sets a material.
virtual u32 getImageLoaderCount() const =0
Retrieve the number of image loaders.
virtual scene::IMeshManipulator * getMeshManipulator()=0
Returns a pointer to the mesh manipulator.
virtual const core::rect< s32 > & getViewPort() const =0
Gets the area of the current viewport.
virtual ITexture * addTexture(const core::dimension2d< u32 > &size, const io::path &name, ECOLOR_FORMAT format=ECF_A8R8G8B8)=0
Creates an empty texture of specified size.
virtual void addExternalImageLoader(IImageLoader *loader)=0
Adds an external image loader to the engine.
virtual bool setClipPlane(u32 index, const core::plane3df &plane, bool enable=false)=0
Set or unset a clipping plane.
virtual void drawStencilShadow(bool clearStencilBuffer=false, video::SColor leftUpEdge=video::SColor(255, 0, 0, 0), video::SColor rightUpEdge=video::SColor(255, 0, 0, 0), video::SColor leftDownEdge=video::SColor(255, 0, 0, 0), video::SColor rightDownEdge=video::SColor(255, 0, 0, 0))=0
Fills the stencil shadow with color.
virtual u32 getDynamicLightCount() const =0
Returns amount of dynamic lights currently set.
virtual void fillMaterialStructureFromAttributes(video::SMaterial &outMaterial, io::IAttributes *attributes)=0
Fills an SMaterial structure from attributes.
virtual core::dimension2du getMaxTextureSize() const =0
Get the maximum texture size supported.
virtual void removeOcclusionQuery(scene::ISceneNode *node)=0
Remove occlusion query.
virtual const SExposedVideoData & getExposedVideoData()=0
Returns driver and operating system specific data about the IVideoDriver.
virtual void enableClipPlane(u32 index, bool enable)=0
Enable or disable a clipping plane.
virtual void setAmbientLight(const SColorf &color)=0
Only used by the engine internally.
virtual IImage * createImageFromFile(const io::path &filename)=0
Creates a software image from a file.
virtual void draw2DPolygon(core::position2d< s32 > center, f32 radius, video::SColor color=SColor(100, 255, 255, 255), s32 vertexCount=10)=0
Draws a non filled concyclic regular 2d polygon.
virtual void setTransform(E_TRANSFORMATION_STATE state, const core::matrix4 &mat)=0
Sets transformation matrices.
virtual void runOcclusionQuery(scene::ISceneNode *node, bool visible=false)=0
Run occlusion query. Draws mesh stored in query.
virtual void drawMeshBuffer(const scene::IMeshBuffer *mb)=0
Draws a mesh buffer.
virtual void drawVertexPrimitiveList(const void *vertices, u32 vertexCount, const void *indexList, u32 primCount, E_VERTEX_TYPE vType=EVT_STANDARD, scene::E_PRIMITIVE_TYPE pType=scene::EPT_TRIANGLES, E_INDEX_TYPE iType=EIT_16BIT)=0
Draws a vertex primitive list.
virtual void deleteAllDynamicLights()=0
Deletes all dynamic lights which were previously added with addDynamicLight().
virtual void updateAllOcclusionQueries(bool block=true)=0
Update all occlusion queries. Retrieves results from GPU.
virtual u32 getMaximalDynamicLightAmount() const =0
Returns the maximal amount of dynamic lights the device can handle.
virtual u32 getMaterialRendererCount() const =0
Get amount of currently available material renderers.
virtual void draw2DImage(const video::ITexture *texture, const core::position2d< s32 > &destPos)=0
Draws a 2d image without any special effects.
virtual const c8 * getMaterialRendererName(u32 idx) const =0
Get name of a material renderer.
virtual void draw3DTriangle(const core::triangle3df &triangle, SColor color=SColor(255, 255, 255, 255))=0
Draws a 3d triangle.
virtual void draw2DRectangle(SColor color, const core::rect< s32 > &pos, const core::rect< s32 > *clip=0)=0
Draws a 2d rectangle.
virtual void removeTexture(ITexture *texture)=0
Removes a texture from the texture cache and deletes it.
virtual IGPUProgrammingServices * getGPUProgrammingServices()=0
Gets the IGPUProgrammingServices interface.
virtual IImageLoader * getImageLoader(u32 n)=0
Retrieve the given image loader.
virtual bool setRenderTarget(E_RENDER_TARGET target, bool clearTarget=true, bool clearZBuffer=true, SColor color=video::SColor(0, 0, 0, 0))=0
set or reset special render targets
virtual io::IAttributes * createAttributesFromMaterial(const video::SMaterial &material, io::SAttributeReadWriteOptions *options=0)=0
Creates material attributes list from a material.
virtual bool queryFeature(E_VIDEO_DRIVER_FEATURE feature) const =0
Queries the features of the driver.
void drawIndexedTriangleFan(const S3DVertex2TCoords *vertices, u32 vertexCount, const u16 *indexList, u32 triangleCount)
Draws an indexed triangle fan.
virtual bool writeImageToFile(IImage *image, io::IWriteFile *file, u32 param=0)=0
Writes the provided image to a file.
virtual void runAllOcclusionQueries(bool visible=false)=0
Run all occlusion queries. Draws all meshes stored in queries.
virtual void drawStencilShadowVolume(const core::array< core::vector3df > &triangles, bool zfail=true, u32 debugDataVisible=0)=0
Draws a shadow volume into the stencil buffer.
virtual ITexture * getTexture(io::IReadFile *file)=0
Get access to a named texture.
virtual bool getTextureCreationFlag(E_TEXTURE_CREATION_FLAG flag) const =0
Returns if a texture creation flag is enabled or disabled.
virtual IMaterialRenderer * getMaterialRenderer(u32 idx)=0
Get access to a material renderer by index.
virtual void disableFeature(E_VIDEO_DRIVER_FEATURE feature, bool flag=true)=0
Disable a feature of the driver.
virtual void makeColorKeyTexture(video::ITexture *texture, core::position2d< s32 > colorKeyPixelPos, bool zeroTexels=false) const =0
Sets a boolean alpha channel on the texture based on the color at a position.
virtual void setViewPort(const core::rect< s32 > &area)=0
Sets a new viewport.
virtual ITexture * getTextureByIndex(u32 index)=0
Returns a texture by index.
virtual const core::matrix4 & getTransform(E_TRANSFORMATION_STATE state) const =0
Returns the transformation set by setTransform.
virtual void setAllowZWriteOnTransparent(bool flag)=0
Only used by the engine internally.
virtual video::ITexture * findTexture(const io::path &filename)=0
Check if the image is already loaded.
virtual E_DRIVER_TYPE getDriverType() const =0
Get type of video driver.
virtual void setFog(SColor color=SColor(0, 255, 255, 255), E_FOG_TYPE fogType=EFT_FOG_LINEAR, f32 start=50.0f, f32 end=100.0f, f32 density=0.01f, bool pixelFog=false, bool rangeFog=false)=0
Sets the fog mode.
virtual void convertColor(const void *sP, ECOLOR_FORMAT sF, s32 sN, void *dP, ECOLOR_FORMAT dF) const =0
Color conversion convenience function.
virtual ECOLOR_FORMAT getColorFormat() const =0
Get the current color format of the color buffer.
virtual u32 getMaximalPrimitiveCount() const =0
Returns the maximum amount of primitives.
virtual IImage * createImage(ITexture *texture, const core::position2d< s32 > &pos, const core::dimension2d< u32 > &size)=0
Creates a software image from a part of a texture.
Class representing a 32 bit ARGB color.
Definition SColor.h:202
Class representing a color with four floats.
Definition SColor.h:459
Struct for holding parameters for a material renderer.
Definition SMaterial.h:227
bool ZWriteEnable
Is the zbuffer writeable or is it read-only. Default: true.
Definition SMaterial.h:422
u8 ColorMaterial
Defines the interpretation of vertex color in the lighting equation.
Definition SMaterial.h:387
SMaterialLayer TextureLayer[MATERIAL_MAX_TEXTURES]
Texture layer array.
Definition SMaterial.h:297
bool PointCloud
Draw as point cloud or filled triangles? Default: false.
Definition SMaterial.h:410
u8 ColorMask
Defines the enabled color planes.
Definition SMaterial.h:379
bool Wireframe
Draw as wireframe or filled triangles? Default: false.
Definition SMaterial.h:407
u8 ZBuffer
Is the ZBuffer enabled? Default: ECFN_LESSEQUAL.
Definition SMaterial.h:366
u8 AntiAliasing
Sets the antialiasing mode.
Definition SMaterial.h:372
bool UseMipMaps
Shall mipmaps be used if available.
Definition SMaterial.h:439
bool FrontfaceCulling
Is frontface culling enabled? Default: false.
Definition SMaterial.h:428
bool FogEnable
Is fog enabled? Default: false.
Definition SMaterial.h:431
E_POLYGON_OFFSET PolygonOffsetDirection
Flag defining the direction the polygon offset is applied to.
Definition SMaterial.h:401
bool GouraudShading
Flat or Gouraud shading? Default: true.
Definition SMaterial.h:413
bool NormalizeNormals
Should normals be normalized?
Definition SMaterial.h:435
bool BackfaceCulling
Is backface culling enabled? Default: true.
Definition SMaterial.h:425
u8 PolygonOffsetFactor
Factor specifying how far the polygon offset should be made.
Definition SMaterial.h:397
E_BLEND_OPERATION BlendOperation
Store the blend operation of choice.
Definition SMaterial.h:392
bool Lighting
Will this material be lighted? Default: true.
Definition SMaterial.h:416
bool BilinearFilter
Is bilinear filtering enabled? Default: true.
bool TrilinearFilter
Is trilinear filtering enabled? Default: false.
u8 AnisotropicFilter
Is anisotropic filtering enabled? Default: 0, disabled.
u8 TextureWrapU
Texture Clamp Mode.
#define _IRR_DEPRECATED_
Defines a deprecated macro which generates a warning at compile time.
Definition irrTypes.h:195
E_PRIMITIVE_TYPE
Enumeration for all primitive types there are.
@ EPT_TRIANGLES
Explicitly set all vertices for each triangle.
E_VERTEX_TYPE
Enumeration for all vertex types there are.
Definition S3DVertex.h:19
@ EVT_2TCOORDS
Vertex with two texture coordinates, video::S3DVertex2TCoords.
Definition S3DVertex.h:25
@ EVT_TANGENTS
Vertex with a tangent and binormal vector, video::S3DVertexTangents.
Definition S3DVertex.h:29
@ EVT_STANDARD
Standard vertex type used by the Irrlicht engine, video::S3DVertex.
Definition S3DVertex.h:21
E_TRANSFORMATION_STATE
enumeration for geometry transformation states
@ ETS_VIEW
View transformation.
@ ETS_TEXTURE_1
Texture transformation.
@ ETS_TEXTURE_2
Texture transformation.
@ ETS_TEXTURE_0
Texture transformation.
@ ETS_WORLD
World transformation.
@ ETS_TEXTURE_3
Texture transformation.
@ ETS_COUNT
Not used.
@ ETS_PROJECTION
Projection transformation.
ECOLOR_FORMAT
An enum for the color format of textures used by the Irrlicht Engine.
Definition SColor.h:18
@ ECF_UNKNOWN
Unknown color format:
Definition SColor.h:55
@ ECF_A8R8G8B8
Default 32 bit color format. 8 bits are used for every component: red, green, blue and alpha.
Definition SColor.h:32
E_VIDEO_DRIVER_FEATURE
enumeration for querying features of the video driver.
const c8 *const FogTypeNames[]
E_LOST_RESOURCE
enumeration for signaling resources which were lost after the last render cycle
@ ELR_TEXTURES
All texture are lost, rare problem.
@ ELR_HW_BUFFERS
The HW buffers are lost, will be recreated automatically, but might require some more time this frame...
@ ELR_DEVICE
The whole device/driver is lost.
@ ELR_RTTS
The Render Target Textures are lost, typical problem for D3D.
E_RENDER_TARGET
Special render targets, which usually map to dedicated hardware.
@ ERT_AUX_BUFFER4
Auxiliary buffer 4.
@ ERT_AUX_BUFFER1
Auxiliary buffer 1.
@ ERT_RENDER_TEXTURE
Render target is a render texture.
@ ERT_AUX_BUFFER0
Auxiliary buffer 0.
@ ERT_FRAME_BUFFER
Render target is the main color frame buffer.
@ ERT_STEREO_LEFT_BUFFER
Render target is the main color frame buffer.
@ ERT_STEREO_BOTH_BUFFERS
Render to both stereo buffers at once.
@ ERT_STEREO_RIGHT_BUFFER
Render target is the right color buffer (left is the main buffer)
@ ERT_AUX_BUFFER3
Auxiliary buffer 3.
@ ERT_MULTI_RENDER_TEXTURES
Multi-Render target textures.
@ ERT_AUX_BUFFER2
Auxiliary buffer 2.
E_BLEND_OPERATION
Values defining the blend operation used when blend is enabled.
Definition SMaterial.h:40
@ EBO_NONE
No blending happens.
Definition SMaterial.h:41
@ EMF_FRONT_FACE_CULLING
Is frontface culling enabled? Default: false.
@ EMF_POINTCLOUD
Draw as point cloud or filled triangles? Default: false.
@ EMF_NORMALIZE_NORMALS
Normalizes normals. Default: false.
@ EMF_ZBUFFER
Is the ZBuffer enabled? Default: true.
@ EMF_ZWRITE_ENABLE
May be written to the zbuffer or is it readonly. Default: true.
@ EMF_FOG_ENABLE
Is fog enabled? Default: false.
@ EMF_COLOR_MASK
ColorMask bits, for enabling the color planes.
@ EMF_TRILINEAR_FILTER
Is trilinear filtering enabled? Default: false.
@ EMF_TEXTURE_WRAP
Access to all layers texture wrap settings. Overwrites separate layer settings.
@ EMF_COLOR_MATERIAL
ColorMaterial enum for vertex color interpretation.
@ EMF_GOURAUD_SHADING
Flat or Gouraud shading? Default: true.
@ EMF_USE_MIP_MAPS
Flag for enabling/disabling mipmap usage.
@ EMF_ANISOTROPIC_FILTER
Is anisotropic filtering? Default: false.
@ EMF_ANTI_ALIASING
AntiAliasing mode.
@ EMF_BLEND_OPERATION
Flag for blend operation.
@ EMF_WIREFRAME
Draw as wireframe or filled triangles? Default: false.
@ EMF_POLYGON_OFFSET
Flag for polygon offset.
@ EMF_LIGHTING
Will this material be lighted? Default: true.
@ EMF_BACK_FACE_CULLING
Is backface culling enabled? Default: true.
@ EMF_BILINEAR_FILTER
Is bilinear filtering enabled? Default: true.
E_COLOR_PLANE
Enum values for enabling/disabling color planes for rendering.
Definition SMaterial.h:84
@ ECP_ALL
All planes enabled.
Definition SMaterial.h:98
E_BLEND_FACTOR
Flag for EMT_ONETEXTURE_BLEND, ( BlendFactor ) BlendFunc = source * sourceFactor + dest * destFactor.
Definition SMaterial.h:24
@ EBF_ONE
src & dest (1, 1, 1, 1)
Definition SMaterial.h:26
@ EBF_ONE_MINUS_SRC_ALPHA
src & dest (1-srcA, 1-srcA, 1-srcA, 1-srcA)
Definition SMaterial.h:32
E_TEXTURE_CREATION_FLAG
Enumeration flags telling the video driver in which format textures should be created.
Definition ITexture.h:23
E_FOG_TYPE
Enum for the types of fog distributions to choose from.
E_DRIVER_TYPE
An enum for all types of drivers the Irrlicht Engine supports.
Everything in the Irrlicht Engine can be found in this namespace.
Definition aabbox3d.h:13
float f32
32 bit floating point variable.
Definition irrTypes.h:104
unsigned int u32
32 bit unsigned variable.
Definition irrTypes.h:58
char c8
8 bit character variable.
Definition irrTypes.h:31
signed int s32
32 bit signed variable.
Definition irrTypes.h:66
unsigned short u16
16 bit unsigned variable.
Definition irrTypes.h:40
struct holding data describing options
IRenderTarget(E_RENDER_TARGET target, E_COLOR_PLANE colorMask=ECP_ALL, E_BLEND_FACTOR blendFuncSrc=EBF_ONE, E_BLEND_FACTOR blendFuncDst=EBF_ONE_MINUS_SRC_ALPHA, E_BLEND_OPERATION blendOp=EBO_NONE)
E_BLEND_OPERATION BlendOp
E_RENDER_TARGET TargetType
bool operator!=(const IRenderTarget &other) const
IRenderTarget(ITexture *texture, E_COLOR_PLANE colorMask=ECP_ALL, E_BLEND_FACTOR blendFuncSrc=EBF_ONE, E_BLEND_FACTOR blendFuncDst=EBF_ONE_MINUS_SRC_ALPHA, E_BLEND_OPERATION blendOp=EBO_NONE)
E_BLEND_FACTOR BlendFuncDst
E_BLEND_FACTOR BlendFuncSrc
Vertex with two texture coordinates.
Definition S3DVertex.h:110
standard vertex used by the Irrlicht engine.
Definition S3DVertex.h:43
Vertex with a tangent and binormal vector.
Definition S3DVertex.h:188
structure for holding data describing a driver and operating system specific data.
structure for holding data describing a dynamic point light.
Definition SLight.h:42
void apply(SMaterial &material)
Apply the enabled overrides.
u32 EnableFlags
Which values are taken for override.
SMaterial Material
The Material values.
bool Enabled
Global enable flag, overwritten by the SceneManager in each pass.
SOverrideMaterial()
Default constructor.
u16 EnablePasses
Set in which render passes the material override is active.