• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DirectX ~テクスチャに値を書き込む~)

DirectXテクスチャへの値の書き込み方法

このQ&Aのポイント
  • DirectXを使用してテクスチャに値を書き込む方法について説明します。
  • テクスチャのサーフェスをロックして浮動小数点の値を書き込む方法について詳しく解説します。
  • カラーデータを32ビットずつシフトしながらテクスチャに書き込む方法について説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.1

>生成したテクスチャに浮動小数点の値を書き込みたい 書き込みたいのか浮動小数点をカラーに使いたいのかどちらですか? プログラムは後者のようですが。。。 >うまくいきません。 質問者さんに限ることではありませんが、質問する人が、 どのような結果を期待して、どのような結果になったのかを 提示してもらわなければアドバイスのしようがありません。 >for( int x=0; x<128; x++) このループの意味はおわかりですか? dataは書き込む先頭ですよね? 先頭のアドレスから128回しか書き込んでないようですが、 直線がちょこっとでるだけのような。。。 私が昔書いたものですが、 RECT Rect; D3DLOCKED_RECT LockRect; m_Textuer->LockRect(0, &LockRect, &Rect, 0); for ( int y = Rect.top; y < Rect.bottom; y++ ) {  unsigned short *p = pBits;  pBits += LockRect.Pitch / sizeof(short);  for ( int x = Rect.left; x < Rect.right; x++ )  {   *p++ = usColor;  } } m_Textuer->UnlockRect(0); こんなかんじ:-p)

cain_sep
質問者

お礼

ご回答ありがとうございます。 いろいろ調査したところ・・ data = (LPDWORD)((LPBYTE)rect.pBits + rect.Pitch * y); の部分の(LPDWORD)を(float*)にしたら解決しました。 >質問者さんに限ることではありませんが、質問する人が、 >どのような結果を期待して、どのような結果になったのかを >提示してもらわなければアドバイスのしようがありません。 確かにその通りですね。 次回からはもう少し具体的に投稿しようと思います。 わざわざソースを載せていただきありがとうございます。 aris-wizの書いていただいたものも1つの参考になりました。

その他の回答 (1)

  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.2

ちなみに、わたしは16Bitの書き込みでやってたので、 unsigned short *p = pBits;とかになってるので、 その辺りは、適当に読み替えてください。

cain_sep
質問者

お礼

ご回答ありがとうございます。 いろいろ調べてみたところ、 data = (LPDWORD)((LPBYTE)rect.pBits + rect.Pitch * y); の(LPDWORD)の部分を(float*)に直したら解決しました。 aris-wizの事例も1つの参考になりました。

関連するQ&A