SetUseDivGraphFlag

必要ならグラフィックの分割を行うか否かを設定する

SetUseDivGraphFlag Flag

int Flag : 必要ならグラフィックの分割を行うか否かを決定するフラグ
( TRUE : 行う(デフォルト)   FALSE : 行わない )

(プラグイン / モジュール : DxLibW)

解説

DXライブラリでは標準でパソコンに搭載されているグラフィックカードに
3Dアクセラレータ機能が搭載されている場合は、その高速なハードウエア機能を
使い2Dグラフィック描画を実現します。(3Dアクセラレータ機能は当然
3D空間を描画するためにあるのですが、使いようによっては平面的な2D
描画にもつかえるのです。)

そして3Dアクセラレータを使って絵を画面に描画する場合、描画する絵の
サイズは3Dアクセラレータの仕様上 幅・高さ共に2の n 乗でなければ
なりません。( 2のn乗の数値 → 1 2 4 8 16 32 64 128 ... )
つまり、幅300 高さ200 の絵や、幅640 高さ480 の絵などは、そのままでは
描画することが出来ないのです。

この問題を解決する方法は2つあります。

1. 描画したい絵を、描画したい絵より大きい2のn乗の大きさを持つ絵として

処理する。

2. 複数の2のn乗の大きさを持つ絵に分解して、結果的にひとつの絵に見える

ように処理する。

1の方法は、たとえば幅300 高さ300(以後 300x300 と記述します)の大きさを
持つグラフィックを表示したい場合、2のn乗で300より大きい数値である512
の値を採用し、512x512 の大きさを持つ絵として扱う方法です。

2の方法は、たとえば 300x300 の大きさをもつ絵を、2のn乗の大きさを持つ
複数の絵で扱う方法で、具体的には 256x256 の絵と、64x256 の絵、 256x64 の絵、
64x64 の絵の合計4つの絵を継ぎはぎして 300x300 というひとつの絵を処理
する方法です。

どちらも一長一短で、まず1の方法は 300x300 の絵を 512x512 の絵として扱う
ため、使われていない 幅212 高さ212 の部分はそのまま無駄になってしまいます。
2の方法では複数の絵で表現するために1の方法よりも無駄は省けますが、沢山の
絵を扱うことになり、その分1の方法よりも処理速度は遅くなります。

DXライブラリはデフォルトでは2の方法を使いますが、描画速度を優先させ
たい場合にはこの関数で処理形態を変更することが出来ます。

この関数に TRUE を渡した場合は2、FALSE を渡した場合は1の処理で絵が
描画されますので、状況に応じて使い分けてください。

(この設定をどうするにしろ、もともとの絵が2のn乗の大きさだった場合は
どちらの設定でも同じ処理がされるのですが…)

なお、この関数を使用して処理形態を変えた後に LoadGraph 関数などを使って
作られたグラフィックから変更が適用されます。1の処理形態になるか2の処理
形態になるかはグラフィックを読み込んだ時に決定され、既にメモリに読み込ま
れていグラフィックに対しては SetUseDivGraphFlag 関数は何の影響も及ぼしま
せんので注意してください。

戻り値:
  -1:エラー発生
  0:成功

情報

プラグイン / モジュールDxLibW
バージョン3.24f
作成日2026/04/12
著作者DxLib: Takumi Yamada / HSP binding: IronHSP Project
URLhttps://dxlib.xsrv.jp/
備考hspdxlib.as をインクルードして使用
タイプDxLib ゲームライブラリ
グループDxLib その他
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\hspdxlib.hs