00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #if !defined(AFX_IMMEDIATEPRIM_H__1A931B0A_E8EE_4052_A04B_56E41640C78A__INCLUDED_)
00020 #define AFX_IMMEDIATEPRIM_H__1A931B0A_E8EE_4052_A04B_56E41640C78A__INCLUDED_
00021
00022 #if _MSC_VER > 1000
00023 #pragma once
00024 #endif // _MSC_VER > 1000
00025
00026 #include "drawableGLI.h"
00027 #include "../texCoordGen/texCoordGen.h"
00028 #include <arrayGutz.h>
00029 #include <mathGutz.h>
00030
00031 namespace glift {
00032
00033 class Shader;
00034 class SinglePrim;
00035
00036
00037 typedef std::vector<SinglePrim*> VecSinglePrimP;
00038 typedef std::vector<gutz::arrayo1ui*> MultiPrimIndices;
00039
00040
00041 class _export_ RawPrim : public DrawableGLI
00042 {
00043 public:
00044 virtual ~RawPrim() = 0;
00045
00046
00047 virtual MultiPrimTexCoord* genTexCoords( const Shader* shader );
00048
00049
00050 virtual bool hasTexCoords() const = 0;
00051 virtual void bindTexCoords( const MultiPrimTexCoord* texCoords ) = 0;
00052 virtual void bindTexCoords( const MultiTexCoord* texCoords ) = 0;
00053 virtual void releaseTexCoords() = 0;
00054
00055
00056 virtual void bindIndices( const MultiPrimIndices* indices ) = 0;
00057 virtual void bindIndices( const gutz::arrayw1ui* indices ) = 0;
00058 virtual void releaseIndices() = 0;
00059
00060 protected:
00061 virtual void drawDef() = 0;
00062 };
00063
00064 class _export_ SinglePrim : public RawPrim
00065 {
00066 public:
00067 virtual ~SinglePrim();
00068
00069 virtual MultiPrimTexCoord* genTexCoords( const Shader* shader );
00070
00071
00072 virtual const gutz::arrayo2f& texCoord() const = 0;
00073 virtual const gutz::arrayo2f& texCoord(int texUnit) const = 0;
00074 virtual int numVerts() const = 0;
00075 virtual const gutz::vec3f& scale() const = 0;
00076
00077 protected:
00078
00079 virtual void drawDef() = 0;
00080
00081 };
00082
00083 }
00084
00085 #endif