[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 08/06 20:32 / Filesize : 251 KB / Number-of Response : 956
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【C++】 DirectX初心者質問スレ Part24 【C】



1 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 22:06:29 ]
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。

【C++】 DirectX初心者質問スレ Part23 【C】
pc12.2ch.net/test/read.cgi/tech/1242977486/

652 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:28:10 ]
それでも、Direct3D9で2D等倍表示をするときだけしか正しくない「頂点座標を0,5ずらす」を
後生大事に信じ込むのは馬鹿だろう

653 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:40:27 ]
基本的な質問で申し訳ないんだが、
GPUの機種によって描画できる場合と描画できない場合ができていて困っている。
原因は何が考えられるだろう?

動作条件は
・DirectX 9使用
・Vertex/PixelShader使用
・FVFはPosition|DiffUse|UV
・空間座標変換はCPU側で事前に合成してから単一の4x4行列としてID3DXEffectに入力。

現行のプログラムでRADEON HD4850だと正常にポリゴンが描画できるが、
Intel GMA950では描画されない。Device->Clear()は動いてる。
また、FVFがPositionRhw|DiffUse|UV のときは描画できることも確認している。(座標変換が利かなくなるが)

シェーダー使ってなかったころのプログラムやシェーダーを使ってる
サンプルプログラムでは描画できてるから、ハードウェアのせいではない。

654 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:45:16 ]
きわめて一般的な描画方法だからどこかおかしいんと違う?

655 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 17:51:26 ]
>>653
それだけの情報で分かるわけないだろう。
デバッグランタイムも何も文句言わないの?

656 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 19:32:40 ]
>>655
デバッグランタイムは動かしたことないな。試してみる。

開発マシンじゃなくてテストマシンだったからDirectX SDKは入れてないので。
vs/ps3.0を指定してたら描画結果が真っ白になってしまったことはあったけど、
今回はそんなわかりやすい現象じゃないからなぁ。

657 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:00:15 ]
developer.download.nvidia.com/SDK/10.5/direct3d/samples.html
Stencil Routed K-BufferってDirectX9では出来ないんでしょうか?
マルチサンプルへのアクセスが必要でDirectX9では出来ない、というようなことが書いてありますが
マルチサンプル使わずに出来たりはしないんでしょうか。

658 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 00:21:35 ]
ここで質問していいのか微妙な内容なのですが
スレ違いでしたらスルーしてください。

DirectXを使用するとどうしても気になってくるんですが
プログラムで使用されているVRAMの消費量を調べる方法はありませんか?
メモリ使用量を調べるような関数があるのかと思ったのですが見つけられず…

よろしくお願いします。

659 名前:デフォルトの名無しさん [2009/08/03(月) 02:01:17 ]
DeviceCaps取得すれば
VRAM容量わかるお

660 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:27:18 ]
nai



661 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 13:27:58 ]
このスレにいる人レベル高いなぁ
多分大学生が多いだろうから、大手狙いなんだろうなぁ……負けないように何か作るか

662 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 14:04:14 ]
Zバッファがうまく動かないんですが

環境
WindowsXP VisualStudio2005 MFC Geforce9600GT

初期化

m_d3dPP.EnableAutoDepthStencil = TRUE;
m_d3dPP.AutoDepthStencilFormat = D3DFMT_D16;

LINE_VERTEX line[6] = {
{-1 , 0, 0, 0xFF00FF00},
{1 , 0, 0, 0xFF00FF00},

{0 , 0 , 0 , 0xFFFF0000} ,
{0 , 1 , 0 , 0xFFFF0000},

{0 , 0 , -1 , 0xFF0000FF} ,
{0 , 0 , 1 , 0xFF0000FF}
};
CreateVertexで書き込み

663 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 14:06:11 ]
視点の初期化(マウスで回転した時も)

