雑種のポメラニアン

フリープログラマーの日記とか人生観とか綴るよ

DelphiXE2体験版を使ってみた

事前情報からXE2の新機能は「FireMonkey」しか興味がないので
さっそくFireMonkeyの「helloworld3d」なるデモを見てみる。

テクスチャが貼ってある板がクルクル回っているだけ。
プログラムの動作自体はグラフィックアプリの入門に
ちょうどいい感じのアプリに見える。
だが!ソースコードを見て愕然とした・・・

いきなりDX9PS2BINという変な16進数のバイトコードの塊がコーディングされてる。
次はARBFP1というアセンブラっぽい文字コード
アセンブラだから改行しないといけないらしく
ご丁寧に全ての行の末尾に「#13」が付与されている。
3つ目の定数はGLES_GLSLFというGLSLっぽいコードだ。
多少見慣れたコードではあるが、やはり末尾の「#13」が気になる。

それらが

FShader := Context.CreatePixelShader(@DX9PS2BIN, ARBFP1, GLES_GLSLF);

でシェーダをクリエイトするのに使われている。
ちなみにバイトコードはWindows用。
アセンブラMacOSX用。ES_GLSLはiOS用となっている。
たかがシェーダーを作るためにここまでせねばならんのか!?

気を取り直して続きを見てみよう・・・
FormDestroyに

Context.DestroyVertexShader(FVertexShader);

VertexShaderはクリエイトされてないし、どこにも使われてない。

主処理はFormRenderなのだが
頂点を指定して、属性(?state)を指定して
テクスチャを貼り付けて、表示しているようだ

え〜〜〜!
こ・・・これがHelloWorldかい・・・???

アセンブラのGLSLとESGLSLを記述して
HLSLを書いて何かでコンパイルして
それをバイナリエディタか何かで開いて張り付けんの?

そんなの誰が作れるんだよ!ヽ(`Д´)ノプンプン