diff --git a/project/jni/glshim/Android.mk b/project/jni/glshim/Android.mk index ffba7b59f..3cadc348f 100644 --- a/project/jni/glshim/Android.mk +++ b/project/jni/glshim/Android.mk @@ -21,6 +21,7 @@ LOCAL_SRC_FILES := \ src/gl/buffers.c \ src/gl/debug.c \ src/gl/decompress.c \ + src/gl/directstate.c \ src/gl/eval.c \ src/gl/framebuffers.c \ src/gl/gl.c \ diff --git a/project/jni/glshim/src/gl/directstate.c b/project/jni/glshim/src/gl/directstate.c new file mode 100755 index 000000000..e9348f656 --- /dev/null +++ b/project/jni/glshim/src/gl/directstate.c @@ -0,0 +1,346 @@ +#include "directstate.h" +#include "gl.h" +#include "stack.h" + +// Client State +void glClientAttribDefaultEXT(GLbitfield mask) { + if (mask & GL_CLIENT_PIXEL_STORE_BIT) { + glPixelStorei(GL_PACK_ALIGNMENT, 0); + glPixelStorei(GL_UNPACK_ALIGNMENT, 0); + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); + glPixelStorei(GL_UNPACK_SKIP_ROWS, 0); + glPixelStorei(GL_PACK_ROW_LENGTH, 0); + glPixelStorei(GL_PACK_SKIP_PIXELS, 0); + glPixelStorei(GL_PACK_SKIP_ROWS, 0); + } +#define enable_disable(pname, enabled) \ + if (enabled) glEnableClientState(pname); \ + else glDisableClientState(pname) + + if (mask & GL_CLIENT_VERTEX_ARRAY_BIT) { + int client = state.texture.client; + + enable_disable(GL_VERTEX_ARRAY, false); + enable_disable(GL_NORMAL_ARRAY, false); + enable_disable(GL_COLOR_ARRAY, false); + enable_disable(GL_SECONDARY_COLOR_ARRAY, false); + for (int a=0; a