D3DXMatrixLookAtLH(&d3dm , &D3DXVECTOR3(0, 0, 6) ,
&D3DXVECTOR3(0, 0, 0) , &D3DXVECTOR3(0 , 1 , 0));
m_pDeviceD3D->SetTransform(D3DTS_VIEW , &d3dm);

D3DXMatrixPerspectiveFovLH(&d3dm , D3DXToRadian(45.0) ,
(float)rect.right / (float)rect.bottom , 0 , 1000);

m_pDeviceD3D->SetTransform(D3DTS_PROJECTION , &d3dm);

D3DXMatrixRotationYawPitchRoll(&Rot, D3DXToRadian(m_AngleY), D3DXToRadian(m_AngleX), D3DXToRadian(0.0f));
m_pDeviceD3D->SetTransform(D3DTS_WORLDMATRIX(0) , &Rot);


m_pDeviceD3D->SetRenderState(D3DRS_CULLMODE , D3DCULL_NONE);
m_pDeviceD3D->SetRenderState(D3DRS_LIGHTING , FALSE);
m_pDeviceD3D->SetRenderState(D3DRS_ZENABLE, TRUE);
m_pDeviceD3D->SetRenderState(D3DRS_ZWRITEENABLE, TRUE);

664 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 14:09:05 ]
描画

m_pDeviceD3D->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(20,0,50),1.0f, 0);
m_pDeviceD3D->BeginScene();

m_pDeviceD3D->SetStreamSource( 0, g_pVB, 0, sizeof(LINE_VERTEX) );
m_pDeviceD3D->SetFVF( D3DFVF_XYZ|D3DFVF_DIFFUSE );
for(int i=0; i<3; i++)
m_pDeviceD3D->DrawPrimitive( D3DPT_LINELIST, i*2, 1);

XYZの軸を引いてマウスで回転させてるだけなんだけど
角度によって後ろの線が前に出てきたりZバッファが機能してないみたいなんだけど
どこが間違ってるんでしょう?

665 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 15:40:38 ]
D3DXMatrixPerspectiveFovLHの第4引数(znear)が0になってますがな

666 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 19:40:54 ]
>665
ゼロからじゃだめなんですか?

667 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:22:40 ]
だめ。
視錐台の前面が面積0になってしまう。

668 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 20:49:46 ]
>>665
ありがとう、とりあえずそこを1.0にしてみたら出来たけど
いまいち原理が良くわからないから調べますわ

669 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:17:36 ]
質問です。
川瀬式MGFを実装しようと思い、ここを参考にしながら
journal.mycom.co.jp/column/graphics/050/index.html
やってみたのですが、うまくいきません。

低解像度テクスチャに書き出し拡大しても
こんな風に●の中心を中心に、拡大されたようにならないんですが
何かご存知のであればアドバイスをいただきたいです。

670 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:33:29 ]
きみがやってみて失敗した結果の画像をどこかのアプロダに張れないか



671 名前:デフォルトの名無しさん mailto:sage [2009/08/03(月) 23:35:04 ]
ちょっと待っててください

672 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 01:58:54 ]
 そして>670は待ち続けた。
 雨が降ろうと、風が吹こうと、雪が積もろうと、>671が帰ってくるのをずっと
待ち続けた。
 スレの主人はそんな>670を不憫に思い、毎晩、スレを畳む時間になると、残り
物のレスをそっと脇に置いて帰ったが、翌朝までに手をつけられていたことは、
一度も無かった。>670は、ただひたすら一つのレスを見続けていた。
 結局、>671が帰ってくることは、二度と無かったのだ。
 なぜなら、>671は

673 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 08:48:32 ]
(続き) なぜなら、>671は>672だったからなのだ。

674 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 10:00:36 ]
UV値を入れずにポリゴンを書くとテクスチャを指定しても表示されないんだけど
大きさを可変にしたいからタイルパターンでテクスチャを貼り付けたい時はどうすればいいの?

675 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 10:03:27 ]
そういうふうにUVを指定しろ

