У меня есть спрайт размером 222x372 пикселей, и я рендеринг его в 3 различных масштабах (25%, 40% и 65%), чтобы проверить различные варианты выборки.
Если я использую GL_NEAREST
,текстура выглядит неровной, если не масштабировать до определенных соотношений.(как и ожидалось)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
Если я использую GL_LINEAR_MIPMAP_LINEAR
, то текстура выглядит размытой, когда она маленькая, и четкой, когда она большая.Если я использую другие комбинации mipmap, подобное происходит либо с размытым, пиксельным, либо с обоими.(как и ожидалось)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // Blurry
OR
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); // Pixelated
OR
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST); // Blurry
Если я использую GL_LINEAR
, то при большом размере текстура выглядит четкой, но, к моему удивлению, пикселированной и почти идентичной GL_NEAREST
при небольшом.
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // When small, pixelated?
См. Это изображение:
См. GL_LINEAR
в масштабе 25% - вы можете видеть сглаживание и пиксельные края.Я ожидал, что линейная интерполяция позволит плавно смешать эти края.
Является ли это предполагаемым поведением, и если да, то есть ли способ получить четкие спрайты, даже если они уменьшены до небольших количеств?Возможно, пользовательские уровни mipmap сгенерированы в Photoshop?