HSP3プログラミング入門講座
powered by Let's HSP!
擬似ワイヤーフレームレンダリング d3moduleモジュール
S.Programs NETのsprocketさんが製作されたHSP向けモジュール『d3module』。 擬似的な3D(ワイヤーフレーム)レンダリング機能をサポートしてます。このモジュールは無料のスクリプト言語システム「HSP」(Hot Soup Processor)のバージョン3.1から 標準で同封されてます。モジュール内の描画処理は、HSPの標準命令(GDI)だけで済ましてるので、動作パフォーマンス面はちょっと難あり。(その一方で、HSPLet+インターネットブラウザでの動作が実現)
2003年から毎年開催されてるHSPプログラムコンテストの2005年版にて、モジュール本体とこれを利用したクールなデモプログラム(メガデモ)が最優秀賞を受賞してます。
↓ は「d3module」モジュールを利用したsprocketさん製作のtechdemoプログラム。(約6分の動画、音楽なし)
d3timer関数 & d3getfps関数
「d3module」がサポートしている関数です。
- d3timer関数 ... Windowsを起動してから経過した時間(ミリ秒)の取得。
- d3getfps関数 ... フレームレート「fps」(frame per second)の表示。1フレームを描画する度に1回呼ぶ。
この2つは他でも有用な処理でしょう。ただ、この関数のためだけにモジュール本体「d3m.hsp」をインクルードすると、コンパイル時に メインとなる描画処理部分のモジュールデータも含まれてしまう(実行ファイルがその分大きくなる)ため、ちょっと無駄です。そこで、 この処理だけ、モジュールから切り出してみましょう。
d3timer関数は、システムに含まれるwinmm.dllの「timeGetTime関数」を モジュール内で単純に呼び出してるだけです。関数宣言が含まれてる定義ファイル「winmm.as」をインクルードすれば利用できます。 ただ、関数形式ではなく命令形式になるので、結果がシステム変数statに返ることになります。
// d3timer関数に相当するコード #include "winmm.as" timeGetTime mes stat
次に、d3getfps関数は上のd3timer関数、つまりはWin32 API関数の timeGetTime関数の利用に加えて若干の演算処理を含んだものです。そこの部分をちょっと修整しておきます。
// d3getfps関数に相当するコード #include "winmm.as" #module #defcfunc d3getfps // 修整部分 timeGetTime a = stat / 200 fpss(a&31)++ ; フレームカウント if bktp ! a { bktp = a cfps = 0 ; 過去 1000ms 分のカウントを集計 repeat 5, 1 cfps += fpss((a-cnt)&31) loop ; 先 4000ms 分のカウントをリセット repeat 20, 1 fpss((a+cnt)&31) = 0 loop } return cfps #global mes d3getfps()
もしfps取得まわりを別ファイルにしたいなら、「#module〜#global」の部分をコードを切り取って別ファイル名で 保存しておきます(ここでは「d3getfps.as」というファイル名)。必ず「winmm.as」をインクルードした後に、この モジュールファイルをインクルードするようにします。
// d3getfps関数に相当するコードをモジュールファイルで #include "winmm.as" #include "d3getfps.as" mes d3getfps()
キーワード de HSP
- 無料プログラミング
- HSPダウンロード
- 実行ファイル作成
- HSP動作環境
- 演算子
- 文字列操作
- 命令・関数一覧
- アイコン変更
- PACKFILE
- PACKFILE編集
- #packopt
- #deffunc
- HSPエラー
- HSPエラー番号
- HSPエラー7
- HSPエラー12
- HSPエラー13
- HSPエラー33
- HSPエラー38
- HSPエラー41
- ホームページ作成
- バージョン
- フォント
- オブジェクト
- ボタン
- 入力ボックス
- オブジェクト非表示
- Win32 API
- メニュー
- HSPLet
- サウンド再生
- 画像
- PNGファイル
- HSP質問掲示板
- デバッグ
- ドラッグ&ドロップ
- ブラウザ作成
- HSP書籍本