00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CS_IVIDEO_RNDBUF_H__
00021 #define __CS_IVIDEO_RNDBUF_H__
00022
00031 #include "csutil/strset.h"
00032
00033 #include "ivideo/material.h"
00034 #include "ivideo/render3d.h"
00035
00036 class csVector3;
00037 class csVector2;
00038 class csColor;
00039
00040 struct iLightingInfo;
00041 struct iTextureHandle;
00042
00043
00048 enum csRenderBufferType
00049 {
00050 CS_BUF_DYNAMIC,
00051 CS_BUF_STATIC,
00052 CS_BUF_INDEX
00053 };
00054
00056 enum csRenderBufferComponentType
00057 {
00058 CS_BUFCOMP_BYTE,
00059 CS_BUFCOMP_UNSIGNED_BYTE,
00060 CS_BUFCOMP_SHORT,
00061 CS_BUFCOMP_UNSIGNED_SHORT,
00062 CS_BUFCOMP_INT,
00063 CS_BUFCOMP_UNSIGNED_INT,
00064 CS_BUFCOMP_FLOAT,
00065 CS_BUFCOMP_DOUBLE
00066 };
00067
00073 enum csRenderBufferLockType
00074 {
00075 CS_BUF_LOCK_NOLOCK,
00076 CS_BUF_LOCK_NORMAL,
00077 CS_BUF_LOCK_RENDER
00078 };
00079
00080 SCF_VERSION (iRenderBuffer, 0, 0, 2);
00081
00086 struct iRenderBuffer : public iBase
00087 {
00092 virtual void* Lock(csRenderBufferLockType lockType) = 0;
00093
00095 virtual void Release() = 0;
00096
00098 virtual int GetComponentCount () = 0;
00099
00101 virtual csRenderBufferComponentType GetComponentType () = 0;
00102
00104 virtual bool IsDiscarded() = 0;
00105
00107 virtual void CanDiscard(bool value) = 0;
00108
00110 virtual csRenderBufferType GetBufferType() = 0;
00111
00113 virtual int GetSize() = 0;
00114
00115 };
00116
00117 SCF_VERSION (iRenderBufferManager, 0, 0, 2);
00118
00119 struct iRenderBufferManager : public iBase
00120 {
00122 virtual csPtr<iRenderBuffer> CreateBuffer(int buffersize,
00123 csRenderBufferType type,
00124 csRenderBufferComponentType comptype,
00125 int compcount) = 0;
00126
00127 };
00128
00129 SCF_VERSION (iStreamSource, 0, 0, 1);
00130
00131 struct iStreamSource : public iBase
00132 {
00134 virtual iRenderBuffer* GetBuffer (csStringID name) = 0;
00135 };
00136
00138 enum csRenderMeshType
00139 {
00140 CS_MESHTYPE_TRIANGLES,
00141 CS_MESHTYPE_QUADS,
00142 CS_MESHTYPE_TRIANGLESTRIP,
00143 CS_MESHTYPE_TRIANGLEFAN,
00144 CS_MESHTYPE_POINTS,
00145 CS_MESHTYPE_LINES,
00146 CS_MESHTYPE_LINESTRIP
00147 };
00148
00149 class csRenderMesh
00150 {
00151 public:
00152
00153 public:
00154
00155 csRenderMesh ()
00156 {
00157 mixmode = CS_FX_COPY;
00158 }
00159
00160 virtual ~csRenderMesh () {}
00161
00162
00163
00164
00165
00166
00167
00168
00169
00171 csZBufMode z_buf_mode;
00172
00174 uint mixmode;
00175
00177 int clip_portal;
00178
00180 int clip_plane;
00181
00183 int clip_z_plane;
00184
00186 bool do_mirror;
00187
00189 csRenderMeshType meshtype;
00190
00192 unsigned int indexstart;
00193
00195 unsigned int indexend;
00196
00198 iStreamSource* streamsource;
00199
00201 iMaterialHandle* mathandle;
00202
00204 csReversibleTransform *transform;
00205 };
00206
00209 #endif // __CS_IVIDEO_RNDBUF_H__