Как использовать "Эффекты" в моногаме?
Я изучал, как использовать моногаму. Пока что я не могу понять, что это за эффекты. Я просто не могу найти полные учебники о том, как их создавать или использовать.
Я знаю, что они хранятся в файлах.fx и написаны на каком-то языке.
Не могли бы вы дать мне несколько указаний. Где я могу скачать эффекты? Что я должен использовать, чтобы сделать их? Могу ли я использовать эти эффекты на других языках? Что я должен Google, чтобы узнать больше?
1 ответ
Вау, какой широкий вопрос... Вы должны начать с поиска в Google.
Затем, прочитайте некоторые учебники, я рекомендую один от RB Whitaker.
Затем, используя некоторые знания C# или C++ или C или Java (HLSL похож на них), посмотрите, как писать эффекты для MonoGame. Попробуйте поискать примеры. Кроме того, просмотр исходного кода MonoGame и BasicEffect не является плохой идеей, если вы застряли на чем-то. Кроме того, большинство XNA-приложений все еще применимо к MonoGame, поэтому исследование XNA вместе с MonoGame - отличная идея.
Что касается того, как использовать его в приложении, которое использует MonoGame, используйте это в функции LoadContent:
var effect = Content.Load<Effect>("EffectNameHere");
Теперь, чтобы ответить на ваши вопросы конкретно:
Пока что я не могу понять, что это за эффекты.
Эффекты - это просто оболочка MonoGame/XNA для шейдеров. Шейдеры - это, по сути, небольшая программа, работающая на GPU. Шейдеры могут иметь разные стадии в зависимости от того, на какой API вы нацеливаетесь с помощью языка шейдинга (glsl для OpenGL, hlsl для DirectX, metal для, well Metal и т. Д.). Обратите внимание, что вы можете нацеливать hlsl только на MonoGame, но не на glsl. Это связано с тем, что когда MonoGame пытается использовать код в контексте OpenGL, байт-код шейдера напрямую преобразуется в байт-код glsl. Посмотрите на этой странице для этапов HLSL.
Где я могу скачать эффекты?
Вы обычно не делаете, и пишите их самостоятельно. В любом случае, найти шейдеры hlsl сложнее, чем найти шейдеры glsl (OpenGL - универсальная вещь...), которую затем можно перенести в hlsl.
Что я должен использовать, чтобы сделать их?
Это действительно ваш выбор, будь то блокнот, VSCode, notepad++ или любой другой. Я лично рекомендую использовать редактор hlsl, который поставляется с Visual Studio (Примечание: вам нужно установить пакет, чтобы получить инструменты для графики и шейдеров). Тогда это просто метод проб и ошибок, пока вы не получите его для компиляции или пока он не заработает.
Могу ли я использовать эти эффекты на других языках?
Эффекты в основном предназначены только для MonoGame/XNA, но тот же код hlsl может использоваться любым языком, который имеет доступ к оболочке DirectX / нативной реализации (IE C++). API DirectX может затем скомпилировать его аналогичным образом.
Еще один совет: если вы хотите использовать не только стадию шейдера Pixel и стадию шейдера Vertex с MonoGame, то вам не повезло. Вам придется реализовать это или просто подождать, пока не появится релиз, который поддерживает
Изменить: я также забыл дать вам самую важную ссылку из всех них! Сообщество MonoGame