グラフィック制御 (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が食いつぶした後メインメモリに食い込み、著しくパフォーマンスが低下します。 |
参照 |
LONG no | 指示するグラフィックス面(Z方向)番号を指定します ( no >= 0 ) |
LONG mode | 球面モード可否を指定します ( def = TRUE) |
表示するグラフィック画面の球面モード可否を指定します。球面モードとはスクロールアウトした部分が右端の時、その部分が左端から表示される構造の事です。これは地球儀を想像してもらえば分かる事と思います。それと同じです。スクロールするゲームでは必須の機能の一つでしょう。
パラメータ |
説明 |
no | 指示するグラフィックス面(Z方向)番号で 指定できる範囲はInitGraphで確保したZ方向(奥行き)の画面枚数範囲内です。 |
flg | TRUE = 球面スクロール FALSE = 球面スクロールを使用しない。この場合はスクロールアウトした部分がスクロールインすることはありません。 |
戻り値 |
無し |
備考 |
|
参照 |
LONG no | 設定するグラフィックス面(Z方向)番号を指定します ( no >= 0 ) |
LONG flg | 表示可否を指定するフラグ (def = FALSE) |
最終的にディスプレイに表示されるかどうかを決定する関数です。表示される必要が無いならば必ずFALSEに指定するようにしてください。そうすることで無駄な処理を(描画時において実際はクリッピングもされますので極力回避できますが)省けパフォーマンスアップに貢献します。スプライトを画面から隠すときに負の座標に指定したりする方法よりこちらを利用してください。
パラメータ |
説明 |
no | 指示するグラフィックス面(Z方向)番号を指定します。指定できる番号の範囲は InitGraphで確保したZ方向(奥行き)の画面枚数範囲内となります。 |
flg | 表示可否を指定するフラグで FALSEにする事で表示されなくなります。 |
戻り値 |
無し |
備考 |
|
参照 |
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] と指定します。 |
参照 |
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] と指定します。 |
参照 |
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で確保した管理領域範囲内となります。 |
戻り値 |
無し |
備考 |
|
参照 |
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] と指定します。 |
参照 |