X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=nanoWrap.cpp;h=c13aea311d72a7f902275de277d4f156227a7039;hb=57b822a8a58cbc7ff7edd99a1d375b559a198c9e;hp=0428487e698841da06738fb165d5ddfb97e6685f;hpb=63045ea16759232df455140efd8d5ed67986882d;p=nanogl.git diff --git a/nanoWrap.cpp b/nanoWrap.cpp index 0428487..c13aea3 100644 --- a/nanoWrap.cpp +++ b/nanoWrap.cpp @@ -28,6 +28,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "gl.h" #include "glesinterface.h" +#include "nanogl.h" #define GL_TEXTURE0_ARB 0x84C0 #define GL_TEXTURE1_ARB 0x84C1 @@ -259,13 +260,73 @@ 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() { if (delayedttmuchange) { delayedttmuchange = GL_FALSE; +#ifndef USE_CORE_PROFILE glEsImpl->glActiveTexture(delayedtmutarget); +#endif } if (!vertexCount) @@ -302,7 +363,14 @@ void FlushOnStateChange() ptrIndexArray = indexArray; useTexCoordArray = GL_FALSE; } - +void nanoGL_Flush() + { + FlushOnStateChange(); + } +void nanoGL_Reset() +{ + ResetNanoState(); +} void glBegin(GLenum mode) { wrapperPrimitiveMode = mode; @@ -928,7 +996,11 @@ void glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) void glOrtho (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar) { FlushOnStateChange(); +#ifdef USE_CORE_PROFILE + glEsImpl->glOrtho(left,right,bottom,top, zNear,zFar); +#else glEsImpl->glOrthof(left,right,bottom,top, zNear,zFar); +#endif } void glMatrixMode (GLenum mode) @@ -1005,7 +1077,11 @@ void glDepthRange(GLclampf zNear, GLclampf zFar) nanoglState.depth_range_far = zFar; } FlushOnStateChange(); +#ifdef USE_CORE_PROFILE + glEsImpl->glDepthRange(zNear, zFar); +#else glEsImpl->glDepthRangef(zNear, zFar); +#endif } void glDepthFunc (GLenum func) @@ -1354,7 +1430,7 @@ void glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) GLenum glGetError (void) { - FlushOnStateChange(); + //FlushOnStateChange(); return GL_NO_ERROR;//glEsImpl->glGetError(); }