diff --git a/GL/draw.c b/GL/draw.c index 85dd8e5..055c6de 100644 --- a/GL/draw.c +++ b/GL/draw.c @@ -771,6 +771,44 @@ static void generate(SubmissionTarget* target, const GLenum mode, const GLsizei const GLsizei istride = byte_size(type); if(!indices) { + if( ((ENABLED_VERTEX_ATTRIBUTES & DIFFUSE_ENABLED_FLAG) == DIFFUSE_ENABLED_FLAG ) && (DIFFUSE_POINTER.type == GL_UNSIGNED_BYTE ) && DIFFUSE_POINTER.stride == 32){ + + profiler_push(__func__); + + Vertex* start = _glSubmissionTargetStart(target); + Vertex* it = start; + + sq_cpy(start, VERTEX_POINTER.ptr - ( sizeof(unsigned int) * 1 ), count * sizeof(Vertex) ); + + ITERATE(count) { + it->flags = PVR_CMD_VERTEX; + ++it; + } + + profiler_checkpoint("flags"); + + // Drawing arrays + switch(mode) { + case GL_TRIANGLES: + genTriangles(start, count); + break; + case GL_QUADS: + genQuads(start, count); + break; + case GL_TRIANGLE_FAN: + genTriangleFan(start, count); + break; + case GL_TRIANGLE_STRIP: + genTriangleStrip(_glSubmissionTargetStart(target), count); + break; + default: + assert(0 && "Not Implemented"); + } + + profiler_checkpoint("quads"); + profiler_pop(); + + }else { profiler_push(__func__); Vertex* start = _glSubmissionTargetStart(target); @@ -823,6 +861,7 @@ static void generate(SubmissionTarget* target, const GLenum mode, const GLsizei profiler_checkpoint("quads"); profiler_pop(); + } } else { const IndexParseFunc indexFunc = _calcParseIndexFunc(type); GLuint j; diff --git a/GL/texture.c b/GL/texture.c index 6733f8e..8941b7a 100644 --- a/GL/texture.c +++ b/GL/texture.c @@ -314,7 +314,7 @@ static void _glInitializeTextureObject(TextureObject* txr, unsigned int id) { txr->width = txr->height = 0; txr->mipmap = 0; txr->uv_clamp = 0; - txr->env = PVR_TXRENV_MODULATEALPHA; + txr->env = PVR_TXRENV_MODULATE; txr->data = NULL; txr->mipmapCount = 0; txr->minFilter = GL_NEAREST; @@ -430,7 +430,7 @@ void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param) { switch(param) { case GL_MODULATE: - active->env = PVR_TXRENV_MODULATEALPHA; + active->env = PVR_TXRENV_MODULATE; break; case GL_DECAL: active->env = PVR_TXRENV_DECAL; diff --git a/Makefile b/Makefile index 4d94e0e..b507865 100644 --- a/Makefile +++ b/Makefile @@ -25,6 +25,7 @@ export OBJEXTRA := $(LIB_DIR)/libGLdc.a default: build link link: + @-rm $(TARGET) $(KOS_AR) rcs $(TARGET) $(OBJS) build: $(OBJS) link