トップページ > 記事閲覧
DrawPrimitive2DToShaderについて詳しく
名前:へけぽん 日時: 2019/09/03 08:27

タイトル通りです SFC時代のラスタースクロールを利用した演出や、画像の色相、彩度、輝度を変更できるようにピクセルシェーダを利用しています 自作のゲームでは以下のような使い方をしていますが、ほとんど意味を理解できていません int beforshader = MakeScreen(1024, 1024, TRUE);//シェーダによる改変前の画像を描画するスペース int aftershader = MakeScreen(1024, 1024, TRUE);//シェーダによる改変後の画像を描画するスペース int shaderhandle = LoadPixelShader("MyPixelShader.pso");//ピクセルシェーダのロード SetUsePixelShader(shaderhandle);//ピクセルシェーダのセット SetDrawScreen(beforshader);ClearDrawScreen();DrawGraph(〜〜);//元となる画像を描画 VERTEX2DSHADER vertex[4];//?頂点用の変数?構造体?の宣言? //?頂点の設定? vertex[0].rhw = vertex[1].rhw = vertex[2].rhw = vertex[3].rhw = 1.0f; vertex[0].dif = vertex[1].dif = vertex[2].dif = vertex[3].dif = GetColorU8(255, 255, 255, 255); vertex[0].spc = vertex[1].spc = vertex[2].spc = vertex[3].spc = GetColorU8(0, 0, 0, 0); vertex[0].u = vertex[0].su = vertex[2].u = vertex[2].su = vertex[0].v = vertex[0].sv = vertex[1].v = vertex[1].sv = 0.0f; vertex[1].u = vertex[1].su = vertex[3].u = vertex[3].su = vertex[2].v = vertex[2].sv = vertex[3].v = vertex[3].sv = 1.0f; vertex[0].pos = VGet( 0.0f, 0.0f, 0);vertex[1].pos = VGet(1024.0f, 0.0f, 0); vertex[2].pos = VGet( 0.0f, 1024.0f, 0);vertex[3].pos = VGet(1024.0f, 1024.0f, 0); SetUseTextureToShader(0,beforshader);//?よく理解できていません、シェーダの処理を行う時のもととなる画像の参照先をセット? SetDrawScreen(aftershader);ClearDrawScreen(); DrawPrimitive2DToShader(vertex, 4, DX_PRIMTYPE_TRIANGLESTRIP);//?引数の意味や効果が分かりません? SetDrawScreen(DX_SCREEN_BACK); DrawRectGraph(DestX,DestY,SrcX,SrcY,Width,Height, aftershader ,TransFlag,TurnFlag ) ; rhw、dif、spc、u、su、v、sv、posの意味やDrawPrimitive2DToShaderに使われる引数の効果などの解説が欲しいです
メンテ

Page: 1 |

Re: DrawPrimitive2DToShaderについて詳しく ( No.1 )
名前:管理人 日時:2019/09/03 22:36

関数リファレンスのシェーダ関連の関数の解説はご覧になられていますでしょうか? もしご覧になっていませんでしたら、一度ご覧になってみてください( 簡単な使用例のサンプルもあります ) <一番下の方に『プログラマブルシェーダー関係関数』という名称でグループ分けされています> https://dxlib.xsrv.jp/function/dxfunc_3d.html DrawPrimitive2DToShader はリファレンスに載っていない関数で宣言は以下のようになっています // シェーダーを使って2Dプリミティブを描画する // VertexArray : 描画する頂点リスト // VertexNum : 描画する頂点の数 // PrimitiveType : プリミティブタイプ // DX_PRIMTYPE_POINTLIST : ポイントリスト // DX_PRIMTYPE_LINELIST : 線リスト // DX_PRIMTYPE_LINESTRIP : 線ストリップ // DX_PRIMTYPE_TRIANGLELIST : 三角形リスト // DX_PRIMTYPE_TRIANGLESTRIP : 三角形ストリップ // DX_PRIMTYPE_TRIANGLEFAN : 三角形ファン int DrawPrimitive2DToShader( const VERTEX2DSHADER *VertexArray, int VertexNum, int PrimitiveType ) ; PrimitiveType は頂点をどのように扱ってどのような図形を描画するかを指定するための引数です PointList や TriangleList などの名称は Direct3D と同じなので、詳しくはこちらの Direct3D での プリミティブの解説を参照してください m(_ _)m <プリミティブ> https://docs.microsoft.com/ja-jp/windows/uwp/graphics-concepts/primitives <↑の日本語訳がかなり怪しいので一応英語ページも…> https://docs.microsoft.com/ja-jp/windows/win32/direct3d9/primitives
メンテ

Page: 1 |

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

   クッキー保存