Xamarin IOS Opentk — BlendFunc с прозрачными текстурами

#xamarin.ios #transparency #opentk #glblendfunc

#xamarin.ios #прозрачность #opentk #glblendfunc

Вопрос:

Я пытаюсь отобразить некоторые текстуры меток с прозрачным фоном, используя OpenTK в Xamarin. Сначала казалось, что метки отображаются правильно (см. Рисунок 1), но при повороте вида фон некоторых меток больше не прозрачен (см. Рисунок 2).

Включенный BlendFunc — это GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha).

Мой вопрос в том, как я могу всегда иметь прозрачность ярлыков, несмотря на их положение? Кстати, тот же код и шейдер могут корректно работать на устройствах Android. Ярлыки отображаются нормально

Метки перекрывают друг друга

Ответ №1:

Ах да, старая добрая проблема прозрачности. К сожалению, это тот, который графический программист должен решить самостоятельно.

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

Для 3D-игры, над которой я работаю, я решил реализовать независимый от порядка метод прозрачности, называемый WBOIT Моргана Макгуайра, который довольно прост в реализации и дает относительно хорошие результаты.

Комментарии:

1. Я не уверен, что 50-100 меток считаются «немногочисленными», но пока, я думаю, мне нужно отсортировать их по z-глубине перед рендерингом. Вашу ссылку также стоит проверить. Большое вам спасибо.

2. Пожалуйста, z-сортировка 50-100 меток должна быть в порядке