Изменить формат Content.Load<Texture2D>

Мы разрабатываем некоторые игры для XNA, которые, благодаря Mono+MonoGame+MonoForAndroid, будут готовы на всех трех основных мобильных платформах. Проблема в том, что, поскольку нам нужно использовать как можно меньше памяти, чтобы избежать сбоев устройств, мы решили использовать формат текстур Bgra5551.

К сожалению, менеджер контента использует формат цвета для текстуры (A8R8G8B8) при вызове метода Load.

Мой вопрос: могу ли я как-то получить текстуру 5551, используя Content.Load?

У меня уже есть код, который преобразует 32-битную текстуру в 16-битную текстуру. Я думал о способе переопределить метод Load, но мне не удалось ничего найти.

Как я мог?

большое спасибо вам,

-никола марчесан

1 ответ

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

[ContentProcessor(DisplayName = "MyTextureProcessor")]
public class TextureContentProcessor : TextureProcessor
{
    public override TextureContent Process(TextureContent input, ContentProcessorContext context)
   {          
        TextureContent data = base.Process(input, context);

        // Convert data

        return data;
   }
}
Другие вопросы по тегам