Ignore:
Timestamp:
Jul 31, 2013, 4:49:42 PM (7 years ago)
Author:
benlitz
Message:

gpu: fixed vbo attribute binding when one of the attribute on the buffer does not exist in the shader

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/gpu/vertexbuffer.cpp

    r2816 r2827  
    357357
    358358#   if !defined __CELLOS_LV2__
    359         glEnableVertexAttribArray((GLint)reg);
     359                if (reg != 0xffffffff)
     360                glEnableVertexAttribArray((GLint)reg);
    360361#   else
    361362        switch (usage)
     
    439440
    440441#   if !defined __CELLOS_LV2__
    441         if (tlut[type_index].type == GL_FLOAT
    442              || tlut[type_index].type == GL_DOUBLE
    443              || tlut[type_index].type == GL_BYTE
    444              || tlut[type_index].type == GL_UNSIGNED_BYTE
     442                if (reg != 0xffffffff)
     443                {
     444                        if (tlut[type_index].type == GL_FLOAT
     445                                 || tlut[type_index].type == GL_DOUBLE
     446                                 || tlut[type_index].type == GL_BYTE
     447                                 || tlut[type_index].type == GL_UNSIGNED_BYTE
    445448#       if defined USE_GLEW && !defined __APPLE__
    446             /* If this is not available, don't use it */
    447             || !glVertexAttribIPointer
     449                                /* If this is not available, don't use it */
     450                                || !glVertexAttribIPointer
    448451#       endif
    449             || false)
    450         {
    451             /* Normalize unsigned bytes by default, because it's usually
    452             * some color information. */
    453             GLboolean normalize = (tlut[type_index].type == GL_UNSIGNED_BYTE)
    454                                || (tlut[type_index].type == GL_BYTE);
    455             glVertexAttribPointer((GLint)reg, tlut[type_index].size,
    456                                   tlut[type_index].type, normalize,
    457                                   stride, (GLvoid const *)(uintptr_t)offset);
    458         }
     452                                || false)
     453                        {
     454                                /* Normalize unsigned bytes by default, because it's usually
     455                                * some color information. */
     456                                GLboolean normalize = (tlut[type_index].type == GL_UNSIGNED_BYTE)
     457                                                                   || (tlut[type_index].type == GL_BYTE);
     458                                glVertexAttribPointer((GLint)reg, tlut[type_index].size,
     459                                                                          tlut[type_index].type, normalize,
     460                                                                          stride, (GLvoid const *)(uintptr_t)offset);
     461                        }
    459462#       if defined GL_VERSION_3_0
    460         else
    461         {
    462             glVertexAttribIPointer((GLint)reg, tlut[type_index].size,
    463                                    tlut[type_index].type,
    464                                    stride, (GLvoid const *)(uintptr_t)offset);
    465         }
     463                        else
     464                        {
     465                                glVertexAttribIPointer((GLint)reg, tlut[type_index].size,
     466                                                                           tlut[type_index].type,
     467                                                                           stride, (GLvoid const *)(uintptr_t)offset);
     468                        }
    466469#       endif
     470                }
    467471#   else
    468472        switch (usage)
Note: See TracChangeset for help on using the changeset viewer.