Vbo array attribute error in Windows

I’m building an app in Windows, that compiles and runs fine on macOS, but I’m encountering some Vbo issues. An array attribute which is float[ 6 ] is expected to have 0 size for some reason, so it fails to work. This is the warning message:

|warning| cinder::gl::VboMesh::buildVao[500] Batch GlslProg expected an Attrib of USER_DEFINED, with name iColorMask[0] but vertex data doesn't provide it.

C++ setup:

    std::vector< float > instanceColorMasks;
    ...
    
    mVboInstanceColorMaskData = gl::Vbo::create( GL_ARRAY_BUFFER,
            instanceColorMasks.size() * sizeof( float ), instanceColorMasks.data(),
            GL_DYNAMIC_DRAW );
    geom::BufferLayout instanceColorMaskDataLayout;
    instanceColorMaskDataLayout.append( geom::Attrib::CUSTOM_1, 6, sizeof( float ) * 6, 0, 1 );

    mesh->appendVbo( instanceColorMaskDataLayout, mVboInstanceColorMaskData );

    ...

    mBatch = gl::Batch::create( mesh, mGlsl,
            { { geom::Attrib::CUSTOM_0, "iTransform" },
              { geom::Attrib::CUSTOM_1, "iColorMask" } } );

and in the shader:

         in float iColorMask[ 6 ];

Do you have any idea why this would happen? Am I missing something?
Any suggestions would be greatly appreciated.

-Gabor

Changing the attribute definition as below in the batch creation seems to work. It was required in linux and windows.

  { geom::Attrib::CUSTOM_1, "iColorMask[0]" }
1 Like