[/QUOTE]
The second argument (size) has a value of 1, which says that each array element has a single component. So TestVector.x will have a value from the iValueSize array, while the y, z and w components will be 0.0, 0.0, and 1.0 respectively.
If you have a single vertex with a vec4 attribute (rather than 4 vertices with a float attribute), set size to 4.
precision mediump float;
in mediump vec4 TestVector; // have bound loaction 0
This does absolutely nothing. At least, in terms of the precision. In desktop GLSL, all of the precision qualifiers are completely ignored. Theyโre only there for OpenGL ES 2.0 compatibility; they mean nothing at all.
All values passed to an attribute via glVertexAttribPointer will be converted to 32-bit floats when they reach the vertex shader. This is just as true if you pass integer values via glVertexAttribPointer as if you pass half-floats (if you want to feed an ivec4, you use glVertexAttribIPointer). All of these are just smaller ways of packing floating-point data. Your shader does not have to know or care how the data was packed.