X-Git-Url: http://deadsoftware.ru/gitweb?p=nanogl.git;a=blobdiff_plain;f=nanoWrap.cpp;h=a30a009de2421771b32292914fa1ae480c96ed7a;hp=eea514e1ea6570eca3781965a7eba33f70c6e0d0;hb=4f937221b421f3c63856af69e4d620a7f8b0a6b0;hpb=2a342cb7b58f8e29ec4852e195beed47d5f40821 diff --git a/nanoWrap.cpp b/nanoWrap.cpp index eea514e..a30a009 100644 --- a/nanoWrap.cpp +++ b/nanoWrap.cpp @@ -24,9 +24,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include +#include #include "gl.h" #include "glesinterface.h" +#include "nanogl.h" #define GL_TEXTURE0_ARB 0x84C0 #define GL_TEXTURE1_ARB 0x84C1 @@ -204,7 +206,7 @@ struct VertexAttrib #endif }; -static VertexAttrib vertexattribs[8000]; +static VertexAttrib vertexattribs[40000]; static GLushort indexArray[30000]; @@ -258,6 +260,64 @@ void InitGLStructs() arraysValid = GL_FALSE; } +void ResetNanoState() +{ + + if (tmuState0.color_array.enabled) + { + glEsImpl->glEnableClientState(GL_COLOR_ARRAY); + } + else + { + glEsImpl->glDisableClientState(GL_COLOR_ARRAY); + } + + if (tmuState0.vertex_array.enabled) + { + glEsImpl->glEnableClientState(GL_VERTEX_ARRAY); + } + else + { + glEsImpl->glDisableClientState(GL_VERTEX_ARRAY); + } + + if (tmuState0.texture_coord_array.enabled) + { + glEsImpl->glEnableClientState(GL_TEXTURE_COORD_ARRAY); + } + else + { + glEsImpl->glDisableClientState(GL_TEXTURE_COORD_ARRAY); + } + glEsImpl->glVertexPointer(tmuState0.vertex_array.size, + tmuState0.vertex_array.type, + tmuState0.vertex_array.stride, + tmuState0.vertex_array.ptr); + + glEsImpl->glTexCoordPointer(tmuState0.texture_coord_array.size, + tmuState0.texture_coord_array.type, + tmuState0.texture_coord_array.stride, + tmuState0.texture_coord_array.ptr); + + glEsImpl->glColorPointer(tmuState0.color_array.size, + tmuState0.color_array.type, + tmuState0.color_array.stride, + tmuState0.color_array.ptr); + + glEsImpl->glMatrixMode(nanoglState.matrixmode); + + + + glEsImpl->glColor4f (currentVertexAttrib.red, currentVertexAttrib.green, currentVertexAttrib.blue, currentVertexAttrib.alpha); + + glEsImpl->glBlendFunc(nanoglState.sfactor, nanoglState.dfactor); + + //glEsImpl->glBindTexture(GL_TEXTURE_2D, stackTextureState); + + glEsImpl->glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, activetmuState->texture_env_mode.value); + + arraysValid = GL_FALSE; +} void FlushOnStateChange() { @@ -301,7 +361,14 @@ void FlushOnStateChange() ptrIndexArray = indexArray; useTexCoordArray = GL_FALSE; } - +void nanoGL_Flush() + { + FlushOnStateChange(); + } +void nanoGL_Reset() +{ + ResetNanoState(); +} void glBegin(GLenum mode) { wrapperPrimitiveMode = mode; @@ -1353,7 +1420,7 @@ void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) GLenum glGetError (void) { - FlushOnStateChange(); + //FlushOnStateChange(); return GL_NO_ERROR;//glEsImpl->glGetError(); }