MonoGame 3.8.0以降でfxファイルをコンパイルする

提供: MonoBook
ナビゲーションに移動 検索に移動

2020年5月に発表されたMonoGame 3.8.0 (プレビュー版)から Windowsだけでなく、MacOSLinuxでもプログラマブルシェーダーコンパイルができるようになった。

MacLinuxでは内部的にwineを用いているので若干の環境構築が必要となる。

Macでの環境構築[編集 | ソースを編集]

homebrewを使った手順。

xquartzをインストールする[編集 | ソースを編集]

xquartzインストールする。

brew install --cask xquartz

wineをインストールする[編集 | ソースを編集]

wineインストールする。 wineパッケージはstable(安定版),devel(開発版),staging(突撃版)の3種類ある。

  • wine-stable = macOS Mojave 10.14まで、wine64を含まない
  • wine-devel, wine-staging = macOS Catalina 10.15以降にも対応、wine64を含む

このうちMonoGame 3.8で必須となる「wine64」はwine-develとwine-stagingにしか含まれていない。今回は無難に「wine-devel」を選ぶ。

brew tap homebrew/cask-versions
brew install --cask --no-quarantine wine-devel

p7zipをインストールする[編集 | ソースを編集]

p7zipインストールする。 mgfxcコンパイラは7z形式で配布されているためだ。

 brew install p7zip

mgfxcをインストールする[編集 | ソースを編集]

mgfxcコンパイラのダウンロードインストールを全自動でやってくれるスクリプトを実行する。mgfxcコンパイラなどは「$HOME/.winemonogame」ディレクトリに格納される。

curl -O https://raw.githubusercontent.com/MonoGame/MonoGame/develop/Tools/MonoGame.Effect.Compiler/mgfxc_wine_setup.sh
chmod +x mgfxc_wine_setup.sh
./mgfxc_wine_setup.sh

環境変数を設定する[編集 | ソースを編集]

上記のスクリプトで環境変数が追加される。

 #bashの場合
 echo 'export PATH=$PATH:"/Applications/Wine Stable.app/Contents/Resources/wine/bin/"' >> ~/.profile 
 echo 'export MGFXC_WINE_PATH="$HOME/.winemonogame"' >> ~/.profile
 #zshの場合
 echo 'export PATH=$PATH:"/Applications/Wine Stable.app/Contents/Resources/wine/bin/"' >> ~/.zprofile 
 echo 'export MGFXC_WINE_PATH="$HOME/.winemonogame"' >> ~/.zprofile

ただし.profileや.zprofileはターミナルからVisual Studio for Macを起動した場合のみ適用され、macOSのDockまたはLaunchPadから起動した場合は適用されない。ターミナルから起動する奇特な人はあまりいないと思われる。

そこでlaunchdを使ってログイン時に環境変数を設定する。LaunchAgentsディレクトリにplistファイルを置けばログイン時に自動実行される。拡張子がplistならファイル名は何でもいいので今回はenvironment.plistとした。

mkdir ~/Library/LaunchAgents/
vi ~/Library/LaunchAgents/environment.plist

中身はこんな感じ。

<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “https://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=“1.0”>
    <dict>
        <key>Label</key>
        <string>my.startup</string>

        <key>ProgramArguments</key>
        <array>
            <string>bash</string>
            <string>-c</string>
            <string>
launchctl setenv MGFXC_WINE_PATH "$HOME/.winemonogame"
            </string>
        </array>
        
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>


一通り終わったらmacOSからログアウトする。 再起動でもいいぞ。

関連項目[編集 | ソースを編集]

fxファイルのコンパイル