From my understanding, OpenGL casts all vertex attribute data to 32-bit float before it gets used in the vertex shader. But glVertexAttribPointer also takes data types GL_BYTE and GL_UNSIGNED_BYTE (8 bits). If I buffer and send an array of unsigned bytes to the gpu and use
glVertexAttribPointer(0, 3, GL_UNSIGNED_BYTE, GL_FALSE, 3 * sizeof(unsigned char), (void*)0);
does this, send-to/store-on the gpu as an array of bytes and then cast them to floats as the shader reads them? This would quadruple my update speed and quarter my memory space. Or does this send/store them as floats or do something else? Is there a way to read VBO as ints or bytes in shader? Does glVertexAttribIPointer do anything different?
If your wondering why, my game uses 256x256x256 chunks so...