00001 00037 #ifndef LL_LLGLIMMEDIATE_H 00038 #define LL_LLGLIMMEDIATE_H 00039 00040 #include "stdtypes.h" 00041 #include "llgltypes.h" 00042 #include "llglheaders.h" 00043 #include "llvertexbuffer.h" 00044 00045 class LLGLImmediate 00046 { 00047 public: 00048 LLGLImmediate(); 00049 00050 void translatef(const GLfloat& x, const GLfloat& y, const GLfloat& z); 00051 void pushMatrix(); 00052 void popMatrix(); 00053 void blendFunc(GLenum sfactor, GLenum dfactor); 00054 void flush(); 00055 00056 void begin(const GLuint& mode); 00057 void end(); 00058 void vertex2i(const GLint& x, const GLint& y); 00059 void vertex2f(const GLfloat& x, const GLfloat& y); 00060 void vertex3f(const GLfloat& x, const GLfloat& y, const GLfloat& z); 00061 void vertex2fv(const GLfloat* v); 00062 void vertex3fv(const GLfloat* v); 00063 00064 void texCoord2i(const GLint& x, const GLint& y); 00065 void texCoord2f(const GLfloat& x, const GLfloat& y); 00066 void texCoord2fv(const GLfloat* tc); 00067 00068 void color4ub(const GLubyte& r, const GLubyte& g, const GLubyte& b, const GLubyte& a); 00069 void color4f(const GLfloat& r, const GLfloat& g, const GLfloat& b, const GLfloat& a); 00070 void color4fv(const GLfloat* c); 00071 void color3f(const GLfloat& r, const GLfloat& g, const GLfloat& b); 00072 void color3fv(const GLfloat* c); 00073 void color4ubv(const GLubyte* c); 00074 00075 typedef struct Vertex 00076 { 00077 GLfloat v[3]; 00078 GLubyte c[4]; 00079 GLfloat uv[2]; 00080 }; 00081 00082 private: 00083 U32 mCount; 00084 U32 mMode; 00085 LLPointer<LLVertexBuffer> mBuffer; 00086 LLStrider<LLVector3> mVerticesp; 00087 LLStrider<LLVector2> mTexcoordsp; 00088 LLStrider<LLColor4U> mColorsp; 00089 }; 00090 00091 extern LLGLImmediate gGL; 00092 00093 #endif