SPARCstationで高速ゲーム
|
Study C販売のご案内
Study Cのオンライン販売を行っております。
是非ご利用ください。
|
|
SPARCstation上で高速に動作するゲームを作る方法を検討します。かなり前に
SunOS 4.1.X上でブロックくずしと、縦スクロールのシューティングゲーム
(シューティングゲームは一応動くがゲームとしてはゲーム性がほとんどない)を
作ったときの記憶をもとに書くので間違いなどがあるかも知れません
(これらのゲームはこのページからダウンロードできるようにする予定です)。
なにかお気づきの点がありましたらメールしてください。
グラフィックが使える環境で最初に思いつくものはX Windowでしょう。
しかし、Windowシステムが存在する以上Windowシステムを介さない方法よりも
かならず処理は遅くなります。それにワークステーションはせっかく
大きなディスプレイを装備しているのですから、画面全体を使うようなゲームに
したいのでWindowシステムの出る余地はありません。マシンの性能が上がっているの
だからX Windowが動いていても構わないという意見も聞かれますが、ゲームには
この理屈は当てはまりません。マシンの性能が上がったら、その分画面をダイナミック
に動かしたり3D化に使う必用があります。
X Windowを使わないとなるとグラフィックを表示する方法はほとんどなくなって
しまいます。SPARCstationに残されたグラフィックの表示はフレームバッファ
を使う方法です。ワークステーションのフレームバッファをマップして使うという
方法ですが、グラフィックボードの種類に応じて処理を変える必用があるなど
非常に厄介な方法です。この方法もいずれ取り上げようと思いますが、今回は
フレームバッファへの処理を簡単してくれるライブラリを使ってみようと思います。
このライブラリはPixrectライブラリでSunOS 4.1.Xで使用できます。ただ、残念な
ことにSolaris 2.Xではこのライブラリが外されてしまい、コンパイルできないどころか
ダイナミックリンクしたプログラムを実行することもできません。しかし、
SunOS 4.1.XでスタティックリンクしたものはSolaris 2.Xでも実行することができます。
単なるライブラリなのになぜSolaris 2.Xではずす必用があったのか理解できません。
Solaris 2.Xで使用できるPixrectライブラリも存在するようです。ダウンロード
してありますが、まだ調べていません(調べたら報告します)。
PixrectライブラリはSunOS 4.1.X用の一部のCAD、ORCHIDの非ウィンドウ用MAX EDITORで
使用されています。
(1)デバイスのオープン
/devディレクトリにはfbというフレームバッファデバイスが存在します。Pixrectライブラリ
はこのデバイスを使用します。pr_open()を使ってこのデバイスをオープンします。
Pixrect *pr;
if(!(pr = pr_open("/dev/fb"))){
ERROR
}
.
.
.
pr_close(pr);
prには画面の情報もセットされます。
pr->pr_size.x : X方向のサイズ
pr->pr_size.y : Y方向のサイズ
pr->pr_depth : 1ドットあたりのビット数
(2)カラーマップテーブルを待避し、新しいテーブルで設定しなおします。
pr_getcolormap()で待避しpr_putcolormap()で設定します。
2<<(pr->pr_depth-1)が256以下の場合
unsigned char
ored[256], ogreen[256], oblue[256],
nred[256], ngreen[256], nblue[256];
.
.
.
pr_getcolormap(pr, 0, 2<<(pr->pr_depth-1), ored, ogreen, oblue);
pr_putcolormap(pr, 0, 2<<(pr->pr_depth-1), nred, ngreen, nblue);
(3)描画
これで準備はすべて完了なのであとは描画を行うだけです。たとえば画面全体を
0番目のカラーエントリーの色(RGBが0,0,0なら黒)にするには次のように
行います。
pr_rop(pr, 0, 0, pr->pr_size.x, pr->pr_size.y,
PIX_DONTCLIP | PIX_SRC | PIX_COLOR(0), 0, 0, 0);
pr_rop()は画面上でのコピーなどにも使用できます。最後の3このパラメータ
0, 0, 0をpr, 10, 10などと指定します。
|
C言語ゲームプログラミング講座のご案内
ゲームの作り方を解説する講座を始めました。
|
|
お問い合わせ先