Вы не знаете, и у вас нет возможности узнать (хорошо, хорошо, я вроде соврал ... существует документация , которая сообщает вам эти детали для некоторого конкретного оборудования. Но в общем у вас нет возможности узнать, потому что вы не знаете заранее, на каком оборудовании будет работать ваша программа).
OpenGL хранит текстуры несколько по вашему запросу, нонаконец, он выбирает то, что поддерживает оборудование.Если это означает, что он преобразует ваши входные данные во что-то совершенно другое, он делает это молча.
Например, большинство реализаций преобразует RGB в RGBA, потому что это более удобно для доступа к памяти.То же самое относится и к 5-5-5 данным, конвертируемым в 8-8-8 и т. П.
Обычно, текстура с 8 битами в секунду в настоящее время занимает всего 1 байт на пиксель (поскольку почти каждая карта поддерживает это,и для программных реализаций это не имеет значения), хотя на это нельзя полагаться на 100%.Вам также не стоит беспокоиться, хотя ... он позаботится о том, чтобы все как-то работало.
Кстати, подобное может случиться и с текстурами не-степени-двух.Во всех современных версиях OpenGL это поддерживается (начиная с 2.0, если я правильно помню).Хотя, по крайней мере, теоретически, некоторые старые карты могут не поддерживать эту функцию.
В этом случае OpenGL просто тихо сделает текстуру следующего размера с большей степенью двойки и использует только ее часть (не сообщая вам!).