SetScreenMemToVramFlag

画面の画像データをVRAMに配置するかどうかを変更する

SetScreenMemToVramFlag Flag

Flag : VRAMに配置するか否かのフラグ
( TRUE:VRAMに配置(デフォルト) FALSE:システムメモリに配置 )

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

解説

グラフィックを実際に描画する画面のデータ領域をVRAMにするか
システムメモリにするか変更する事が出来ます。

VRAMとはビデオRAM、グラフィックカードに装備されているメモリ
のことで、システムメモリとは『パソコンの搭載メモリ』として表記されている
普通のメモリの事です。

この関数の説明をする前に以下の前提を覚えてください。

1. CPUがVRAMに記憶されているデータを読み出すのは非常に低速である

2. 画面のグラフィックデータは通常VRAMに配置されている

3. CPUで半透明系の描画処理をする場合は画面のグラフィックデータを

読みこむ必要がある。

SetUse3DFlag 関数によって3Dアクセラレータを使わないようにした場合、
描画処理はすべてCPUで行います。

この時 SetDrawBlendMode 関数によって半透明描画をするよう指定した場合、
CPUは上記の第3項目である画面のグラフィックデータを読みこむ処理をしますが、
第2第1項目をみていただければわかるように、VRAMのデータを読みこむ
処理が発生してしまうために処理が非常に低速になります。

この最悪な現象を回避するにはどうすれば良いか?

そう、画面のグラフィックデータがVRAMになければいいのです。

と、いうわけでこの関数は画面のグラフィックデータのありかをVRAMか
普通のRAMどちらに配置するか決める事が出来ます。

ですが注意が必要です。

画面のグラフィックデータがVRAMにない場合は3Dアクセラレータを使う事が
出来なくなるために、この関数を使って画面のグラフィックデータをシステムメモリに
した場合は自動的に3Dアクセラレータによる描画は出来なくなり、それまでにロード
したグラフィックデータはすべて破棄されます。

( SetUse3DFlag 関数で3Dアクセラレータの使用を止めたときと同じ状態に
なります )

つまり完全に2D描画のみで処理をすべて行う事が前提となります。

さらにこの関数を使用しても表画面はVRAMに存在しつづけますので描画
処理時には必ず SetDrawScreen 関数で DX_SCREEN_BACK を使用して裏画面への
描画に変更する必要があります。

(表画面への描画はVRAMにある場合と変わりません)

総じて癖の強い関数です。

ですが半透明等の処理速度は画面のグラフィックデータがVRAMにある場合に
比べて2倍近く速くなりますので3Dアクセラレータ無しで半透明描画処理を多用
する場合は必ず使う事をお勧めします。

<注意!>

この関数は DxLib_Init の前で実行した場合のみ効果が得られます

戻り値:
  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