グラフィック制御 (98年2月11日版)


InitGraph グラフィック管理領域を初期化する
SetGraphMode グラフィックの球面モード可否の指定を行う
EnableGraph グラフィックの表示可否を指定します
GetDC デバイスコンテキストを取得します
ReleaseDC デバイスコンテキストを開放します
MoveGraph グラフィックの表示位置を指定します
PutPattern グラフィック画面にスプライトパターンを貼り付けます

VOID InitGraph (cx, cy, totalno)

LONG cx 横方向の画面数で表示画面のn倍となります ( cx >= 1 )
LONG cy 縦方向の画面数で表示画面のn倍となります ( cy >= 1 )
LONG totalno Z方向(奥行き)の画面枚数を指定します ( totalno >= 1 )

グラフィック画面の管理領域とグラフィックボード上のVRAMを確保します。グラフィック画面の論理画面は表示画面と同じ又はそれ以上のサイズを指定する事ができます。例えば32*1画面のグラフィック画面を作る事も可能ですので予めVRAMのパターンを描画しておいた横スクロールゲームを作る事も可能です。ここでいう管理領域は画面そのものを保持するメモリも確保されます(グラフィックボードのVRAMが使用される)、実行中に動的に変更できませんので注意が必要です。

 パラメータ 

説明
cx 横方向の画面数でスクロールする必要が無ければ1、あるなら通常は2画面もあれば問題ありません。
cy 縦方向の画面数でスクロールする必要が無ければ1、あるなら通常は2画面もあれば問題ありません。
totalno Z方向(奥行き)の画面枚数を指定しますがアプリケーションで必要と思われる枚数を指定します。通常は3画面程度あれば十分でしょう。
   

戻り値

無し

備考

画面数と枚数は指定した分だけVRAMを消費しますので必要最小限だけ指定するようにしてください。むやみに指定すると最悪VRAMが食いつぶした後メインメモリに食い込み、著しくパフォーマンスが低下します。

参照

 

VOID SetGraphMode (no,mode)

LONG no 指示するグラフィックス面(Z方向)番号を指定します ( no >= 0 )
LONG mode 球面モード可否を指定します ( def = TRUE)

表示するグラフィック画面の球面モード可否を指定します。球面モードとはスクロールアウトした部分が右端の時、その部分が左端から表示される構造の事です。これは地球儀を想像してもらえば分かる事と思います。それと同じです。スクロールするゲームでは必須の機能の一つでしょう。

 パラメータ 

説明
no 指示するグラフィックス面(Z方向)番号で 指定できる範囲はInitGraphで確保したZ方向(奥行き)の画面枚数範囲内です。
flg TRUE = 球面スクロール FALSE = 球面スクロールを使用しない。この場合はスクロールアウトした部分がスクロールインすることはありません。
   

戻り値

無し

備考

 

参照

 

VOID EnableGraph (no,flg)

LONG no 設定するグラフィックス面(Z方向)番号を指定します ( no >= 0 )
LONG flg 表示可否を指定するフラグ (def = FALSE)

最終的にディスプレイに表示されるかどうかを決定する関数です。表示される必要が無いならば必ずFALSEに指定するようにしてください。そうすることで無駄な処理を(描画時において実際はクリッピングもされますので極力回避できますが)省けパフォーマンスアップに貢献します。スプライトを画面から隠すときに負の座標に指定したりする方法よりこちらを利用してください。

 パラメータ 

説明
no 指示するグラフィックス面(Z方向)番号を指定します。指定できる番号の範囲は InitGraphで確保したZ方向(奥行き)の画面枚数範囲内となります。
flg 表示可否を指定するフラグで FALSEにする事で表示されなくなります。
   

戻り値

無し

備考

 

参照

 

HDC GetDC (s, frameno)

Graph s VVRAMシステムに含まれる Graphクラスインターフェースを指定 (Graph[no] >= 0)
LONG frameno グラフィックのフレーム番号を指定します(frameno >= 0)

