[WPF] Инструмнты по работе с 2D/3D объектами для чайника
От: Albeoris  
Дата: 08.09.16 22:22
Оценка:
Доброго времени суток.

Дано:

Существуют ли готовые инструменты для подобной ситуации?

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

1) Люди загружают текстуру, рисуют текстуру, отпускают текстуру. Никто не предполагает, что чайник будет загружать её асинхронно в фоновом потоке при помощи одного устройства, после чего шарить контекст между ним (не имеющими визуального представления) и несколькими другими.
2) Люди не предполагают, что чайник будет загружать текстуру не в кошерном TGA/PNG32 формате, а в каком-нибудь R5G5B5 (да, G5, а не G6), DXT3 (особенно весело на OpenTK), DXT5 или PNG.9 Они свято верят, что чайник будет использовать DirectX 9, хотя на дворе конец 2016 года.
3) Люди ни словом не обмолвятся о том, что первый в жизни шейдер чайника, который оный чудом собрал по крупицам и как-то сумел инициализировать будет работать только у чайника, а у остальных, в лучшем случае не отработает, а в худшем — сдохнет в процессе компиляции.
4) Люди не предупредят чайника о том, что для работы с B8G8R8A8 нужно выставить флаг BGRA_SUPPORT, а сам чайник понятия не имеет в каком формате у него цвета — BGRA или ARGB и как называется DXT3 в этой библиотеке.
5) Люди не научат чайника, как жить в мире, где (0,0) это не координаты верхнего-левого угла экрана, а контролы не имеют скроллбаров.
6) Люди знают, что любой забытый флаг, опущенная проверка или неверное преобразование закончатся для чайника фатальной ошибкой с номером, по которому нельзя найти абсолютно ничего, что касается конкретно его проблемы.
7) Люди сами не понимают, как работает их код и почему у них всё нормально, а у чайника текстура отображается только наполовину, но если её записать в файл перед отображением — полностью.

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

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

Альтернатива — пусть сложное и требующее вдумчивого изучение, решение, но с чёткой причинно-следственной связью, удобными механизмами отладки, вразумительным мануалом и без тонн кода для обратной совместимости со всем чем только можно.

Например, можете поделиться своими мыслями о Вулкане в целом и VulkanSharp в частности?
"Хаос всегда побеждает порядок, поскольку лучше организован." (с) Терри Пратчетт
c# .net opentk sharpdx directx opengl vulcan 3d 2d wpf
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.