676 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:30:35 ]
>674
テクスチャ画像を作る段階でタイルパターンの画像にしておけば良いのでは?

677 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:36:42 ]
シェーダー使えば可能だろ

678 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 17:51:34 ]
いろいろあるよ

679 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:17:51 ]
2Dを扱う場合、高速で描画できる方法を教えてください。

一応自分なりに調べて、描画をさせてみたのですが
DXライブラリというライブラリを使った場合と比べるとかなり差が出てしまい
原因を探しています。

描画方法は、頂点バッファを使いDrawPrimitiveで画像を1つずつ描写しています。
よろしくお願いします。


680 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:26:04 ]
頂点バッファを使い1回のDrawPrimitiveで全部の画像を描画すると速いと思うよ
必要な絵全部を1枚のテクスチャに詰め込んでおくと良い



681 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 18:44:55 ]
>>頂点バッファを使い1回のDrawPrimitiveで全部の画像を描画すると速いと思うよ
このやりかたが分からず…方法の載っているサイトなどありましたらおねがいします。
DirectXによる2Dゲーム制作サイトなど見たのですが、1フレーム分描画するのに何度もDrawPrimitiveしているものばかりでした

682 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:00:41 ]
画像数×6個の頂点が入る大きさの頂点バッファを作って、
全部の頂点を書き込んで、DrawPrimitiveするだけ

683 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:15:58 ]
頂点バッファを一つにまとめて、テクスチャも一つにし
それを一度にDrawPrimitiveすればいいってことですよね…

つまりDrawPrimitiveの呼び出し回数が描画速度に関わってるって
ことですか…


複数のテクスチャを扱っているので、できるだけ呼び出し回数を減らしてみます。

684 名前:デフォルトの名無しさん mailto:sage [2009/08/04(火) 19:25:00 ]
>>683
↓まだ読んでないなら、読んでおくといい
msdn.microsoft.com/ja-jp/library/bb147263(VS.85).aspx

685 名前:684 mailto:sage [2009/08/04(火) 19:47:36 ]
>>684
ありがとうございます。複数のテクスチャを扱うときは
グループ化すれば、描写速度があがるんですね。非常に勉強になりました。

686 名前:683 mailto:sage [2009/08/04(火) 19:51:33 ]
>>685は名前ミスです。
早速、現状と比べてきます。

687 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 01:40:39 ]
表示中のモデルに直接色を塗りたいんだけど
爆発で黒く焦げたりとかしたい
決まった場所じゃないし、同じモデルがいっぱいあるから
テクスチャをいじるわけにもいかないし
どうすればいいんですか?

688 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 05:35:12 ]
頂点カラーを使うとか

689 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 07:36:02 ]
マルチテクスチャで加工用のを重ねる。
洋ゲーでキャラを血まみれにするので使ってた実例もなんかあったはず

690 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 09:51:18 ]
質問です。
>>684でもあがっているこの最適化ページに
>できるだけ正方形テクスチャーを使用します。ディメンジョンが 256 × 256 のテクスチャーが最速です
とあるのですが、
今までパーティクルに使うテクスチャは32x32くらいのなるべく小さいものにしていました。
もしかして256x256のほうが良いのでしょうか?



691 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:07:16 ]
色々な環境で実測してから言え

692 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:18:23 ]
32x32のテクスチャをたくさん使ってるなら256x256の1枚だけにまとめた方がいいかもしれないが、
32x32のテクスチャをひとつしか使ってないならそのままでよい

693 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 10:45:30 ]
>>691
お前何しにこのスレ来てんの?

694 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 11:06:40 ]
>>690
どうでもいいが、DirectXヘルプでよく出てくるこの「ディメンジョン」という訳が気持ち悪い。
dimensionの発音はディメンションだし、寸法という適切な日本語もあるのに。

695 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 11:56:10 ]
>>694
昔、FORTRANの時代にSIONをTIONと間違わないためにあえてディメンジョンと言ってた名残かと