グラフィックバッファへのデバイスコンテキストを取得するもので取得したデバイスコンテキストはGDIと同様のファンクションが実行できます。また当然これは開放の必要もあります。開放は VVRAM::ReleaseDCを使用します。

 パラメータ 

説明
s クラスインターフェイスを指定します。
frameno グラフィック画面は縦と横の画面数を指定できます。例えば 2*3とは横2画面縦3画面あることになり gr[0]〜gr[5]の6つのフレームが指定できます。並びは横並びとなります。
   

戻り値

デバイスコンテキスト

備考

VVRAMにはメンバー変数 Graph* を持っています。これをVVRAM内部では配列化して管理しております。呼び出すときにはその配列から指定しますので gr[0] と指定します。

参照

 

VOID ReleaseDC (s, frame)

Graph s VVRAMシステムに含まれる Graphクラスインターフェースを指定 (Graph[no] >= 0)
LONG frameno グラフィックのフレーム番号を指定します(frameno >= 0)

グラフィックバッファへのデバイスコンテキストを開放するものです。

 パラメータ 

説明
s クラスインターフェイスを指定します。
frameno グラフィック画面は縦と横の画面数を指定できます。例えば 2*3とは横2画面縦3画面あることになり gr[0]〜gr[5]の6つのフレームが指定できます。並びは横並びとなります。
   

戻り値

無し

備考

VVRAMにはメンバー変数 Graph* を持っています。これをVVRAM内部では配列化して管理しております。呼び出すときにはその配列から指定しますので gr[0] と指定します。

参照

 

VOID MoveGraph (pageno, x, y)

LONG pageno 指示するグラフィックス面(Z方向)番号を指定します ( no >= 0 )
LONG x X座標位置
LONG y Y座標位置

最終的にディスプレイに表示されるか時の表示位置を指定します。パターンが画面の外にはみ出る場合は自動的にクリッピングされます。

 パラメータ 

説明
pageno 指示するグラフィックス面(Z方向)番号を指定します。指定できる範囲はInitGraphで確保したZ方向(奥行き)の画面枚数範囲内です。
x X座標位置
y Y座標位置
   

戻り値

無し

備考

 

参照

 

LONG PutPattern (frameno, x, y,spriteno)

LONG frameno 指示するグラフィックスフレーム番号を指定します ( no >= 0 )
LONG x X座標位置
LONG y Y座標位置
LONG spriteno スプライト管理番号を指定します ( spriteno >= 0 )

アクティブなグラフィック画面対してスプライトデータを貼り付けるものです。アクティブなグラフィック画面はVRAM制御命令Apageで指定を行います。またスプライトバッファに関連付けられたスプライトが無いと実行できません。画面からはみ出るデータは自動クリッピングされます。グラフィック画面はウィンドウズのALT+TAB等によるウィンドウ移行のVRAMの破壊後の修復はユーザー側で行う必要があります。詳細はテクニカルノートを参照ください。

 パラメータ 

説明
pageno 指示するグラフィックスフレーム番号を指定します。cx = 2 cy = 2で作成している場合は指定できる範囲は0-3の範囲になります。
x X座標位置
y Y座標位置
spriteno 貼り付けるスプライトの管理番号を指定します。指定できる番号の範囲は InitSpriteで確保した管理領域範囲内となります。
   

戻り値

無し

備考

 

参照

 

 

VOID ReleaseDC (s, frame)

Graph s VVRAMシステムに含まれる Graphクラスインターフェースを指定 (Graph[no] >= 0)
LONG frameno グラフィックのフレーム番号を指定します(frameno >= 0)

グラフィックバッファへのデバイスコンテキストを開放するものです。

 パラメータ 

説明
s クラスインターフェイスを指定します。
frameno グラフィック画面は縦と横の画面数を指定できます。例えば 2*3とは横2画面縦3画面あることになり gr[0]〜gr[5]の6つのフレームが指定できます。並びは横並びとなります。
   

戻り値

デバイスコンテキスト

備考

VVRAMにはメンバー変数 Graph* を持っています。これをVVRAM内部では配列化して管理しております。呼び出すときにはその配列から指定しますので gr[0] と指定します。

参照