When you bind a texture to OpenGL (which LoadImage/DrawImage do for you) it's automatically converted to the same colour depth as the OpenGL context you created (using Graphics or bglCreateContext).
"Binding" a texture means copying it to a format that OpenGL can use. Your original TImage/TPixmap might be 32-bit, but the bound copy that is actually used by OpenGL might be 24-bit or 16-bit or 15-bit or 8-bit.
In other words, it's not any slower using a 32-bit .PNG than it is using a 16-bit image. The only problem is that 32-bit images take up more disk space.
"Binding" a texture means copying it to a format that OpenGL can use. Your original TImage/TPixmap might be 32-bit, but the bound copy that is actually used by OpenGL might be 24-bit or 16-bit or 15-bit or 8-bit.
In other words, it's not any slower using a 32-bit .PNG than it is using a 16-bit image. The only problem is that 32-bit images take up more disk space.