Как использовать "Эффекты" в моногаме?

Я изучал, как использовать моногаму. Пока что я не могу понять, что это за эффекты. Я просто не могу найти полные учебники о том, как их создавать или использовать.

Я знаю, что они хранятся в файлах.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

Другие вопросы по тегам