1

PixelShaderFunction HLSL のテクスチャでピクセルが終了する場所を手動で設定するにはどうすればよいですか? 理想的には、GPU が次のロジックに従うことを望みます。

  1. ピクセルを 1 つずつ順不同で書き込みます。つまり、最初のピクセルが出てくるたびに、テクスチャの左上隅に書き込みます。2 番目のものは最初のものの右に、3 番目のものは最初のものの右に、というように書きます。
  2. 行の終わりに到達したら、次の行に移動します。
  3. テクスチャの最後に到達したら、残りのすべてのピクセルをドロップします。

ありがとう。

頂点シェーダー レベルでピクセルに必要な位置を手動で計算することで、それができるように感じます。ピクセルの配置がどのように機能するかをよりよく理解できれば、それを引き出すことができるかもしれません。レンダー ターゲットが 2000*4 の場合。頂点シェーダー レベルで、ピクセルが最終的に 2 番目の行になるようにするにはどうすればよいですか?

RenderTarget が高さ = 1 のテクスチャである場合、位置を計算しなくてもよいのでしょうか? それとも、ピクセルのマージによってデータが失われる危険がありますか? 画面に長い線だけを 1 つずつ描画し、その間のターゲットをクリアする予定です。

4

1 に答える 1

0

基本的に、あなたが説明していることはできません。

頂点シェーダーの後、GPU には描画する三角形のコレクションがあります。レンダー ターゲット (おそらくバックバッファー) でピクセル単位でそれらを塗りつぶします。この塗りつぶしプロセスの一部として (各ピクセルの色を決定するため) 、塗りつぶされる特定のピクセルに対してピクセル シェーダーが (関数のように) 呼び出されます。この時点では、出力ピクセルを「移動」する容量はありません。

できることは、ピクセル シェーダーでテクスチャからサンプリングするときに、テクスチャ座標パラメーターを( MSDN ) に変調することです。目的の結果を達成するために、意味のある関数を適用できます。tex2D

または、変換が単純な場合は、頂点データまたは頂点シェーダーを使用してテクスチャ座標を適切に設定するだけです。

于 2013-07-26T15:43:57.833 に答える