手元で試してみましたが、問題なく描画されました
暫定の最新版では正常に描画されるかもしれませんので、よろしければ
こちらの暫定最新バージョンをお試しください m(_ _)m
https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用
あと、私がテストしたコードは以下の通りです
( 読み込んだ Test1.bmp のRとBを入れ替えて描画するコードです )
<メイン部分>
int grhandle, pshandle;
DX.VERTEX2DSHADER[] Vert = new DX.VERTEX2DSHADER[ 6 ];
// ウインドウモードで起動
DX.ChangeWindowMode(TRUE);
// 使用する Direct3D のバージョンを 9EX に設定
DX.SetUseDirect3DVersion(DX_DIRECT3D_9EX);
// DXライブラリの初期化
if (DX.DxLib_Init() < 0) return;
// ピクセルシェーダーバイナリコードの読み込み
pshandle = DX.LoadPixelShader("SamplePS.pso");
// 画像の読み込み
grhandle = DX.LoadGraph("Test1.bmp");
// 使用するテクスチャをセット
DX.SetUseTextureToShader(0, grhandle);
// 使用するピクセルシェーダーをセット
DX.SetUsePixelShader(pshandle);
// 頂点データの準備
Vert[0].pos = DX.VGet( 0.0f, 0.0f, 0.0f);
Vert[1].pos = DX.VGet(128.0f, 0.0f, 0.0f);
Vert[2].pos = DX.VGet( 0.0f, 512.0f, 0.0f);
Vert[3].pos = DX.VGet(128.0f, 512.0f, 0.0f);
Vert[0].dif = DX.GetColorU8(255, 255, 255, 255);
Vert[0].spc = DX.GetColorU8(0, 0, 0, 0);
Vert[0].u = 0.0f; Vert[0].v = 0.0f;
Vert[1].u = 1.0f; Vert[1].v = 0.0f;
Vert[2].u = 0.0f; Vert[3].v = 1.0f;
Vert[3].u = 1.0f; Vert[2].v = 1.0f;
Vert[0].su = 0.0f; Vert[0].sv = 0.0f;
Vert[1].su = 1.0f; Vert[1].sv = 0.0f;
Vert[2].su = 1.0f; Vert[3].sv = 1.0f;
Vert[3].su = 0.0f; Vert[2].sv = 1.0f;
Vert[0].rhw = 1.0f;
Vert[1].rhw = 1.0f;
Vert[2].rhw = 1.0f;
Vert[3].rhw = 1.0f;
Vert[4] = Vert[2];
Vert[5] = Vert[1];
// 画面をクリア
DX.ClearDrawScreen();
// 描画
DX.DrawPrimitive2DToShader( Vert, 6, DX_PRIMTYPE_TRIANGLELIST ) ;
// キー入力待ち
DX.WaitKey();
// DXライブラリの後始末
DX.DxLib_End();
<SamplePS.fx>
struct PS_INPUT
{
float4 Diffuse : COLOR0 ;
float4 Specular : COLOR1 ;
float2 TexCoords0 : TEXCOORD0 ;
float2 TexCoords1 : TEXCOORD1 ;
} ;
struct PS_OUTPUT
{
float4 Output : COLOR0 ;
} ;
sampler sampler0 : register( s0 ) ;
PS_OUTPUT main( PS_INPUT psin )
{
PS_OUTPUT psout ;
float4 texc ;
texc = tex2D( sampler0, psin.TexCoords0 ) ;
psout.Output.r = texc.b ;
psout.Output.g = texc.g ;
psout.Output.b = texc.r ;
psout.Output.a = texc.a ;
return psout ;
}
<SamplePS.pso 作成時のコマンド>
ShaderCompiler.exe /Tps_2_0 SamplePS.fx