00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __CS_IVIDEO_GRAPH3D_H__
00022 #define __CS_IVIDEO_GRAPH3D_H__
00023
00032 #include "csutil/scf.h"
00033
00034 #include "csgeom/matrix4.h"
00035 #include "csgeom/transfrm.h"
00036 #include "csutil/flags.h"
00037 #include "csutil/strset.h"
00038
00039 #include "ivideo/rndbuf.h"
00040
00041 struct iClipper2D;
00042 struct iGraphics2D;
00043 struct iHalo;
00044 struct iRenderBuffer;
00045 struct iShader;
00046 struct iShaderVariableContext;
00047 struct iTextureHandle;
00048 struct iTextureManager;
00049
00050 class csRect;
00051 class csPlane3;
00052 class csShaderVariable;
00053 class csVector2;
00054 class csVector3;
00055 class csVector4;
00056
00057 namespace CS
00058 {
00059 namespace Graphics
00060 {
00061 struct CoreRenderMesh;
00062 struct RenderMeshModes;
00063 }
00064 }
00065 class csRenderBufferHolder;
00066 class csShaderVariableStack;
00067
00068
00071
00072 #define CSDRAW_2DGRAPHICS 0x00000001
00073
00074 #define CSDRAW_3DGRAPHICS 0x00000002
00075
00076 #define CSDRAW_CLEARZBUFFER 0x00000010
00077
00078 #define CSDRAW_CLEARSCREEN 0x00000020
00079
00080 #define CSDRAW_NOCLIPCLEAR 0x00000040
00081
00086 #define CSDRAW_READBACK 0x00000080
00087
00094 #define CS_CLIPPER_NONE -1
00095
00098 #define CS_CLIPPER_OPTIONAL 0
00099
00102 #define CS_CLIPPER_TOPLEVEL 1
00103
00106 #define CS_CLIPPER_REQUIRED 2
00107
00115 #define CS_CLIP_NOT 0
00116
00121 #define CS_CLIP_NEEDED 1
00122
00124
00125 enum csZBufMode
00126 {
00128 CS_ZBUF_NONE = 0x00000000,
00130 CS_ZBUF_FILL = 0x00000001,
00132 CS_ZBUF_TEST = 0x00000002,
00134 CS_ZBUF_USE = 0x00000003,
00136 CS_ZBUF_EQUAL = 0x00000004,
00138 CS_ZBUF_INVERT = 0x00000005,
00139
00141 CS_ZBUF_MESH = 0x80000000,
00150 CS_ZBUF_MESH2 = 0x80000001
00151 };
00152
00153
00154
00155 #define CS_VATTRIB_SPECIFIC_FIRST 0
00156 #define CS_VATTRIB_SPECIFIC_LAST 15
00157 #define CS_VATTRIB_SPECIFIC_NUM \
00158 (CS_VATTRIB_SPECIFIC_LAST - CS_VATTRIB_SPECIFIC_FIRST + 1)
00159 #define CS_VATTRIB_GENERIC_FIRST 100
00160 #define CS_VATTRIB_GENERIC_LAST (CS_VATTRIB_GENERIC_FIRST + 15)
00161 #define CS_VATTRIB_GENERIC_NUM \
00162 (CS_VATTRIB_GENERIC_LAST - CS_VATTRIB_GENERIC_FIRST + 1)
00163 #define CS_IATTRIB_FIRST 200
00164 #define CS_IATTRIB_LAST (CS_IATTRIB_FIRST + 0)
00165 #define CS_IATTRIB_NUM \
00166 (CS_IATTRIB_LAST - CS_IATTRIB_FIRST + 1)
00167
00168
00169 #define CS_VATTRIB_IS_GENERIC(va) \
00170 ((va >= CS_VATTRIB_GENERIC_FIRST) && (va <=CS_VATTRIB_GENERIC_LAST))
00171 #define CS_VATTRIB_IS_SPECIFIC(va) \
00172 ((va >= CS_VATTRIB_SPECIFIC_FIRST) && (va <=CS_VATTRIB_SPECIFIC_LAST))
00173
00177 enum csVertexAttrib
00178 {
00182 CS_VATTRIB_UNUSED = -2,
00184 CS_VATTRIB_INVALID = -1,
00186 CS_VATTRIB_POSITION = CS_VATTRIB_SPECIFIC_FIRST + 0,
00188 CS_VATTRIB_WEIGHT = CS_VATTRIB_SPECIFIC_FIRST + 1,
00190 CS_VATTRIB_NORMAL = CS_VATTRIB_SPECIFIC_FIRST + 2,
00192 CS_VATTRIB_COLOR = CS_VATTRIB_SPECIFIC_FIRST + 3,
00194 CS_VATTRIB_PRIMARY_COLOR = CS_VATTRIB_SPECIFIC_FIRST + 3,
00196 CS_VATTRIB_SECONDARY_COLOR = CS_VATTRIB_SPECIFIC_FIRST + 4,
00198 CS_VATTRIB_FOGCOORD = CS_VATTRIB_SPECIFIC_FIRST + 5,
00200 CS_VATTRIB_TEXCOORD = CS_VATTRIB_SPECIFIC_FIRST + 8,
00202 CS_VATTRIB_TEXCOORD0 = CS_VATTRIB_SPECIFIC_FIRST + 8,
00204 CS_VATTRIB_TEXCOORD1 = CS_VATTRIB_SPECIFIC_FIRST + 9,
00206 CS_VATTRIB_TEXCOORD2 = CS_VATTRIB_SPECIFIC_FIRST + 10,
00208 CS_VATTRIB_TEXCOORD3 = CS_VATTRIB_SPECIFIC_FIRST + 11,
00210 CS_VATTRIB_TEXCOORD4 = CS_VATTRIB_SPECIFIC_FIRST + 12,
00212 CS_VATTRIB_TEXCOORD5 = CS_VATTRIB_SPECIFIC_FIRST + 13,
00214 CS_VATTRIB_TEXCOORD6 = CS_VATTRIB_SPECIFIC_FIRST + 14,
00216 CS_VATTRIB_TEXCOORD7 = CS_VATTRIB_SPECIFIC_FIRST + 15,
00218
00221 CS_VATTRIB_0 = CS_VATTRIB_GENERIC_FIRST + 0,
00222 CS_VATTRIB_1 = CS_VATTRIB_GENERIC_FIRST + 1,
00223 CS_VATTRIB_2 = CS_VATTRIB_GENERIC_FIRST + 2,
00224 CS_VATTRIB_3 = CS_VATTRIB_GENERIC_FIRST + 3,
00225 CS_VATTRIB_4 = CS_VATTRIB_GENERIC_FIRST + 4,
00226 CS_VATTRIB_5 = CS_VATTRIB_GENERIC_FIRST + 5,
00227 CS_VATTRIB_6 = CS_VATTRIB_GENERIC_FIRST + 6,
00228 CS_VATTRIB_7 = CS_VATTRIB_GENERIC_FIRST + 7,
00229 CS_VATTRIB_8 = CS_VATTRIB_GENERIC_FIRST + 8,
00230 CS_VATTRIB_9 = CS_VATTRIB_GENERIC_FIRST + 9,
00231 CS_VATTRIB_10 = CS_VATTRIB_GENERIC_FIRST + 10,
00232 CS_VATTRIB_11 = CS_VATTRIB_GENERIC_FIRST + 11,
00233 CS_VATTRIB_12 = CS_VATTRIB_GENERIC_FIRST + 12,
00234 CS_VATTRIB_13 = CS_VATTRIB_GENERIC_FIRST + 13,
00235 CS_VATTRIB_14 = CS_VATTRIB_GENERIC_FIRST + 14,
00236 CS_VATTRIB_15 = CS_VATTRIB_GENERIC_FIRST + 15,
00238
00240 CS_IATTRIB_OBJECT2WORLD = CS_IATTRIB_FIRST + 0
00241 };
00242
00252 #define CS_MIXMODE_TYPE_AUTO (0x00000000)
00253
00261 #define CS_MIXMODE_TYPE_BLENDOP (0x40000000)
00262
00266 #define CS_MIXMODE_FLAG_BLENDOP_ALPHA (0x08000000)
00267
00271 #define CS_MIXMODE_TYPE_MESH (0x80000000)
00272
00274 #define CS_MIXMODE_TYPE_MASK (0xc0000000)
00275
00277
00278 enum
00279 {
00281 CS_MIXMODE_FACT_ZERO = 0x0,
00283 CS_MIXMODE_FACT_ONE = 0x1,
00285 CS_MIXMODE_FACT_SRCCOLOR = 0x2,
00287 CS_MIXMODE_FACT_SRCCOLOR_INV = 0x3,
00289 CS_MIXMODE_FACT_DSTCOLOR = 0x4,
00291 CS_MIXMODE_FACT_DSTCOLOR_INV = 0x5,
00293 CS_MIXMODE_FACT_SRCALPHA = 0x6,
00295 CS_MIXMODE_FACT_SRCALPHA_INV = 0x7,
00297 CS_MIXMODE_FACT_DSTALPHA = 0x8,
00299 CS_MIXMODE_FACT_DSTALPHA_INV = 0x9,
00300
00302 CS_MIXMODE_FACT_COUNT = 0xa,
00303
00305 CS_MIXMODE_FACT_MASK = 0xf
00306 };
00307
00318 #define CS_MIXMODE_ALPHATEST_AUTO (0x00000000)
00319
00320 #define CS_MIXMODE_ALPHATEST_ENABLE (0x10000000)
00321
00322 #define CS_MIXMODE_ALPHATEST_DISABLE (0x20000000)
00323
00325 #define CS_MIXMODE_ALPHATEST_MASK (0x30000000)
00326
00340 #define CS_MIXMODE_BLEND(Src, Dst) \
00341 (CS_MIXMODE_TYPE_BLENDOP \
00342 | (CS_MIXMODE_FACT_ ## Src << 20) | (CS_MIXMODE_FACT_ ## Dst << 16))
00343
00344 #define CS_MIXMODE_BLENDOP_SRC(mode) ((mode >> 20) & CS_MIXMODE_FACT_MASK)
00345
00346 #define CS_MIXMODE_BLENDOP_DST(mode) ((mode >> 16) & CS_MIXMODE_FACT_MASK)
00347
00360 #define CS_MIXMODE_BLEND_ALPHA(Src, Dst) \
00361 (CS_MIXMODE_FLAG_BLENDOP_ALPHA \
00362 | (CS_MIXMODE_FACT_ ## Src << 12) | (CS_MIXMODE_FACT_ ## Dst << 8))
00363
00364 #define CS_MIXMODE_BLENDOP_ALPHA_SRC(mode) ((mode >> 12) & CS_MIXMODE_FACT_MASK)
00365
00366 #define CS_MIXMODE_BLENDOP_ALPHA_DST(mode) ((mode >> 8) & CS_MIXMODE_FACT_MASK)
00367
00382 #define CS_FX_COPY (CS_MIXMODE_TYPE_AUTO | CS_MIXMODE_ALPHATEST_AUTO)
00383
00384 #define CS_FX_MULTIPLY \
00385 (CS_MIXMODE_BLEND(DSTCOLOR, ZERO) | CS_MIXMODE_ALPHATEST_DISABLE)
00386
00387 #define CS_FX_MULTIPLY2 \
00388 (CS_MIXMODE_BLEND(DSTCOLOR, SRCCOLOR) | CS_MIXMODE_ALPHATEST_DISABLE)
00389
00390 #define CS_FX_ADD \
00391 (CS_MIXMODE_BLEND(ONE, ONE) | CS_MIXMODE_ALPHATEST_DISABLE)
00392
00397 #define CS_FX_ALPHA \
00398 (CS_MIXMODE_BLEND(SRCALPHA, SRCALPHA_INV) \
00399 | CS_MIXMODE_BLEND_ALPHA(ONE, SRCALPHA_INV) | CS_MIXMODE_ALPHATEST_DISABLE)
00400
00405 #define CS_FX_TRANSPARENT \
00406 (CS_MIXMODE_BLEND(ZERO, ONE) | CS_MIXMODE_ALPHATEST_DISABLE)
00407
00411 #define CS_FX_DESTALPHAADD \
00412 (CS_MIXMODE_BLEND(DSTALPHA, ONE) | CS_MIXMODE_ALPHATEST_DISABLE)
00413
00417 #define CS_FX_SRCALPHAADD \
00418 (CS_MIXMODE_BLEND(SRCALPHA, ONE) | CS_MIXMODE_ALPHATEST_DISABLE)
00419
00428 #define CS_FX_PREMULTALPHA \
00429 (CS_MIXMODE_BLEND(ONE, SRCALPHA_INV) | \
00430 CS_MIXMODE_BLEND_ALPHA(ONE, SRCALPHA_INV) | CS_MIXMODE_ALPHATEST_DISABLE)
00431
00435 #define CS_FX_MESH (CS_MIXMODE_TYPE_MESH)
00436
00438 #define CS_FX_FLAT (0x04000000)
00439
00448 #define CS_FX_MASK_ALPHA (0x000000FF)
00449
00454 #define CS_FX_MASK_MIXMODE (0xf8ffff00)
00455
00459
00460 #define CS_FX_SETALPHA(alpha) \
00461 (CS_FX_ALPHA | uint ((alpha) * CS_FX_MASK_ALPHA))
00462
00463 #define CS_FX_SETALPHA_INT(alpha) \
00464 (CS_FX_ALPHA | uint ((alpha) & CS_FX_MASK_ALPHA))
00465
00470 struct csAlphaMode
00471 {
00473 enum AlphaType
00474 {
00476 alphaNone = 1,
00478 alphaBinary,
00480 alphaSmooth
00481 };
00483 bool autoAlphaMode;
00484 union
00485 {
00487 AlphaType alphaType;
00492 CS::StringIDValue autoModeTexture;
00493 };
00494 };
00499
00500 #define CS_SHADOW_VOLUME_BEGIN 1
00501
00502 #define CS_SHADOW_VOLUME_PASS1 2
00503
00504 #define CS_SHADOW_VOLUME_PASS2 3
00505
00506 #define CS_SHADOW_VOLUME_FAIL1 4
00507
00508 #define CS_SHADOW_VOLUME_FAIL2 5
00509
00510 #define CS_SHADOW_VOLUME_USE 6
00511
00512 #define CS_SHADOW_VOLUME_FINISH 7
00513
00515
00516 enum G3D_RENDERSTATEOPTION
00517 {
00519 G3DRENDERSTATE_EDGES
00520 };
00521
00523 struct csGraphics3DCaps
00524 {
00526 int minTexHeight, minTexWidth;
00528 int maxTexHeight, maxTexWidth;
00533 bool SupportsPointSprites;
00537 bool DestinationAlpha;
00541 bool StencilShadows;
00546 int MaxRTColorAttachments;
00547 };
00548
00550 enum csRenderMeshType
00551 {
00553 CS_MESHTYPE_TRIANGLES,
00555 CS_MESHTYPE_QUADS,
00565 CS_MESHTYPE_TRIANGLESTRIP,
00571 CS_MESHTYPE_TRIANGLEFAN,
00575 CS_MESHTYPE_POINTS,
00581 CS_MESHTYPE_POINT_SPRITES,
00585 CS_MESHTYPE_LINES,
00590 CS_MESHTYPE_LINESTRIP
00591 };
00592
00596 enum csSimpleMeshFlags
00597 {
00604 csSimpleMeshScreenspace = 0x01
00605 };
00606
00611 enum csOpenPortalFlags
00612 {
00621 CS_OPENPORTAL_ZFILL = 0x00000004,
00626 CS_OPENPORTAL_MIRROR = 0x00000010,
00634 CS_OPENPORTAL_FLOAT = 0x00000040
00635 };
00636
00640 struct csSimpleRenderMesh
00641 {
00643 csRenderMeshType meshtype;
00644
00646 uint indexCount;
00654 const uint* indices;
00656
00661 uint indexStart, indexEnd;
00663
00665 uint vertexCount;
00671 const csVector3* vertices;
00673 const csVector2* texcoords;
00679 const csVector4* colors;
00684 iTextureHandle* texture;
00685
00687 iShader* shader;
00689 iShaderVariableContext* dynDomain;
00691 csAlphaMode alphaType;
00693 csZBufMode z_buf_mode;
00695 uint mixmode;
00706 csReversibleTransform object2world;
00708 csRef<csRenderBufferHolder> renderBuffers;
00709
00710 csSimpleRenderMesh () : indexCount(0), indices(0), indexStart (0),
00711 indexEnd (0), texcoords(0), colors(0),
00712 texture (0), shader (0), dynDomain (0), z_buf_mode (CS_ZBUF_NONE),
00713 mixmode (CS_FX_COPY)
00714 {
00715 alphaType.autoAlphaMode = true;
00716 alphaType.autoModeTexture = csInvalidStringID;
00717 };
00718 };
00719
00724 enum csRenderTargetAttachment
00725 {
00727 rtaDepth,
00729 rtaColor0,
00731 rtaColor1,
00733 rtaColor2,
00735 rtaColor3,
00737 rtaColor4,
00739 rtaColor5,
00741 rtaColor6,
00743 rtaColor7,
00745 rtaColor8,
00747 rtaColor9,
00749 rtaColor10,
00751 rtaColor11,
00753 rtaColor12,
00755 rtaColor13,
00757 rtaColor14,
00759 rtaColor15,
00760
00761
00762
00763
00764
00765
00766
00767
00769 rtaNumAttachments,
00771 rtaNumColorAttachments = rtaNumAttachments - 1
00772 };
00773
00774 namespace CS
00775 {
00776 namespace Graphics
00777 {
00778 struct TextureComparisonMode
00779 {
00780 enum Mode
00781 {
00782 compareNone,
00783 compareR
00784 };
00785 Mode mode;
00786 enum Function
00787 {
00788 funcLEqual,
00789 funcGEqual
00790 };
00791 Function function;
00792
00793 TextureComparisonMode() : mode (compareNone), function (funcLEqual) {}
00794 };
00795 }
00796 }
00797
00809 struct iGraphics3D : public virtual iBase
00810 {
00811 SCF_INTERFACE(iGraphics3D, 4, 0, 3);
00812
00814 virtual bool Open () = 0;
00816 virtual void Close () = 0;
00817
00825 virtual iGraphics2D *GetDriver2D () = 0;
00826
00833 virtual iTextureManager *GetTextureManager () = 0;
00834
00839 CS_DEPRECATED_METHOD
00840 virtual void SetDimensions (int width, int height) = 0;
00842 virtual int GetWidth () const = 0;
00844 virtual int GetHeight () const = 0;
00845
00850 virtual const csGraphics3DCaps *GetCaps () const = 0;
00851
00859 CS_DEPRECATED_METHOD_MSG("Use explicit projection matrix instead")
00860 virtual void SetPerspectiveCenter (int x, int y) = 0;
00861
00869 CS_DEPRECATED_METHOD_MSG("Use explicit projection matrix instead")
00870 virtual void GetPerspectiveCenter (int& x, int& y) const = 0;
00871
00876 CS_DEPRECATED_METHOD_MSG("Use explicit projection matrix instead")
00877 virtual void SetPerspectiveAspect (float aspect) = 0;
00878
00883 CS_DEPRECATED_METHOD_MSG("Use explicit projection matrix instead")
00884 virtual float GetPerspectiveAspect () const = 0;
00885
00913 virtual bool SetRenderTarget (iTextureHandle* handle,
00914 bool persistent = false,
00915 int subtexture = 0,
00916 csRenderTargetAttachment attachment = rtaColor0) = 0;
00917
00926 virtual bool ValidateRenderTargets () = 0;
00927
00934 virtual bool CanSetRenderTarget (const char* format,
00935 csRenderTargetAttachment attachment = rtaColor0) = 0;
00936
00942 virtual iTextureHandle* GetRenderTarget (
00943 csRenderTargetAttachment attachment = rtaColor0,
00944 int* subtexture = 0) const = 0;
00945
00947 virtual void UnsetRenderTargets() = 0;
00948
00950 virtual bool BeginDraw (int DrawFlags) = 0;
00951
00953 virtual void FinishDraw () = 0;
00954
00960 virtual void Print (csRect const* area) = 0;
00961
00963 virtual void DrawMesh (const CS::Graphics::CoreRenderMesh* mymesh,
00964 const CS::Graphics::RenderMeshModes& modes,
00965 const csShaderVariableStack& stack) = 0;
00982 virtual void DrawSimpleMesh (const csSimpleRenderMesh& mesh,
00983 uint flags = 0) = 0;
00984
00999 virtual void DrawPixmap (iTextureHandle *hTex, int sx, int sy,
01000 int sw, int sh, int tx, int ty, int tw, int th, uint8 Alpha = 0) = 0;
01001
01007 CS_DEPRECATED_METHOD_MSG("Use iGraphics2D::DrawLineProjected() instead")
01008 virtual void DrawLine (const csVector3& v1, const csVector3& v2,
01009 float fov, int color) = 0;
01010
01014 virtual bool ActivateBuffers (csRenderBufferHolder* holder,
01015 csRenderBufferName mapping[CS_VATTRIB_SPECIFIC_LAST+1]) = 0;
01016
01020 virtual bool ActivateBuffers (csVertexAttrib *attribs,
01021 iRenderBuffer **buffers, unsigned int count) = 0;
01022
01027 virtual void DeactivateBuffers (csVertexAttrib *attribs, unsigned int count) = 0;
01028
01034 virtual void SetTextureState (int* units, iTextureHandle** textures,
01035 int count) = 0;
01036
01037
01043 virtual void SetClipper (iClipper2D* clipper, int cliptype) = 0;
01044
01048 virtual iClipper2D* GetClipper () = 0;
01049
01053 virtual int GetClipType () const = 0;
01054
01059 virtual void SetNearPlane (const csPlane3& pl) = 0;
01060
01064 virtual void ResetNearPlane () = 0;
01065
01069 virtual const csPlane3& GetNearPlane () const = 0;
01070
01074 virtual bool HasNearPlane () const = 0;
01075
01080 CS_DEPRECATED_METHOD_MSG("Use SetEdgeDrawing() for sole supported render state")
01081 virtual bool SetRenderState (G3D_RENDERSTATEOPTION op, long val) = 0;
01082
01087 CS_DEPRECATED_METHOD_MSG("Use GetEdgeDrawing() for sole supported render state")
01088 virtual long GetRenderState (G3D_RENDERSTATEOPTION op) const = 0;
01089
01094 virtual bool SetOption (const char*, const char*) = 0;
01095
01097 virtual void SetWriteMask (bool red, bool green, bool blue, bool alpha) = 0;
01098
01100 virtual void GetWriteMask (bool &red, bool &green, bool &blue,
01101 bool &alpha) const = 0;
01102
01104 virtual void SetZMode (csZBufMode mode) = 0;
01105
01107 virtual csZBufMode GetZMode () = 0;
01108
01112 CS_DEPRECATED_METHOD_MSG("Nonfunctional. Use RenderMeshModes::zoffset instead")
01113 virtual void EnableZOffset () = 0;
01114
01118 CS_DEPRECATED_METHOD_MSG("Nonfunctional. Use RenderMeshModes::zoffset instead")
01119 virtual void DisableZOffset () = 0;
01120
01122 virtual void SetShadowState (int state) = 0;
01123
01125 virtual float GetZBuffValue (int x, int y) = 0;
01126
01137 virtual void OpenPortal (size_t numVertices, const csVector2* vertices,
01138 const csPlane3& normal, csFlags flags) = 0;
01139
01144 virtual void ClosePortal () = 0;
01145
01147 virtual iHalo *CreateHalo (float iR, float iG, float iB,
01148 unsigned char *iAlpha, int iWidth, int iHeight) = 0;
01149
01155 virtual void SetWorldToCamera (const csReversibleTransform& w2c) = 0;
01156
01164 virtual bool PerformExtension (char const* command, ...) = 0;
01165
01171 virtual bool PerformExtensionV (char const* command, va_list) = 0;
01172
01177 virtual const csReversibleTransform& GetWorldToCamera () = 0;
01181 virtual int GetCurrentDrawFlags() const = 0;
01182
01183 virtual const CS::Math::Matrix4& GetProjectionMatrix() = 0;
01187 virtual void SetProjectionMatrix (const CS::Math::Matrix4& m) = 0;
01188
01192 virtual void SetTextureComparisonModes (int* units,
01193 CS::Graphics::TextureComparisonMode* texCompare,
01194 int count) = 0;
01195
01206 virtual void CopyFromRenderTargets (size_t num,
01207 csRenderTargetAttachment* attachments,
01208 iTextureHandle** textures,
01209 int* subtextures = 0) = 0;
01210
01215 virtual void DrawSimpleMeshes (const csSimpleRenderMesh* meshes,
01216 size_t numMeshes, uint flags = 0) = 0;
01217
01223 virtual void OQInitQueries (unsigned int* queries, int num_queries) = 0;
01224
01226 virtual void OQDelQueries (unsigned int* queries, int num_queries) = 0;
01227
01231 virtual bool OQueryFinished (unsigned int occlusion_query) = 0;
01232
01236 virtual bool OQIsVisible (unsigned int occlusion_query, unsigned int sampleLimit = 0) = 0;
01237
01239 virtual void OQBeginQuery (unsigned int occlusion_query) = 0;
01241 virtual void OQEndQuery () = 0;
01244 virtual void DrawMeshBasic(const CS::Graphics::CoreRenderMesh* mymesh,
01245 const CS::Graphics::RenderMeshModes& modes) = 0;
01246
01248 virtual void SetEdgeDrawing (bool flag) = 0;
01250 virtual bool GetEdgeDrawing () = 0;
01251 };
01252
01255 #endif // __CS_IVIDEO_GRAPH3D_H__