GUIサンプル ウィンドウを開く

βテストにご参加いただきまことにありがとうございます。

ビルド50では、スクリプトからNXシステムに組み込まれているGUI=ImGuiを利用できるようになりました。
ImGuiの基本的な機能を利用できる関数を実装しています。

ImGuiは、イベント駆動で動作するWin32などのGUIと異なり、Direct3D、OpenGLなど3DAPIと親和性の高い、直接駆動が特徴です。

3D APIの描画シーケンスの1つとして、毎フレーム実行します。実行結果は関数の戻り値であらわされます。

ウィンドウを開く

最初のサンプルは、ウィンドウを生成するコードです。非常に簡単です。

Begin()とEnd()を実行するだけで、ウィンドウが生成されます。
Begin()とEnd()の間に、ウィンドウに表示するGUI部品を記述します。

毎フレーム実行するため、レイアウトスクリプトのinitイベントでSetEventFrame()を実行します。

frameイベントには、Begin()-End()とテスト用にウィンドウにテキストを表示するText()を記述します。

ImGuiで重要なことは、ウィンドウ、GUI部品を部品名で識別していることです。同じ名前の部品を使用すると入力できなくなります。
これを避けるため、タグを部品に設定します。タグをすべての部品で一意の名前にすることで、部品名の衝突を避けることができます。
(ImGuiを呼び出す前に内部でラベルとタグから部品名を生成しています。)

#LAYOUT
import vrmapi
def vrmevent(obj,ev,param):
    if ev == 'init':
        obj.SetEventFrame()
    elif ev == 'broadcast':
        dummy = 1
    elif ev == 'timer':
        dummy = 1
    elif ev == 'time':
        dummy = 1
    elif ev == 'after':
        dummy = 1
    elif ev == 'frame':
        vrmapi.ImGui().Begin("tag_w","Sample Window")
        vrmapi.ImGui().Text("テキスト表示サンプル")
        vrmapi.ImGui().End()
    elif ev == 'keydown':
        dummy = 1
実行結果