696 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 13:31:59 ]
ディメンジョンが何を指しているのかもよくわからんしな。

>できるだけ正方形テクスチャーを使用します。ディメンジョンが 256 × 256 のテクスチャーが最速です
画像サイズが。という意味でいいんだろうかw
X軸とY軸のことをディメンジョンと呼んでいるような気はするんだがw

697 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 13:36:26 ]
>>696
>>694 がいってる、寸法っていうのがしっくり来るな。

698 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 13:48:54 ]
日本人にとってはdimensionというと数学用語の「次元」のほうが馴染みがあるけど、
英和辞典で最初に出てくるのは「寸法」だね。

699 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 13:49:46 ]
訳した人がよくわからなかっただけじゃねえの?

700 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 15:30:30 ]
マイクロソフトの翻訳が糞なのは仕様
surfaceの正確な発音はサーフィスだけど
サーフェイスと書いてあったり



701 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 15:33:21 ]
それって翻訳なのか?

702 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 15:44:19 ]
>>700
まあまあ。最近は歴史学でも用語発音の厳密化の流れはあるけど、
『サーフェイス』か『サーフェス』、『サーフィス』かというのは和製英語のレベルだよ。
(両方でググると引っかかる結果が違って興味深い)

英語的に考えると『サー』の部分も『フィ』の部分もむかつき音だから
「セーフェス」のほうがむしろ近いわけだが、読んでも意味がわからなくなる。

個人的にはサーフェスくらいかな。でもサーフェイスで覚えてしまってる。

703 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 16:11:46 ]
"むかつき音"の検索結果 2 件
www.google.co.jp/search?q=%22%E3%82%80%E3%81%8B%E3%81%A4%E3%81%8D%E9%9F%B3%22

704 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 16:19:28 ]
そもそもMSDNの翻訳って、機械翻訳じゃなかったっけ?

705 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 16:25:06 ]
MSの機械翻訳はそこまで優秀じゃないよ
少なくともDirectX部分に関してはMSKKの川西さんが最終的な監修をしているはず

706 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 17:02:58 ]
やってる奴が、有能か無能か、業務か無料奉仕かなんて関係無く
機械翻訳にしか見え無いとは酷い話だ

707 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 17:05:05 ]
くだらねえ

708 名前:デフォルトの名無しさん mailto:sage [2009/08/05(水) 20:52:40 ]
初心者のばかな言動を叱り付けると爽やかな気持ちでプログラミングに励むことができます

709 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 14:46:35 ]
RPG風なダメージを表現しようとして敵が表示されているときのみ数字を表示って考えてるんだが
if D3DXVec3Dot( &敵, &カメラ )>0
ってやるとカメラを回転させたときに数字が出ずに困ってる。
方向ベクトルの符号を変えればよいっぽいんだが変えるタイミングがわからない。

710 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 15:17:27 ]
数字の表示を独立するんじゃなくて
敵の表示処理のときに一緒に処理すればいいんじゃないの?




711 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 15:45:35 ]
質問させて下さい。
固定機能パイプラインのディフューズ、インデックスバッファを使用して
描画しているのですが、頂点に設定した色で面の色は補間されてしまいます。
頂点毎の色ではなくて面毎に色を設定したい場合は頂点シェーダを
使用するしかないのでしょうか?

712 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 16:02:59 ]
>>711
D3DRS_SHADEMODEをD3DSHADE_FLATにすると、最初の頂点の色で
面が塗られる。

713 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 16:17:44 ]
>>712
ぬおおお!!本当だ!!知らなかった!!
本にも載ってなかった、ありがとうございます!!

714 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 17:26:22 ]
その本を捨てるか
俺のチンコをしゃぶるか
選べ

