2013-07-02 2 views
0

Я могу генерировать mipmaps с помощью glGenerateMipMap, и я использую min_filter gl_linear_mipmap_linear.Любой, кто использует glGenerateMipmap в OpenGL ES 2.0 на iOS, получает размытые непригодные текстуры?

Без mipmaps текстура выглядит нормально при отображении такого же размера, что и фактический размер текстуры (512x512) (как и ожидалось), но показывает эффекты сглаживания при уменьшении масштаба (как и ожидалось).

С mipmaps текстура отлично выглядит при отображении такого же размера, что и фактический размер текстуры (512x512) (как и ожидалось) и не показывает эффекты сглаживания при уменьшении (как и ожидалось). ОДНАКО, я получаю уродливые размытые текстуры, которые делают версию mipmap непригодной для использования до такой степени, что я могу смириться с псевдонимом.

Любая идея, что я могу делать неправильно здесь? Я не знаю, сгенерированы ли сгенерированные mipmaps или что слишком мал mipmap, когда он выбирает более крупный. Кто-нибудь действительно получил хорошие результаты, используя glGenerateMipMap на OpenGL ES 2.0 на iOS?

+0

пожалуйста, предоставить некоторые подробности, вы генерировать все уровни или только некоторые из них, вы касаетесь значений TEXTURE_BASE_LEVEL и TEXTURE_MAX_LEVEL? – Vasaka

+0

Я не делаю таких изменений, я просто использую glGenerateMipMap и применяю фильтры. –

ответ

1

Попробуйте установить подсказку для создания хороших мип-карт, это может повлиять на фильтр, который используется для их создания, но не гарантирует, что эффект зависит от реализации.

glHint(GL_GENERATE_MIPMAP_HINT, GL_NICEST) 

Вы также можете повлиять на возникающую размытость, установив смещение lod в вашем коде выборки текстуры.

Для получения наилучших результатов вы можете использовать анизотропию, если это расширение поддерживается. Выполнить это наряду с установкой Увеличения и Минимизацией фильтры:

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 2.0); 

вместо 2.0 вы можете получить максимальный уровень анизотропии и установить что-нибудь сильфон ней:

glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &maxAniso); 
+0

Спасибо. В моем случае подсказка не имеет никакого значения. –

+0

@ SkillM2 вам нужна анизотропная фильтрация, обновленный ответ. – Vasaka

+0

Я ценю вашу помощь, к сожалению, это не помогает, текстура все еще выглядит размытой. Вы использовали glGenerateMipmap с OpenGL ES 2.0 на iOS и достигли хороших результатов? –

Смежные вопросы