Выбор уровня OpenGL ES2.0 Mipmap, трилинейная фильтрация и точность
Вопрос: Как вы рассчитываете, каким должен быть результат трилинейной фильтрации?
Я работаю над тем, чтобы заставить работать видеодрайвер, и сталкиваюсь с проблемой, когда я не прохожу тест, который рассматривает уровни mipmap. Создается текстура 32x32, и уровни mipmap заполняются вручную, как показано ниже.
texsize_____mip lvl_____R____G_____B
32__________0________ff____00____00
16__________1________00____ff____00
8___________2________00____00____ff
4___________3________ff_____ff____00
2___________4________ff_____00____ff
1___________5________00_____ff____ff
Теперь я передаю мой тест при использовании GL_NEAREST_MIPMAP_NEAREST/GL_LINEAR_MIPMAP_NEAREST, но когда я использую GL_NEAREST_MIPMAP_LINEAR/GL_LINEAR_MIPMAP_LINEAR (что из того, что я могу собрать как фильтрование использования трилинейного) я не тест, который сравнивает свои результаты с ожидаемым из данных выше +/- 8 плюса дополнительная небольшая ошибка. Когда я рисую, я рисую, используя размер текстуры 32/16/8/4/2/1, я получаю
texsize_____mip lvl_____R____G_____B
32__________0________ff____00____00
16__________1________01____fe____00
8___________2________00____00____ff
4___________3________f9_____f9____06
2___________4________ff_____0c____f3
1___________5________00_____ff____ff
Я терплю неудачу на размер 2 текса, так как ошибка +/- 12. Также кажется, что я могу пропустить что-нибудь, так как я ожидаю, что все уровни не пройдут или ни один из уровней не выйдет, у любого есть понимание если это нормально для разных уровней фильтроваться по-разному?
Мой вопрос состоит в том, что результаты и входные данные выше, что можно ожидать от результатов? Из того, что я понимаю, если я выберу размер текстуры, который соответствует данному уровню, он должен интерполироваться между этим уровнем (самым низким) и уровнем над ним (самым высоким). Есть ли в игре вес, который мне не хватает?