715 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 08:52:57 ]
>>714 氏ね
プリミティブ数より頂点数が少ない場合、
(インデックスバッファを使用して頂点を共有しまくってる場合)
どうすればいいんですかね?
こういう場合はFLATでのシェーディングは不可能という事ですか。

716 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 10:34:40 ]
>>715
そんなにFLATにこだわるならポリゴンごとに頂点を分割したらいいんじゃないの?
何をそんなにこだわってるんだか。

717 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 10:51:09 ]
>>716
こだわってるはモデラー的なものを作りいんですよ。
モデラーってスムージング角度を指定して、FLATかスムースになりますよね。
頂点数がどれくらい多くなるか分からないので、
効率考えてインデックスバッファは使いたいんですが、
今のやり方ではDirectXの仕様的に無理そうな感じですね。

718 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 10:52:02 ]
面ごとの色を決めて描画という方法は無い。
少なくとも頂点カラーは使えない。

やるならマテリアルわけするしかあるまい。
俺も昔OpenGLで同じことをやりたくて探したが、OpenGLにもDirect3Dにもなかった。
頂点カラーならぬ、面カラーがあるに違いないと思っていたが、幻想だったよ。

719 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:03:07 ]
質問です。

テクスチャに対して、マルチサンプリングを行っての描画をしたいのですが、可能でしょうか?

以下のことは調べました。
・CreateTextureしたテクスチャからGetSurfaceLevelし、それをSetRenderTargetして描画
マルチサンプリングは効きませんが、描画がちゃんとできるのを確認しました。

・CreateRenderTarget したサーフェイスをSetRenderTargetして描画
描画後、LockRectなどで描画が確かに行われているこを確認しました。
マルチサンプリングも効いています。


後者で描画した後、LockRectして手に入れた内容を、テクスチャーに転送する。
という手段でとりあえずは可能なのですが、いかにも周り道です。
ダイレクトにテクスチャにマルチサンプリング描画を行うにはどうしたらよいのでしょうか?

720 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 11:03:58 ]
シェーダーを使えば可能



721 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 12:32:00 ]
>>718
そうなんですかorz
ありがとうございました。

722 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:33:45 ]
>>718
>>720
当然じゃないか。
3Dの基本単位は頂点なのであって、
3つの頂点の配置からポリゴンの位置・大きさ・向きを判定するんだ。
面が先にあるわけじゃない。

723 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:47:35 ]
別に当然ではないだろう。
どうせ描画時には面単位で描画していくのだから。
DrawPrimitiveの引数だって、頂点数じゃなくて「プリミティブ数」じゃないか。

724 名前:デフォルトの名無しさん [2009/08/07(金) 23:47:44 ]
DirectSoundってボリューム増幅させることできます?
IDirectSoundBuffer8::SetVolumeは増幅はサポートしてないって書いてあるけど

725 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:44:07 ]
アプリケーションのデフォルトを50%相当の音量にすればよい。


726 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:39:50 ]
ウィンドウモードで画面サイズが変わったらバッファをリセットするんだけど
テクスチャとバーテックスバッファを登録した状態でResetを呼び出すと失敗するんだけど
全部ReleaseしてResetして再登録しろってこと?

727 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:41:59 ]
D3DPOOL_DEFAULTは全て


728 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:50:58 ]
なるほど

729 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:40:06 ]
いつもテクスチャはD3DPOOL_MANAGEDしか使わないんだが、
RenderTargetに指定できない以外は別に問題ないよな?

730 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:47:48 ]
問題ない



731 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:51:41 ]
D3DPOOL_MANAGEDに変えたらテクスチャが真っ赤になったんだが
どういうこと?

732 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:54:16 ]
これまで初期化を怠ってきたから環境依存してる

733 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:52:12 ]
LPDIRECT3DTEXTURE9 pTex;
HRESULT hr;
hr = D3DXCreateTexture(dev, img.GetWidth(), img.GetHeight(), 1,
0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &pTex);


