トップページ > 記事閲覧
DxLibDotNet(C#)でDrawPolygon2DToShaderが描画されない
名前:K 日時: 2026/06/12 08:01

DXLib Ver3.24f DxLibDotNet使用 SetUseDirect3DVersion(DX_DIRECT3D_9EX)設定済み LoadPixelShaderは成功(ハンドル≠-1) DrawPolygon2DToShaderの戻り値は0(成功) しかし何も描画されない
メンテ

Page: 1 |

Re: DxLibDotNet(C#)でDrawPolygon2DToShaderが描画されない ( No.1 )
名前:管理人 日時:2026/06/13 12:46

手元で試してみましたが、問題なく描画されました 暫定の最新版では正常に描画されるかもしれませんので、よろしければ こちらの暫定最新バージョンをお試しください 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
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存