Неважно, что я тот, кто создал текстуру в первую очередь, и я должен прекрасно знать, сколько мипмапов я загрузил/сгенерировал для нее. Я делаю это для модульного теста. Кажется, нет параметра glGetTexParameter
, чтобы узнать это. Самое близкое, что я нашел, выглядит примерно так:
int max_level;
glGetTexParameter( GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, &max_level );
int max_mipmap = -1;
for ( int i = 0; i < max_level; ++i )
{
int width;
glGetTexLevelParameter( GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &width );
if ( 0 == width )
{
max_mipmap = i-1;
break;
}
)
Во всяком случае, glGetTexLevelParameter()
вернет 0 ширины для несуществующего MIP-карты, если я использую графический процессор NVidia, но с Mesa он возвращает GL_INVALID_VALUE
, что наводит меня на мысль, что это очень неправильный поступок.
Как узнать, какими уровнями MIP-карт я заполнил текстуру?