Четко масштабировать Bitmapfont с помощью openGL (интерполяция)?

Я загружаю растровый шрифт (в виде изображения png) в свое приложение openGL для рендеринга символов оттуда с фиксированным размером. Это работает. Но: если я хочу масштабировать некоторые глифы до меньшего размера, это выглядит не очень хорошо. Есть ли способ - без использования предварительно сгенерированных мипмапов (у меня большая куча из нескольких символов и нужны плавные размеры) масштабировать это красивее? Какой-то способ интерполяции или что-то в этом роде?

На данный момент я использую что-то вроде этого (C/C++ в Mac OS X):

glPopMatrix();
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBindTexture(GL_TEXTURE_2D, texture->getID());
glScalef(0.7f, 0.7f, 0); //scale here a size

{draw vertexes & set texcoords}

glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glPushMatrix();

Любое предложение?


person Constantin    schedule 09.01.2011    source источник
comment
Пункт 17.020 в этом разделе часто задаваемых вопросов: opengl.org/resources/faq/technical/fonts. htm   -  person Hans Passant    schedule 09.01.2011
comment
Речь идет о шрифтах TrueType - я говорю о шрифтах Bitmap. Я не собираюсь использовать шрифты TrueType по разным причинам (например, лицензирование шрифтов).   -  person Constantin    schedule 09.01.2011


Ответы (1)


Вы пробовали использовать линейную фильтрацию на своих текстурах?:

glTexParameteri(GL_TEXTURE_2D, GL_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_MAG_FILTER, GL_LINEAR);

Это после привязки текстур.

person Dr. Snoopy    schedule 09.01.2011
comment
О, да - спасибо. Это было именно то, что я искал. - person Constantin; 09.01.2011
comment
BTW — Game Programming Gems, часть 6 содержит статью о том, как добиться качественного масштабирования знаков (а также глифов). Простой способ получить гораздо лучшие результаты, чем при обычной линейной интерполяции, которая приведет к размытию границ. - person Kos; 10.01.2011