D3DLOCKED_RECT pLockedRect;
hr = (*pTex).LockRect(0, &pLockedRect, NULL, D3DLOCK_DISCARD);

unsigned char *dest = (unsigned char*)pLockedRect.pBits;
unsigned char *src = img.GetData(); <- imgはRGBの24bit画像データが入ったクラス

int j;
int dest_pos=0;
int src_pos=0;
for(j=0;j<img.GetWidth() * img.GetHeight();j++){
dest[dest_pos] = src[src_pos+2];
dest[dest_pos+1] = src[src_pos+1];
dest[dest_pos+2] = src[src_pos];
dest[dest_pos+3] = 0xff;
}
dest_pos+=4;
src_pos+=3;
}

hr = (*pTex).UnlockRect(0);



734 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:54:32 ]
dest[dest_pos] = src[src_pos+2];
dest[dest_pos+1] = 0xff;
dest[dest_pos+2] = 0xff;
dest[dest_pos+3] = 0xff;
こうすると真っ白

dest[dest_pos] = src[src_pos+2];
dest[dest_pos+1] = 0xff;
dest[dest_pos+2] = src[src_pos];
dest[dest_pos+3] = 0xff;
こうすると紫

dest[dest_pos] = src[src_pos+2];
dest[dest_pos+1] = src[src_pos+1];
dest[dest_pos+2] = 0xff;
dest[dest_pos+3] = 0xff;
こうすると水色

dest[dest_pos] = src[src_pos+2];
dest[dest_pos+1] = src[src_pos+1];
dest[dest_pos+2] = src[src_pos];
dest[dest_pos+3] = 0xff;
これで青

どういうこと?まじで分からない

735 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:08:18 ]
srcの中身なんだかわかんねーしよ
それはそうと、D3DFMT_A8R8G8B8であればdestのオフセットは 0=B 1=G 2=R 3=A

736 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:20:35 ]
というか、あれだけ優秀なD3DXライブラリを使わない理由がわからない。

737 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:33:14 ]
せめてビットシフトのマクロ作れよw
なんだその無様なコードは

738 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:35:24 ]
原因判明 UV座標が狂ってたw

739 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:37:15 ]
>>736
モデルファイルのコンバーターを作ってるから専用のライブラリで統合してるんだ

740 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:39:31 ]
>>737
別に無様とは思わないが?



741 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:11:40 ]
ポリゴンが透けてしまう原因として何が考えられますか・・・?
アバウトな質問ですいません。

742 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:16:01 ]
アルファブレンドの値や設定が透過するようになってるとか?

743 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:33:09 ]
>>742
アルファブレンドは使っていないんです。

744 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:53:23 ]
>>741
われわれはエスパーではないのでそんなアバウトな説明では何もわかりません。


745 名前:741 mailto:sage [2009/08/09(日) 14:58:32 ]
透けてしまうというか奥にあるはずのポリゴンが
手前に表示されてしまうという現象です。
頂点座標は間違っていないので、何故かまったく分からないです。
同じ現象にあった方が居たらと思いまして質問しました。

746 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 15:08:36 ]
Zバッファおかしんじゃね

747 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:22:23 ]
>>745
Zバッファが有効になってないと、前後関係無く最前面に描画されてそうなる。

748 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:17:40 ]
>>746
>>747
ご指摘の通りでした、zバッファ有効になってなかったです。
原因は視錐台の前面をゼロにしていました。
過去ログ見れば一発でしたね、お手数お掛けました。

749 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 23:27:48 ]
ライトがXファイルによって反映されるのとされないのがあるのはなぜですか?
アンビエントはかかるんですが・・・

750 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 23:29:03 ]
マテリアル関係かな



751 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 09:45:58 ]
法線がないんじゃあるまいか?
確かデフォルトだとオートノーマライズもOFFだし、初心者ひっかかりやすいよね

752 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:09:07 ]
それでした
ずっとアンビエントでやってたから気が付かなかった・・・






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<251KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef