From d89997a2776672bb97faabbdd87290957e291801 Mon Sep 17 00:00:00 2001 From: Luke Benstead Date: Mon, 4 Mar 2019 20:41:33 +0000 Subject: [PATCH] Simplify the element drawing --- GL/draw.c | 44 ++++++++-------------------------------- containers/named_array.c | 4 ---- 2 files changed, 8 insertions(+), 40 deletions(-) diff --git a/GL/draw.c b/GL/draw.c index 018656b..cf54a27 100644 --- a/GL/draw.c +++ b/GL/draw.c @@ -460,6 +460,8 @@ static inline PolyBuildFunc _calcBuildFunc(const GLenum type) { return &_buildStrip; } +static inline void nullFloatParseFunc(GLfloat* out, const GLubyte* in) {} + static inline void genElementsCommon( ClipVertex* output, const GLubyte* iptr, GLuint istride, GLenum type, @@ -473,9 +475,9 @@ static inline void genElementsCommon( ) { const FloatParseFunc vertexFunc = _calcVertexParseFunc(); const ByteParseFunc diffuseFunc = _calcDiffuseParseFunc(); - const FloatParseFunc uvFunc = _calcUVParseFunc(); - const FloatParseFunc stFunc = _calcSTParseFunc(); - const FloatParseFunc normalFunc = _calcNormalParseFunc(); + const FloatParseFunc uvFunc = (doTexture) ? _calcUVParseFunc() : &nullFloatParseFunc; + const FloatParseFunc stFunc = (doMultitexture) ? _calcSTParseFunc() : &nullFloatParseFunc; + const FloatParseFunc normalFunc = (doLighting) ? _calcNormalParseFunc() : &nullFloatParseFunc; const IndexParseFunc indexFunc = _calcParseIndexFunc(type); @@ -487,40 +489,10 @@ static inline void genElementsCommon( GLuint j = indexFunc(idx); vertex->flags = PVR_CMD_VERTEX; vertexFunc(vertex->xyz, vptr + (j * vstride)); - } - - idx = iptr; - vertex = output; - for(i = 0; i < count; ++i, idx += istride, ++vertex) { - GLuint j = indexFunc(idx); diffuseFunc(vertex->bgra, cptr + (j * cstride)); - } - - if(doTexture) { - idx = iptr; - vertex = output; - for(i = 0; i < count; ++i, idx += istride, ++vertex) { - GLuint j = indexFunc(idx); - uvFunc(vertex->uv, uvptr + (j * uvstride)); - } - } - - if(doMultitexture) { - idx = iptr; - vertex = output; - for(i = 0; i < count; ++i, idx += istride, ++vertex) { - GLuint j = indexFunc(idx); - stFunc(vertex->st, stptr + (j * ststride)); - } - } - - if(doLighting) { - idx = iptr; - vertex = output; - for(i = 0; i < count; ++i, idx += istride, ++vertex) { - GLuint j = indexFunc(idx); - normalFunc(vertex->nxyz, nptr + (j * nstride)); - } + uvFunc(vertex->uv, uvptr + (j * uvstride)); + stFunc(vertex->st, stptr + (j * ststride)); + normalFunc(vertex->nxyz, nptr + (j * nstride)); } } diff --git a/containers/named_array.c b/containers/named_array.c index 0194128..c028e96 100644 --- a/containers/named_array.c +++ b/containers/named_array.c @@ -81,10 +81,6 @@ void named_array_release(NamedArray* array, unsigned int new_id) { } void* named_array_get(NamedArray* array, unsigned int id) { - if(id == 0) { - return NULL; - } - if(!named_array_used(array, id)) { return NULL; }