Как передать в вершинный шейдер массив int?
Тестирую работу шейдера OpenGL ES 2.0 на разных устройствах, в том числе старых. Столкнулся с проблемой на Qualcomm Adreno 320 в планшете LG G PAD 8.3. В шейдер через uniform передаю массив матриц трансформации и для каждой вершины указываю индекс матрицы, которую нужно использовать. Массив индексов, естественно, передаю как массив float (attribute не может быть int), и приведение int(aTransfIndexes) всегда оказывается равно 0.
"#version 100\n"
"uniform highp mat4 uTransform[gl_MaxVertexUniformVectors/4];\n"
"attribute highp float aTransfIndexes;\n"
"attribute highp vec4 aVrtxCoords;\n"
"void main()\n"
"{ gl_Position = aVrtxCoords * uTransform[ int(aTransfIndexes) ];\n"
"}"
Более того, в следующем примере idx также всегда равняется 0, что бы к нему не присваивали.
"#version 100\n"
"uniform highp mat4 uTransform[gl_MaxVertexUniformVectors/4];\n"
"attribute highp vec4 aVrtxCoords;\n"
"void main()\n"
"{ highp int idx = 1; \n"
" gl_Position = aVrtxCoords * uTransform[ idx ];\n"
"}"
Есть ли у кого идеи, как по другому можно передать в вершинный шейдер массив int или как преобразовать в нём float в int, чтобы значение не терялось?