A2R10G10B10 が使用できるように、MakeScreen などで作成する画像に使用するテクスチャのフォーマットを
直接指定するための関数 SetUsePlatformTextureFormat を追加しました
// 作成するグラフィックハンドルで使用する環境依存のテクスチャフォーマットを指定する
// ( Direct3D9環境なら DX_TEXTUREFORMAT_DIRECT3D9_R8G8B8 など、0 を渡すと解除 )
int SetUsePlatformTextureFormat( int PlatformTextureFormat ) ;
この関数は Direct3D9 なら Direct3D9 に依存したテクスチャフォーマット、Direct3D11 なら Direct3D11 に
依存したテクスチャフォーマットを直接指定するための関数で( とはいえ現時点では Direct3D9 にしか対応して
いませんが・・・ )、Direct3D9 用には以下のフォーマットを指定できるようにしました
DX_TEXTUREFORMAT_DIRECT3D9_R8G8B8
DX_TEXTUREFORMAT_DIRECT3D9_A8R8G8B8
DX_TEXTUREFORMAT_DIRECT3D9_X8R8G8B8
DX_TEXTUREFORMAT_DIRECT3D9_R5G6B5
DX_TEXTUREFORMAT_DIRECT3D9_X1R5G5B5
DX_TEXTUREFORMAT_DIRECT3D9_A1R5G5B5
DX_TEXTUREFORMAT_DIRECT3D9_A4R4G4B4
DX_TEXTUREFORMAT_DIRECT3D9_R3G3B2
DX_TEXTUREFORMAT_DIRECT3D9_A8R3G3B2
DX_TEXTUREFORMAT_DIRECT3D9_X4R4G4B4
DX_TEXTUREFORMAT_DIRECT3D9_A2B10G10R10
DX_TEXTUREFORMAT_DIRECT3D9_G16R16
DX_TEXTUREFORMAT_DIRECT3D9_A8B8G8R8
DX_TEXTUREFORMAT_DIRECT3D9_X8B8G8R8
DX_TEXTUREFORMAT_DIRECT3D9_A2R10G10B10
DX_TEXTUREFORMAT_DIRECT3D9_A16B16G16R16
DX_TEXTUREFORMAT_DIRECT3D9_R16F
DX_TEXTUREFORMAT_DIRECT3D9_G16R16F
DX_TEXTUREFORMAT_DIRECT3D9_A16B16G16R16F
DX_TEXTUREFORMAT_DIRECT3D9_R32F
DX_TEXTUREFORMAT_DIRECT3D9_G32R32F
DX_TEXTUREFORMAT_DIRECT3D9_A32B32G32R32F
MakeScreen を使用して描画先にできる画像を作成する前に SetUsePlatformTextureFormat( DX_TEXTUREFORMAT_DIRECT3D9_A2R10G10B10 ) ;
などと実行しておくと、SetUsePlatformTextureFormat で指定しておいたフォーマットの画像が作成されます
SetUsePlatformTextureFormat( 0 ) ; を実行すると設定が解除されますので、MakeScreen の後は設定を解除
するようにしてください
因みに、実行する環境が指定のフォーマットに対応していない場合は MakeScreen が失敗しますので、
あまりマイナーなフォーマットは使用しない方が良いです
関数 SetUsePlatformTextureFormat を追加したバージョンはこちらにアップしましたので、よろしければお使いください m(_ _)m
https://dxlib.xsrv.jp/temp/DxLibVCTest.exe // VisualC++ 用
https://dxlib.xsrv.jp/temp/DxLibBCCTest.exe // BorlandC++ 用
https://dxlib.xsrv.jp/temp/DxLibGCC_DevCppTest.exe // Dev-C++ 用
https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.exe // MinGW 用
https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // .NET用
https://dxlib.xsrv.jp/temp/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
> また、現在の仕様ではバッファのフォーマットを指定する際に浮動小数フラグ、ビット数、
> チャンネル数などを1つずつ関数で指定していますが、例えばDX_FORMAT_A2R10G10B10のような
> 定数一つでフォーマットを指定するほうがシンプルでわかりやすいと思います。
A2R10G10B10 のような直接的なフォーマット指定は使用する描画APIが変化すると表現も変わるので、
永遠に Direct3D9 を使用する場合は分かりやすくてよいのですが、今後も時代の流れに応じて
使用APIも変更しようと思うと適合するフォーマットが無くなったりして困ることになるので、
きっちりとフォーマットを指定できるようにするのは避けていました
( 因みに Direct3D 10 以降には A2R10G10B10 は存在せず、似たものとして R10G10B10A2_UNORM と R10G10B10A2_UINT があります )