Сколько мипмапов у текстуры в OpenGL

Неважно, что я тот, кто создал текстуру в первую очередь, и я должен прекрасно знать, сколько мипмапов я загрузил/сгенерировал для нее. Я делаю это для модульного теста. Кажется, нет параметра 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-карт я заполнил текстуру?

18
задан Ted Middleton 5 March 2012 в 19:07
поделиться