[表示 : 全て 最新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/

589 名前:デフォルトの名無しさん [2009/07/28(火) 13:39:16 ]
>>583
D3DXGetFVFVertexSize( mesh.pmesh->GetFVF() );

として取得したところ、返された数値は12でした。
ですので12byteと判断しているのですが……。
もし不都合があれば教えてください。

よろしくお願いします。

590 名前:584 mailto:sage [2009/07/28(火) 13:50:35 ]
ttp://marupeke296.com/DXG_CreateBorad.html
ttp://marupeke296.com/DXGSmp_No2_2DPoly.html
座標変換済み頂点は、ここの内容を見てます。

>>585
つまり結局は同じ処理をしているという事ですか…


>>586
>通常の頂点バッファ(Position)を使うことを考えた方がいい
通常の…ですか。勉強不足で通常というのがよく分らないのですが
上記のURLにあるコードのような使い方をする場合
「小さなチップを大量に描画」というのは不向きなのでしょうか?


591 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 14:04:27 ]
流体力学研究所とかいうとこを参照してみては?

592 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 15:10:47 ]
>>589
途中から?それって頂点データを超えて取得してるんじゃないの?
GetNumFacesとかGetNumVertices使ってる?

593 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 17:51:19 ]
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
       |                    |
       |                    |
       /    ̄ ̄ ̄ ̄      /_____
       /   また旅に出ます  /ヽ__//
     /               /  /   /
     /  探さないで下さい  /  /   /
    /   ____     /  /   /
   /             /  /   /
 /     光 圀    /    /   /
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/   /   /
のパターンじゃないんだな


594 名前:デフォルトの名無しさん [2009/07/28(火) 21:15:24 ]
>>592
使用している部分について、ソースをアップしました。
www1.axfc.net/uploader/Sc/so/22044

もしよろしければ、ソースをダウンロードしていただいて
見てもらってよろしいでしょうか?

GetNumFaces、GetNumVerticesは、一応数値は取得していますが
実際のところどのようにしてポリゴンとして頂点が格納されているのかが
まだ分かっていません。

595 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 02:52:06 ]
pvertex + fvfsize
らめぇぇぇぇぇ

596 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 02:55:49 ]
あれ?そこだめなの?
俺は
v1=*(D3DXVECTOR3*)(pointVert+FVFSIZE*(indexp[0]));
v2=*(D3DXVECTOR3*)(pointVert+FVFSIZE*(indexp[1]));
v3=*(D3DXVECTOR3*)(pointVert+FVFSIZE*(indexp[2]));
ってやってるけど問題ないぞ

597 名前:594 [2009/07/29(水) 03:29:12 ]
>>595
試しに
pvertex[*(pindex+i)];と配列でアクセスしたら幸せになりました。
理由はわかりません。

今回わかったことは、頂点バッファ内に「三角形ポリゴン数×3」個の頂点が格納されているわけではないので
インデックスバッファも使ってアクセスしないときちんと読み取れないということでした。
凸凹の大きいモデルを使った場合、ポリゴンの読み間違いが起こると、Hitが抜けなかったり、
本来あるはずない場所でHitが出たりなどという現象が起こるのは当然でしょう。

しかし、今回の問題は読み込んだ数値自体がおかしくなっていたことでした。
明らかにストライドの量がおかしかったんだと思いますが、何が理由かよくわかりません。

>>596
私の環境でも結果は駄目でした。
突き抜けた穴のあいたポリゴンを使用してテストしていますが、
途中でHitが出てしまいます。


本当に助かりました。
協力してくださった方、ありがとうございました。



598 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 03:30:46 ]
(pvertex + 0) の次の頂点は (pvertex + 1)なんだぜ

599 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 03:38:42 ]
poly.v[0] = *(Point3D*)((BYTE*)pvertex + fvfsize*(*(pindex+i-2)));
poly.v[1] = *(Point3D*)((BYTE*)pvertex + fvfsize*(*(pindex+i-1)));
poly.v[2] = *(Point3D*)((BYTE*)pvertex + fvfsize*(*(pindex+i-0)));
こうするか、
もしくは最初からpvertexをBYTE*で宣言すればOK

600 名前:594 [2009/07/29(水) 03:50:17 ]
>>599
動作確認出来ました。
pvertexがD3DXVECTOR3*型だったから駄目だったんですね。
ポインタのアドレスって、どんな型であろうと変わらないかと思っていました。
ポインタのアドレスを弄るときはchar*なわけですね。

すごく助かりました。
今度C言語の参考書よみなおします。

601 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 02:17:57 ]
初心的質問ですみません。
DirectXを使っているプログラム内でwavを再生させるにはどうすればよいのでしょうか?
ほとんどのところでdmusici.hを使えとなっているのですが、ヘッダーをインクルードしても見あたらないというので調べたところ廃止(?)になったとかで書かれていて
いくつか調べたのですが、ほとんどのところがdmusici.hを使ってでのやり方なので、解らずじまいです。
現在の再生方法をおしえていただけないでしょうか?

602 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 02:21:17 ]
おとなしくDirectSoundを使ったほうがいい


603 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 02:57:27 ]
普通にXAudio2使えよ

604 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 10:26:20 ]
XBox360の市場が壊滅状態でもXAudio2はヤバくないんですか?

605 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 11:15:28 ]
実際のところ、X〜〜 ってどうなんでしょう。
XAudio2って言うほどまともとは思えないんですが。

606 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 12:12:44 ]
失礼します。
directx_mar2009_redist.exeをCドライブにインスコしようとするのですが、
必ず半分ぐらい進んだところでゲージが巻き戻り、結局右端までたどり着かず
途中で終了してしまうのです。一体どういうことなのでしょうか

607 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 13:14:58 ]
炎や爆発、煙などのエフェクトをビルボードを大量に出して
描画しようと思っているのですが、どうすれば高速に描画できますか。





608 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:09:40 ]
現状のエフェクトでどんな処理をやっているのかが分からないので、
より高速な方法について答えようにも答えることができません。

609 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:38:19 ]
大量に出すのをやめる

610 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:43:31 ]
より高速かどうかは置いといて、
最も早いと思われる描画方法を教えてください。




611 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:44:56 ]
マジレスすると
視錐台クリップが最重要だな
次にその中に入ってしまったものをまとめて描画だな
あらかじめDrawPrimitiveにぶち込んでしまうとクリッピングされないから
ある程度の塊でおおざっぱな判定でもするといいよ

なんにせよクリップ方法が最重要
これでしっかり省けば余計な最適化いらない場合のが多いよ

612 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 15:46:35 ]
>>610
それはいつでもどこもでネタでもなんでもなく「描画しない」ってのが最速

613 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:00:32 ]
>>611
まとめて描画とは、Zsortをして
板ポリ(2ポリ4頂点)×出す量 を毎フレーム描画
ということですか?


>>612
描画しなかったら私のも速くなります。
しかしビルボードをたくさん描画すると重くなるのです。

614 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:31:13 ]
やめろよ
また不毛な議論が始まるぞ

せめてどうやってるのかも書かない奴に
答えてどうする

615 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:53:11 ]
>>614
カメラ空間でのZ値でZsortして、板ポリ一個一個毎フレーム

逆行列作る
worldViewProjectionMatrix作る
effect->SetMatrix
でセットし

effect->setTechnique
effect->Begin
effect->BeginPass
effect->setTexture
effect->CommitChanges

ここでdeclarationをセットし
DrawIndexedPrimitive((D3DPT_TRIANGLELIST....);
effect->EndPass
effect->end

と普通にやっています。

616 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 16:57:07 ]
>>613
その前にクリッピングそれができないなら気にしなくていい

617 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:11:27 ]
>>616
そうですか、今回作るゲームが引いた視点なので
結構、というかほとんど視錐台に入るんですよね…



618 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:23:29 ]
特殊な条件、爆発の煙や湿原の霧でパーティクルが数百個くらい普通に出てるような状況。
ポリゴンを自前で座標変換後したあとにバッファにためておいて、バケツソートで数個のブロックに分けて描画とか。


619 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 17:42:07 ]
>>618
>ポリゴンを自前で座標変換後したあとにバッファにためておいて、
>バケツソートで数個のブロックに分けて描画とか。

ちょっと良く分からなかったのですが、
座標変換は存在するすべてのビルボードパーティクルに対して行い(頂点座標を書き換えるのでなくてワールド座標)
それらビルボード一枚一枚をzソートするクラスに溜めています。
そしてzソートし、一気に一枚一枚描画しています。

ブロックごとに分けて描画するとなると
ブロック内のz値の順番はうまくいきますが
ブロックごとのz値の順番がおかしくなりませんか?

620 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:01:08 ]
ソートした後で分割

621 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:29:54 ]
>>620
分割する意味がわかりません

622 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:40:22 ]
もしかしてポリゴン1枚づつDrawPrimitveしてるの

623 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:51:59 ]
そうです。

624 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 18:58:04 ]
そりゃないわ。
炎を100個のビルボで表現しているとするなら、その100個は1回のDrawPrimitiveで描画してしまいなさい。

ところで、加算合成なら前後関係をソートする必要がないのは知ってるか?

半透明にしても、ソートがてきとーでも、そうそうばれないからあまり気にするな。
炎単位でソートするくらいで十分。ビルボ1つ単位でソートしてたらすさまじいことになっちまうぜ。

625 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:17:12 ]
>>624
>炎を100個のビルボで表現しているとするなら、その100個は1回のDrawPrimitiveで描画してしまいなさい。

いったいどうやるんですか?
頂点バッファに全ビルボードの移動後の頂点を入れておくとかですか?

そうだとすると、フレームによってビルボードの数が変わるので
毎フレーム頂点バッファを作りなおさなくてはいけなくなりませんか?

全加算なら単純に足すだけですから、炎とかならいいと思いますが
ミサイルなどの手前から奥に飛んでいく煙を表現する場合の線形合成は(今回使います)
ソートは必須です。

しかもいくつもミサイルが飛んでいる場合それらの煙単位でソートしては
煙1と煙2が重なった場合板ポリの輪郭が見えてしまいます。
なので煙全部でソートしないとうまくいかないんです。

626 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:22:06 ]
ここで以前DrawPrimitiveUPや動的頂点バッファの話をしてたが、
まさに枚フレーム書き換えるような頂点のためだよ


627 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:25:30 ]
>>625
>頂点バッファに全ビルボードの移動後の頂点を入れておくとかですか?
それでOK。
頂点バッファを毎フレーム「作り直す」のはつらいので、500ビルボード分作る。
MSのヘルプによると、一回のDrawPrimitiveでは1000ポリくらいが適切だということなので、ビルボは三角形二つだから500ビルボード分ね。

ミサイルの煙を半透明でやるのね。OK。
「気にすんな」でOK
とりあえず試してみ。前後関係が狂っててもまったく気にならないから。
「気にならない」正確さより、「気になる」処理落ちを防ぐのを優先。

>煙1と煙2が重なった場合板ポリの輪郭が見えてしまいます。
半透明の物体を描くときは、Zバッファへの書き込みをOFFにするべき。
そうすればこの現象は起きないよ




628 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:28:30 ]
>頂点バッファを毎フレーム「作り直す」のはつらいので、500ビルボード分作る。

500ビルボード分の大きさで作る。のほうがわかりやすかったね。補足。
描画するたびに中身を書き換えて使うべし。
ロックする際D3DLOCK_DISCARDを指定すれば、ロック待ちも発生しないので早いぞ。

629 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:33:42 ]
>>626
毎フレーム書き換えるのは頂点バッファをLock,UnLockして書き換えるより
頂点シェーダでやったほうが高速だと思ってたので、すべて頂点シェーダでやっています。

それはスキンメッシュのスキニングをシェーダでやったほうが
何倍も高速だったのでそう思っています。

DrawIndexedPrimitiveを何回も呼ぶより
バッファ作ってLockして書き換えたほうが速いということですか?

上のほうで言ってたことは
結局はDrawIndexedPrimitiveもUPも大して速度は変わらないという結論ですよね。


630 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:43:28 ]
>DrawIndexedPrimitiveを何回も呼ぶより
>バッファ作ってLockして書き換えたほうが速いということですか?

書き換えたほうが速い。
というのも、DrawIndexedPrimitiveの呼び出しオーバーヘッドは遅いので。

頂点シェーダでやると高速化するのは確かにそうだが、やるなら281法をやることになる。
確かにID3DXEffect::SetVectorArray()で座標情報を渡すのが大抵のグラボで最速。

ただ、定数レジスタの数の制限を考えるに1回につき250ビルボ程度しか描画できない。
あとは場合によりベターな方法は変わる。
まとめて描画する単位が250ビルボ以下ならこちらでいいと思われ。


631 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:50:21 ]
固定的な頂点バッファとは別に、毎フレーム書き換わるデータ向けの動的頂点バッファがあるの。
その違いを分かってないから、スキンメッシュとの比較検証も、効率悪いやり方でやった場合の結果にすぎない。

632 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 19:59:06 ]
>>630
複数の頂点情報ストリームを登録しておいて、片側を毎回書き換えるという方法が考えられるな。
(で、VertexShaderで合算する)
計算がいくらか楽になるかもしれない。どれくらい速度が変わるかは試してみないと分からないけど。

633 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:02:57 ]
とりあえず、281法含めて色々実測した身としては、
UPだろうがUPじゃなかろうが、頂点シェーダを使う方法だろうが

「沢山のビルボードを、まとめて一回のDrawIndexedPrimitive*で描画する」という基本を守っている限り、
速度誤差は0.1%にも満たないということだ。

小難しいことを考えるが面倒なら、DrawIndexedPrimitiveUP使っておくといいよ。
(レガシー関数だから嫌というこだわりがなければ。ね)
本気で速度の差はほっっっっっとんどでないから。

まぁ、流石マイクロソフト。DrawIndexedPrimitiveUPの中身もちゃんと最適化されてるんだなといったところ。

634 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:11:38 ]
>>627
>一回のDrawPrimitiveでは1000ポリくらいが適切
それは知りませんでした。

>半透明の物体を描くときは、Zバッファへの書き込みをOFFにするべき。
>そうすればこの現象は起きないよ
そうですよね、なるほど!

>>630
>書き換えたほうが速い。
>というのも、DrawIndexedPrimitiveの呼び出しオーバーヘッドは遅いので。
そうなのですか。

>>631
Lockして書き込む際のD3DLOCKの種類のことですよね?
ここはよくわかっていませんでした。
D3DLOCK_NOSYSLOCKを指定していました。
Lockの際に、D3DLOCK_DISCARDを指定すれば動的頂点バッファになるということですね。
CreateVertexBufferの第二引数はD3DUSAGE_WRITEONLYでOKですか?

いろいろやり方が見えてきたので早速試してみたいと思います。
ありがとうございました。

635 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 20:55:13 ]
WRITEONLYが適切。
だけどこのスレで「間違えて読み込みしてて、性能だだ落ちしてた」ってのが実例としてあったから気をつけるこった。

636 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:10:38 ]
質問です。
2D描画時のテクスチャー矩形転送のお約束として、
転送先座標を-0.5fするというのがありますよね。

あれの意義はわかりますし、そうやっているので普段は良いのですが、
拡大転送する際「テクスチャーの参照の際、隣のドットの色が影響してしまう」現象が起きるようです。
これを回避する方法はないでしょうか?

LINEARを使わず、NEARPOINTでやればいいのでしょうが、拡大の粗が見えてしまいますので・・・。

637 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:19:08 ]
一枚のテクスチャの中で別パーツと混ざるのが嫌なケース?
そりゃ周囲には1ピクセルずつ余白を置くとかじゃね。

昔の2Dゲームのような32x32のチップをぎっしり敷き詰められたデータなら、諦めるか、34x34で置き直すとか。





638 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:36:52 ]
はい、そのケースです。
やっぱり余白しかないですか・・・。

縮小ならわかるのですが、拡大でも周りを参照しちゃうのがちょっと納得いかないところなんですが・・・

639 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:39:12 ]
状況が許すなら、まず拡大しないブリットでチップを
レンダーターゲットのテクスチャに敷き詰めて
そのテクスチャを拡大するって手はある


640 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 21:46:51 ]
>転送先座標を-0.5fするというのがありますよね。
そのやり方は正しいと思えないんだが。
むしろUVを半ピクセルずらすのが正しいやり方だろ?
UVをそのままで表示座標を変えてごまかしたりするから、表示倍率を変えると狂っちゃうわけで。
UVマッピングの詳細はMSDNにちゃんと書いてあるので確認すること。
ちゃんとやったらチップを画面いっぱいに並べようが拡大しようが、ずれたりすることはないよ。
現に手元で動いてる。

641 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:03:18 ]
>>640
0.5ずらすのは

「バイリニアフィルタを適用している時に」
「頂点座標をスクリーン座標に直接マッピングすると」

ピクセルがテクセルの中心にマッピングしてしまい、拡大してなくてもぼやけてしまうのを防ぐためでしょ。
だから表示倍率を変えると云々はそもそも文脈としておかしいんだが。

642 名前:641 mailto:sage [2009/08/01(土) 22:06:18 ]
うん、俺の文もおかしい。

x テクセルの中心
o 4テクセルの中心

643 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:16:46 ]
>>641-642
オレの言ってることと君の言ってることはほとんど同じような気がするんだが、どうだろうか。
当倍表示の場合は636でも640でもいいが、拡大表示したら636ではおかしくなる。
そういうことだろ?

というか、そんな細かい処理をするときはフィルタはNoneにしたほうがいいと思うんだが。
拡大・縮小はきたなくなるけどな!

644 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 22:20:30 ]
>>640
一応
ttp://msdn.microsoft.com/ja-jp/library/bb219690(VS.85).aspx
これには目を通しています
これでも、ほかのサイトでも、転送先座標を + xy(-0.5f, -0.5f) するように思えます

640さんの方法は、拡大しても隣の色を巻き込んだりしないのでしょうか?
一応「座標はそのままに、UVを半ピクセルプラスする」方法でもやってみましたが、やはり拡大時には隣の色を巻き込んでしまうようです。

645 名前:641 mailto:sage [2009/08/01(土) 22:29:42 ]
>>643
拡大するとおかしくなるんじゃなくて隣の色を拾うんだから
アルゴリズム上は正確な挙動だよ。
てゆーか言ってるのはテクスチャ座標を0.5テクセル分ずらす方法だよね?
言い忘れてたけど、その方法だと拡大はせずに反転した時に
完全なミラーにならずに一ピクセル分表示がずれちゃうよ。

そっち方法で隣の色を巻き込まないってのは、うーん、
手元で試せないので「そんな馬鹿な」としか言いようが・・・

646 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 23:11:12 ]
FFT式に回転させるとそんな苦労も水の泡だぜ

647 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 23:29:58 ]
周りからそんなに反論されると、なんか自分も自信がなくなってきた。

まあそれはともかくとして、
表示を10倍くらいに拡大すると、もはや直角二等辺三角形2つを並べたテクスチャの斜めの辺の挙動が無視できなくなるな。
大体10x10にならんでるけどところどころ9になったり11になったりする。
それに斜めにずれているところがあることに気づく。ちょうどポリゴンを斜めに並べたところだ。

なんだかどうにもならないことのような気がしてくる。
頂点を共有せずに微妙に1ピクセル分ずらしたりの調整が必要になってくるのかも。



648 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 00:21:13 ]
とりあえず軽く実験してみたが、
転送先スクリーン座標を-0.5f, -0.5f しただけでは、拡大転送時に周りの1ドットの影響を受けてしまうな

649 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 00:33:43 ]
>>648
そうだなぁ。例えば10倍拡大したときは0.1f、0.1fくらいでちょうどいいようだ。
微妙に9倍や11倍されてるピクセルがあるようだが、
こんなに拡大されたCGを凝視するようなことはないだろうから実用上は問題ないだろう。

2D表示における倍率に指定すべきUVオフセットが影響を受けるのかもしれない。
しかしGPUの機種の差異もありそうだしなぁ。

650 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 14:36:23 ]
>>641が言っているように、0.5ずらしは
本現象とは何の関係もない。

D3DTEXF_LINEARが、2x2エリアをサンプルするのが原因。
一応、UV座標を半テクセル分内側にずらすことで回避出来る。

float texture_width = 512;
float texture_height = 512;
float wh = 1.0/(texture_width*2);
float hh = 1.0/(texture_height*2);
float uv_quad = { u0 + wh, v0 + hh, u1 - wh, v1 - hh };

ただし、ずらす分マップするエリアが狭まるので注意。

651 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 15:24:25 ]
状況や描画させ方によるので
唯一これが最速だという答えは出せません。

ゲーム、あるいはエンジンに合わせて最適化がそれぞれ必要です。

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 ]
それでした
ずっとアンビエントでやってたから気が付かなかった・・・

753 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:34:01 ]
オートノーマライズって何?

754 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:38:53 ]
glEnable(GL_NORMALIZE) のことでは

755 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:39:35 ]
ごめん、DirectXのスレだった・・・逝ってくる

756 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 17:08:21 ]
>>753
頂点の構成要素には、位置座標ベクトルや法線ベクトルがあるが
これらはレンダリングパイプライン通過時に、頂点変換行列によって変換される。
この頂点変換行列の内容によっては、法線ベクトルが単位長でなくなることもある。
パイプライン内のライティング処理は法線ベクトルを利用し計算を行うが、
そのとき法線ベクトルは単位長でないと正確な計算が出来ない。
よって、ライティング処理時、法線ベクトルを自動で正規化し単位長にするのがオートノーマライズ機能。

757 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 18:35:44 ]
なんだ左手系とかで面の向きが分かるから勝手に法線を生成してくれるのかと思った
自分で作らないとだめなのかな?



758 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 18:50:39 ]
頂点は複数の面で共有するケースもあるので、
法線を動的に生成するのは、重い割に得られるものが少ない。

759 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 19:21:48 ]
出来ると思うのなら、鋭角と鈍角が入り交じった立体から、
何の情報もなく法線を自動生成するプログラムを作ってみろ。

760 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 19:29:03 ]
何の情報も無かったら法線以前に描画出来ないだろw

761 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 19:33:49 ]
立体なんだから頂点情報があるのが前提だと想像できないのは、
プログラム云々以前だな。

762 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 19:36:20 ]
法線の生成なんて何十年も前から論文が何十本と出ていて、未だにコレという決定的な方法がない領域だからな。

763 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:24:55 ]
右回りになる方向のベクトルでいいんじゃないの?

764 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:47:33 ]
>>763
1つの頂点を共有する3つ以上のポリゴンの頂点における法線のことだろ?

765 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:53:10 ]
>>763
鈍角をどうやって認識するつもりなんだ?
体験版でもいいから、まともなモデリングソフトを使って勉強し直せ。

766 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 22:55:58 ]
球体を外積で出した法線で描画すればいかに間抜けなのかが分かるよ。

767 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 00:19:26 ]
話が噛み合ってないのか?
homepage1.nifty.com/t_kuji/3DCG_guide/normal_vector/normal_vector.html
こういうことじゃないの?



768 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 02:46:04 ]
包丁一本〜さらしに巻いて〜

769 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 09:35:29 ]
>>767
だからそれじゃ鈍角の法線が出ないんだよ。
かみ合っていない以前に、分かっていないのなら勉強し直せ。

770 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 09:39:28 ]
なんで鈍角が出ないかといえば、そこが鋭角なのか鈍角なのかを頂点座標だけでは判断できないから。

771 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:12:57 ]
鈍角の法線って何ですか?

772 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:14:51 ]
内積とれば鈍角か鋭角は判断できる。
でも鈍角だったら、なんなんだ?

773 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 10:55:42 ]
凹多角形の事でも言ってるんだろうか?

774 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 11:14:06 ]
出ないっていう奴が問題だして
出るって言ってる奴が解けば結論でる

775 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 11:57:10 ]
>>772
鈍角鋭角というのは角度の話じゃない。
法線を出すときに頂点座標だけでは、
周囲の頂点と平均をとるのかとらないのかが判断できないということだよ。

だから一般的な3Dフォーマットは、法線をデータとして含めるか、
頂点に対してスムージングをかけるか判断するための情報を入れるんだよ。

776 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 12:30:56 ]
1行目がわかりません
角度じゃない鈍角鋭角って何のことですか

777 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 12:51:49 ]
曲線のなす角と平面のなす角を言いたいんじゃないのか?



778 名前:デフォルトの名無しさん [2009/08/11(火) 13:07:02 ]
すいません、質問したいのですが、

現在外部ファイルを読み込みたくて
APIのGetOpenFileNameを使っているのですが
この関数を使った後だと何故か

D3DXCreateTextureFromFileEx や

D3DXLoadMeshHierarchyFromX が

失敗してしまうみたいなのですが原因が分かりません…。

779 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 13:22:57 ]
たぶんカレントディレクトリが変更されている

780 名前:デフォルトの名無しさん [2009/08/11(火) 13:27:29 ]
>>779
カレントディレクトリで検索してみたら
確かにGetOpenFileNameが成功するとディレクトリが変わってしまうそうですね。
恐らくこれが原因だと思います、ありがとうございました!

781 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 13:28:02 ]
現行のやつをカレントディレクトリに依存しないようにするのがいいけど、
とりあえず OFN_NOCHANGEDIR で試してみそ

782 名前:デフォルトの名無しさん [2009/08/11(火) 13:40:30 ]
>>781
ちゃんと動くようになりました!
ありがとうございます、昨日ここで1日詰まってたんで助かりました^^;

普段からフルパスで書いてるほうがいいんですかね・・・?
ほとんどの場合カレントディレクトリ前提でソース書いてましたが…

783 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 13:46:14 ]
>>782
別にいい悪いはないが、相対アクセスをするときには常にカレントディレクトリがどこかを把握しておく必要がある。

784 名前:デフォルトの名無しさん [2009/08/11(火) 13:49:25 ]
なるほど、たしかに相対する時はカレントディレクトリだとやりにくそうですね…
ありがとうございます、すごく参考になりました。

785 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 14:04:09 ]
>>784
老婆心ながら蛇足を描くと、
ゲームのようなデータファイルの多いソフトを開発する際は、相対アクセスの方が便利かもしれない。
VisualStudioのデバッグ時に作業ディレクトリを指定できるのでそこでカレントディレクトリを設定しておくと、
必要に応じて複数の動作環境を用意できる。
サンプルゲームが複数になってきたらそれで切り替えられる。

786 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 14:44:23 ]
Xファイルを別フォルダに入れて読み込んでも問題ないのに
テクスチャをXファイルと一緒に入れるとテクスチャだけ読み込まないのはなぜですか?

一応Xファイル内にはA.BMPのように書いて同じところにあるファイルを読むようにしているんですが・・・

787 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 15:04:19 ]
X-File内の画像のパスを画像ファイルのあるパスに設定しろ。
X-Fileを読み込むときに勝手にカレントディレクトリを移動してくれる訳じゃないぞ。



788 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 15:09:49 ]
やっぱりそれしかないですか・・・
わかりました

789 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 18:01:10 ]
やっぱりパス関連の面倒を見てくれるローダは、さっさと自分で作るべきだよな

790 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 18:04:54 ]
>>775
ようするにその角が丸みを帯びてるのか鋭いままなのかは計算では設定出来ないと言いたいのか?

791 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 18:11:54 ]
その通り

792 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 19:19:55 ]
どうでもいいが、頂点法線のスムージングの話で「鈍角」「鋭角」という用語を使うやつは初めて見た

793 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 19:52:30 ]
「どうでもいい」のにレスする意味が分からない

794 名前:641 mailto:sage [2009/08/11(火) 19:59:15 ]
なんにしろ、読み返してみれば鈍角さんがなんのことを言っているのかを
解明するだけの流れだったな。

795 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:08:11 ]
>>792
鈍角は90度を超える角で、鋭角は90度未満の角だよな、
小学校かどっかで習う範囲だと。

796 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:46:42 ]
だから誰もそんなことは問題にしてないんだって

797 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:53:36 ]
スムージングを使わずに単にポリゴン数を増やせばいいだけじゃん



798 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:55:37 ]
本当にそれでいいと思うのならそうすればいい。

799 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:42:40 ]
必要になったら実装すればいいだけで、大抵は平均化だけで十分。
というかデザイナとの相談だな。

800 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:54:41 ]
D3DXLoadMeshHierarchyFromX(

LPD3DXFRAME* ppFrameHeirarchy,
LPD3DXANIMATIONCONTROLLER* ppAnimController
この部分をXファイルじゃなくて計算で組み立てたいんだが
どっかに解説したサイトとかサンプルとかありませんかね?
この単語で検索すれば出てくるとかヒントでも

801 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:56:39 ]
平均化だけで十分って、立方体とかが悲しいことになるぞ。
相談も何も普通に法線を含めればいいだけの話だろ。

802 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:59:11 ]
>>800
自分でモデリングソフトのアニメーション部分を作るつもりなのか?
というかそれ以前にプログラム云々以前で、
アニメーションを作る工程をやったことがあるのか?

803 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 01:02:34 ]
>>802
モデリングソフトのようなものを作ってまして

804 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 01:10:48 ]
またお前か

805 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 02:07:36 ]
DirectXのプログラミングはすぐに次のバージョンに移れるものですか?
最近DIrectXを始めたばかり、というか 9 か 10 を勉強するかで悩んでいます。
現在使用しているPCがWindowsXPで10が扱えまないので9にしようと考えていたのですが、
今後新しいOSが普及して10以降が主流になったりすると置いてかれるような気がしまして。
そのPCも大分ガタが来たので10が対応しているPCに買い替えることも考えています。
今は10対応といえばvistaくらいでしょうが・・・
   

806 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 05:09:57 ]
FromX使わない方が勉強になるね
頂点情報をバイナリ化したりとか色々出来るようになるし


807 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 05:15:28 ]
>>805
10はシェーダ必須だから敷居が高め。
まず9をFVF使用で書けるようになってから、9のシェーダ、10のシェーダと行くのが比較的平坦な道のりだと思う。
多分言ってる意味分かんないと思うけど要するに9のチュートリアルから始めていいんじゃないかなということだ。



808 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 08:52:28 ]
Easy Link Libraryの他にdirectx用のライブラリってありますか?

809 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 08:56:42 ]
たくさんある。

810 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 09:07:07 ]
9でやった方が楽。
10は抽象化されていて、慣れてないと途方に暮れる。
10を改造して11にするのは難しくはなさそう。
製品を売るなら9。
趣味のライブラリなら、9&10共用。将来は10を捨てて9&11でもいい。


811 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 09:30:14 ]
将来を見据えるなら11オンリーだろw
Windows7が出てしばらくすればさすがにXPはかなり数が減るし
その頃にはDirectX9世代のビデオカードなんて淘汰されてるよ。
現状でさえ3世代前の代物なんだから。

812 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 09:40:05 ]
11は今日からプログラムに取り掛かれない

813 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 11:20:14 ]
>>811
>Windows7が出てしばらくすればさすがにXPはかなり数が減るし
そうかな?

814 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 11:24:58 ]
自分が必要だと思う環境でプログラムを組めばいい。
他人に対してどうこう言う問題じゃない。
この分野の人間は自分がやっていることを他人に押しつけたがる者が少なからずいるが、
それは誰のためにもならない。

815 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 11:32:41 ]
DirectX9
・情報が豊富
・今からでもプログラム可能
・ゲーム作って配布するとしても、流石にDirect9対応必須をうたっていいと思う

DirectX10
・情報そこそこ
・Vistaなら今からでもプログラム可能
・ゲームなどを売るにはつらい(XPユーザーが多いから)

DirectX11
・情報少ない
・将来的に主流になりそう
・今からプログラムするのは困難

とりあえず9で勉強して、おいおい必要に応じてうつればいいかと

816 名前:805 mailto:sage [2009/08/12(水) 11:54:56 ]
レスありがとうございます。今は9で勉強しておくことにします。

817 名前:デフォルトの名無しさん [2009/08/12(水) 11:59:13 ]
おまいらってやたら詳しいけど、趣味なの?本職なの?



818 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 12:51:59 ]
うるせえ黙れ

819 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:29:21 ]
こんなマッチョじゃ感情移入できない
アドルは永遠の優しい夢見る少年だろう
どうみても童貞じゃないし


820 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:33:17 ]
>>813
いずれにしろDirectX10やDirectX11対応のゲームが増えてくれば
Vistaか7のどちらかにするしかないがVistaは選択肢にはいらないだろ。

どうせ2,3年もすればXPも売られなくなるし
新規でPC買えば全部Windows7化されてるだろ。

いつまでもDirectX9+XPにしがみ付いて技術的に取り残されるのも馬鹿らしい。
趣味でやる分にはDirectX9でぜんぜん問題ないと思うけどね。

821 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:56:00 ]
固定機能でお茶を濁したクズ本が消えるかと思うと
清々するわ

822 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:04:30 ]
逆に本がぜんぜんでなくなってるよな。
もうついていけてないんだろうか。

823 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:06:45 ]
ていうかゲームなんて作るのやめろ
ゲーPGなんてまったく金にならないし
本とか買ってまで作るなマジで

824 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 23:13:49 ]
金が目的なら株でもいじってろよw

825 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 11:28:23 ]
3Dゲームのエフェクトを強引にキャンセルさせてCPU負荷を下げる方法ってないですか?

826 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 11:35:32 ]
>>825
えーと、それは自分が作ってるゲームに関する質問?

827 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 12:45:36 ]
某エロゲのモザイク的な修正がパーティクルで実装されているので



828 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 13:00:53 ]
実行ファイルを書きかえれ

829 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 16:10:27 ]

工エエェェ(´д`)ェェエエ工工


830 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:35:07 ]
あそこが見たいだけじゃないのか?

831 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:40:13 ]
>>828
長門さんがこちらを見ています

832 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 07:20:57 ]
脳内変換だ

833 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:11:36 ]
アニメーションコントローラーを使ったアニメーションで
1ループ分のアニメーションの完了を検知したいのですが、

// if(アニメーション時間 >= 1ループかかる時間)
if(AnimationSet(AnimationID)->GetPeriodicPosition( ? ) >=
AnimationSet(AnimationID)->GetPeriod())

このような判定で合っているでしょうか?
合ってる場合、「?」の部分の引数にはなにを指定したらいいのでしょう?

msdnの解説では「アニメーションセットのローカル時間」と書いていますが、
GetPeriodicPosition()の戻り値こそがローカル時間ではないのでしょうか?

834 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:34:13 ]
なんかもう、誰も使ってない、仕様があやふやだし自分で作らない限り無間地獄から抜けられない
という結論が数年前から変わってない。


835 名前:デフォルトの名無しさん [2009/08/14(金) 11:56:07 ]
いやいやDirectX使わないとXBOXやWindowsでゲーム作れないって

836 名前:833 mailto:sage [2009/08/14(金) 12:32:32 ]
自己解決(´・ω・`)
GetPeriodicPosition()はグローバルな時間をローカル時間に変換するメソッドのようで?
参照すべきだったのはトラックの方でした

837 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:41:02 ]
シェーダーで描画してるんですが
固定機能のフォグって同時に使えるんですかね?
やってみたらかからないので、
やはりピクセルシェーダーで自前でかけるんでしょうか?



838 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:53:15 ]
ピクセルシェーダを自前で書くのなら、自前でかける

839 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 02:53:20 ]
DirectXのプログラミングを始めようとおもうのですが
これはSDKのチュートリアルにのってる最新のもの?から勉強していって良いのでしょうか?
それとも以前のバージョンから順に勉強していくほうが良いのでしょうか?


840 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 02:55:23 ]
>>839
通常はそんなめんどくさいことはする必要はない。
ただしバージョンごとにできることと動かせる環境に差異があるので、
DirectXのバージョンを比較した記事をいくつか読んで、
自分の作りたいものがバージョンいくつがふさわしいか最初に決めること。

後々でバージョンを変更するのはプログラムを作り直すようなことと等しい。

841 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 02:58:53 ]
directxを更に使いやすくしたライブラリって通称名とかありますか?
また鉄板の物はありますか?

842 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 03:05:53 ]
>>841
山ほどある。
が、結局DirectX自体と直接格闘したほうが得るものが多い。
お勧めのライブラリはほかのヤツらよろしく。

843 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 03:07:37 ]
>>842
なるほど、ありがとうございます
ある程度作れるようになったら、改めて探してみることにします

844 名前:839 mailto:sage [2009/08/16(日) 03:10:57 ]
>>840
なるほど、勉強になりました。
ありがとうございます


845 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 03:53:38 ]
directx自体を理解してないとライブラリの使い方も理解出来ないからライブラリは無駄w

846 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 03:57:10 ]
そうそう、面法線を計算して頂点を共有する面頂点の合計を正規化したものを頂点の法線に設定してみたけど
球体の見た目はかなり綺麗に仕上がる
角度で適用するかどうか判別すれば尖った部分も表現出来るんじゃないか

847 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 07:25:33 ]
>>845
さすがにそれはない。
もしそうならEasyLinkLibraryはあんなに流行らなかった。



848 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:04:06 ]
>>846
モデルデータ制作者の意図のをエスパーのごとく判断するプログラムを作らない限り無理。
だったら普通に法線をデータに含めればいいだけだろ。
いったい何がしたいんだ?

849 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:05:14 ]
大抵のライブラリは自由度を優先しててただのDirectXラッパーで終わってるから意味ないんだよ
例えば視点移動とかエフェクトとかがすべて内包されてて使用者はその中から選ぶだけとか
そこまでやってあるライブラリなら意味があると思うけどないでしょ
仮に誰かが作ったとしても無料では出さないでしょ

850 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:06:43 ]
>>849
それもうライブラリじゃなくてただのツクールだから。

851 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:07:12 ]
>>848
とりあえずただの頂点データだけのメッシュをフォトリアルに表示する方法を模索してる

852 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:09:38 ]
>>851
だからなんで頂点データだけにする必要があるのかを聞いているんだが。

853 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:11:10 ]
>>849
Irrlichtとかがまさにそれじゃないか?

854 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:13:38 ]
>>852
ただのモデルビューアだから、決まったものを表示するわけじゃないので
最終的にはゲームを作りたいけど、とりあえずビューア作って勉強しつつライブラリに包括していってる
ツクールの心臓部分になるかもしれない

855 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:14:47 ]
法線がなかったらライティングしない、
あるならライティングする、が普通のモデルビューアーの挙動だと思うが

856 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:17:19 ]
だから最終目標がツクールレベルだから、法線さえ知らなくても最新ゲーム並みの画像が出せるライブラリを作ってる
自分用にw

857 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:22:21 ]
法線なしで最新ゲームなみの画像とはこれはこれは大したもんだ。
デザイナーだったら3秒で投げ捨てろって言うライブラリだな。



858 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:23:54 ]
自動生成した感じでもかなりリアルだけどな

859 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 08:35:18 ]
エッジの抽出をどうすんだって話じゃねえの

860 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 09:13:15 ]
モデリングソフトで簡単に出力できるものを、わざわざ利用しない理由の答えになっていない。

カラーで出力できるのに、わざわざモノクロ写真からカラー写真にしろと言っているのが理解できているのか?

861 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 09:55:00 ]
モノクロ写真をカラーにする技術は重宝されてるし、画像処理では主流の研究課題ですけど

862 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 10:00:14 ]
頂点法線の取り扱いについて、多少話しが振れてくれれば
得るものもあるが、デザイナとかモデリングソフトとか
得るものが何もない。

>>モデルデータ制作者の意図のをエスパーのごとく判断するプログラムを作らない限り無理。
別にモデルデータ制作者の意図を反映する必要はない。

863 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 10:35:16 ]
>>861
元のツールがカラーで出力できるんだからそれでいいだろって話してんだろ。

864 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 10:36:12 ]
>別にモデルデータ制作者の意図を反映する必要はない。
デザイナーに言ったら殴り飛ばされそうなセリフだな


865 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 10:49:53 ]
何小難しい討論してんだ

正確に描画したいなら法線をつけて出力する。
法線がない時は「とりあえずそれなりに描画する」ってやりたいだけだろ?

別にD3DXにだって、法線の自動生成機能はあるけど、別に批難するやつはいないだろ

866 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 11:17:19 ]
そもそも法線を自動化することも出来るってだけで法線入れればそっちを優先するだけだがw

867 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 12:48:52 ]
質問です。
DrawTextを使って計算したFPSを表示したいのですが、LPSTR型に変換すると動かなくなります。LPSTR型にうまく変換する方法はありませんか?



868 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 12:58:51 ]
>>867
逆だ。プログラム全体をLPWSTRで統一するんだ。(Unicodeビルドしてるなら)
オレはそれが嫌になってC++でWindowsプログラム書くのをやめた。

869 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 13:01:04 ]
なんでこのスレにいるの?

870 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 15:45:23 ]
ヒトリデモ オオク ノ ワカモノ ヲ ユニコード ノ ジゴクカラ スクイタイ

871 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 15:47:40 ]
時代に取り残された老人は消えるべきだ

872 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 17:19:28 ]
SJISがデフォルトのOS上でプロジェクト新規作成したらユニコードデフォルトとか嫌がらせ以外の何者でもない

873 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 17:36:36 ]
時代に取り残された老人は消えるべきだ

874 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 17:42:06 ]
もはやSJISがデフォルトにはなっていないが、いったいいつの時代の話をしているんだ?

875 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 18:31:50 ]
今時のOSはユニコードが基本ってばっちゃが言ってたけど

876 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 19:42:12 ]
最近のOSがどうだろうが関係ねえ。
社内のツールがすべてSJIS前提だから選択肢ねーんだよ。
という会社けっこうあるんじゃない。



877 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 19:57:32 ]
オープンソースのぜんぶSJISなのにどうすんの



878 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:00:01 ]
ゲームのパラメータファイルとかは、基本SJISだからなぁ
わざわざユニコで書く奴いるか?

879 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:07:20 ]
ツールが吐き出すXMLもUTF8が使われている時代に何を言ってるんだろう?

880 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:18:40 ]
XML厨のプログラマが自己満足で環境を整備しないとSJISでズルズルいくね。
そして、運用する側はタイプ総量とタイプミスが激増して精神病むの。


881 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:18:14 ]
普通XMLはUTF-8で書くだろアホか

882 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:19:58 ]
UTF-8なら何も問題ないんだが、WindowsはUTF-16LEなわけよ。

883 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:28:43 ]
3D空間で人が平面上を動き回れる状態で色々試しています。
人が2m弱として、地面を1000m四方と巨大な板を置いているのですがバンプマップが上手くかかりません。
バンプマップで凹凸を表現するには細分化しないと効果が出ないものなのでしょうか。
テクスチャスクロールだけで地面の上を動いているように見せたかったのに
同じ絵(凹凸)の部分を色んな方向から見ても大して変化せず違和感があります。

884 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:36:59 ]
>>868
unicodeは使ってないです。あと、LPCWSTRじゃ引き算とかが出来なくて困ります。他に解決方法はありませんか?

885 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:42:55 ]
色んな方向から見て変化させるのは、パララックスマッピングとかでは?
バンプマッピングなら、光源の位置と向きを変化させると、見え方が変わると思います。

886 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:43:32 ]
>>884
というか、MBCSとUTF-16は相互に変換するAPIがあるぞ?
引き算の意味するところは分からんが。

887 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:52:26 ]
>>884
fpsをLPSTRに変換するというのは、もしかしてこういうことをやってるとか?
int fps = ..... ;
LPSTR lpstr = (LPSTR) fps;
DrawText( .... );



888 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:13:19 ]
文字コードの変換すら出来ないのはDirectX以前の問題だろ。
基本からやり直せ。

889 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:13:48 ]
>>887
大体そんな感じです。INTのポインタを入れたりしてみましたがダメでした。
漢字とかに変換するのが正解なんですかね?

890 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:18:00 ]
>>889
まずはC言語の入門書から読もうな。
このスレに来るのは3ヶ月くらい早すぎた。

891 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:26:21 ]
>>888
どうか可能か不可能かだけでもご教授を…

892 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:41:28 ]


893 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:41:50 ]
これは酷い

894 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 23:56:53 ]
木曽がわかってないのに応用問題を解こうとして話を難しくしてる

895 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:02:15 ]
初心者は死ね
それがこのスレの掟だ

896 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:07:01 ]
それはまた、エラいスレのタイトルと矛盾する掟だな。

897 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:09:14 ]
sprintf発見!確かに論外だ。
DIRECTXは続けるので、また詰まった時はお願いします。



898 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:12:04 ]
流石にCの初心者までは扱いきれんだろw

899 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:15:49 ]
CがダメならC#を使えばいいじゃない

900 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 04:04:17 ]
メッシュコンテナ(D3DXMESHCONTAINER 構造体)から面ごとのマテリアル対応情報を取りだそうとしてるんだけど、
pMesh->GetAttributeTable()メソッドで取り出した、属性テーブル(D3DXATTRIBUTERANGE 構造体)の中の「AttribId」ってのは
pMaterials[i]の添え字(i)に対応してるんでしょうか?

同じ属性テーブル内にある「FaceStart」というのも、インデックスバッファ内の面の構成データの格納順に対応してるのか疑問です・・・

901 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 05:41:26 ]
プロジェクトの設定をマルチバイト文字を使用するに変更すればいいだけじゃない

902 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 05:44:49 ]
>>900
出なかったからたぶんマテリアルとは関係ない
メッシュをマトリックスグループみたいに分割することが出来てそのインデックス情報を格納するんじゃないかと
でDraw???って関数でそのインデックスを指定するとその面だけが描画されるという

903 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 05:49:18 ]
ああ、そうか
マテリアルのインデックスを入れといてSetMaterialと連動させて
その面だけを描画すればマテリアルのインデックスという意味にもなるのか
まあ、ただ数字を入れて描画グループを分割出来るだけの代物だよ

904 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 06:36:53 ]
うーん、pMaterials[i]の添え字(i)と頂点番号(もとい、面番号)を関連付けるデータは
メッシュコンテナ内には無いのでしょうか?
メッシュデータ内の全頂点から、あるマテリアルが適用されている頂点を特定したいのですが・・・

905 名前:904 mailto:sage [2009/08/17(月) 08:19:54 ]
多分、自己解決

ボーンコンビネーションテーブル(LPD3DXBONECOMBINATION型)に
サブセット番号からメッシュデータ(最適化後)の頂点インデックスまで全て格納されてたので
そちらを参照することにしました

906 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 12:04:53 ]
ttp://marupeke296.com/DXGSmp_No26_WorldTransMatrix.html
このサンプルプログラムを使って
tiny.xを読み込んでも何もアニメーションしないのですが
なぜでしょうか?
ヒントだけでもいいので後生ですから教えてください・・><!

907 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 12:37:41 ]
DirectXで直線を引くにはどうすれば?(´・ω・`)
ポリゴンとかXファイルとかは表示できるのに・・・



908 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 12:50:40 ]
DrawPrimitiveでいけるやないかアホでんねん(´・ω・`)

909 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 13:10:51 ]
>>906
公式ならともかく、そこのページは管理人がちゃんと質問掲示板開いてるじゃないか
そっちで質問しる・;(`ε()゙

910 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 13:41:09 ]
なんなんだ・・・
釣りなのか本気なのか・・・

911 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 18:35:49 ]
残念ながら、釣りではありません。

912 名前:883 mailto:sage [2009/08/17(月) 19:09:07 ]
>>885
ありがとうございます。
基本的にはカメラを固定した状態でも動き回るものはバンプ、
それ以外はパララックスという使い方が良さそうですね。
もちろん場合に寄りますけど。


913 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 20:17:35 ]
>>907
ttp://homepage2.nifty.com/natupaji/DxLib/dxfunc.html

914 名前:デフォルトの名無しさん [2009/08/17(月) 21:41:59 ]
現在DirectXを使ってゲームを作っているのですが、
ボタンが後ろに隠れてしまっています。
なので、ボタンがある位置にスプライトを使ってボタン用の画像を
表示しているのですが、時差が出来たりしてうまく機能しません。
どうすれば、ボタンそのものを前面に表示出るのでしょうか?

915 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 21:45:23 ]
DirectXにボタンなど無い
DirectXにスプライトなど無い

916 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:07:50 ]
「Direct3Dで作っているゲームのキャラと地形のことで質問ですが…」
「Direct3Dにキャラや地形などない」

917 名前:デフォルトの名無しさん [2009/08/17(月) 22:09:25 ]
>>915
ボタンはウィンドウズの標準のもので、
スプライトはID3DXSpriteです。



918 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:21:26 ]
ID3DXSpriteを使ってボタンの画像を描画しているのなら、
そもそも標準コントロールを使う必要性がない。

919 名前:デフォルトの名無しさん [2009/08/17(月) 22:51:14 ]
>>918
それもそうですね。
DirectXのサンプルに使われているボタンは
標準コントロールを基にしてるのかと思ってましたが
今調べてみたら違いますね。
ご迷惑をおかけしました。

920 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 22:53:43 ]
まぁ、ツールを作る際にDirectXで描画されたものとWindosのコントロール併用することがあるから
色々試しても無駄にはならないことだけどね。


921 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 01:52:08 ]
Vistaか7ならどっちでも同じことだが

922 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 08:20:52 ]
同じじゃねえよ。
どれだけ馬鹿なんだ?

923 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 08:36:24 ]
D3DXLoadMeshHierarchyFromX
の必要な
LPD3DXALLOCATEHIERARCHY pAlloc,がインターフェイスのポインタと
なっているのですが
COMインターフェイスってなんでしょうか?
調べてもプログラムの再利用としか出てこないので全くわかりません。

924 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 08:42:21 ]
COMインターフェイスで検索しろ


925 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 09:54:49 ]
Direct3D 11.0, Direct3D 10.1/10.0, DXGI 1.0/1.1, Direct2D 1.0, DirectWrite, Windows Imaging Component (WIC) APIs. (DirectWrite and WIC have partial support)
あたりのサンプル実装がMSから出たぞ。
code.msdn.microsoft.com/WindowsAPICodePack

926 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 10:52:08 ]
>>923
そのあたりは、とにかくまずはサンプルコピペして、動きを見て、内容を理解し、自分で改良するしかない。
マジ。
理解しないままゲームとか作ると、あと後絶対苦労するから

927 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:48:21 ]
1000に近づいてますが、質問させてください。
2D板ポリゴンの描画についてなのですが、DrawPrimitive系は重いので
1回で複数枚の板を表示するようにしてみました。

D3DXVECTOR4 vPos;
D3DCOLOR color;
D3DXVECTOR2 vTex;
上のようなメンバーを持った頂点オブジェクトの配列Vertexを作り、
for(int i = 0; i < Max; i++){
Vertex[i*4].vTex=D3DXVECTOR2(0.0f, 0.0f);
Vertex[i*4+1].vTex=D3DXVECTOR2(1.0f, 0.0f);
Vertex[i*4+2].vTex=D3DXVECTOR2(0.0, 1.0f);
Vertex[i*4+3].vTex=D3DXVECTOR2(1.0f, 1.0f);
}
とu, vを初期化。そして、描画処理が入った数だけ
Vertex[Cnt*4].vPos = D3DXVECTOR4(left, top, 0.0f, 1.0f);
Vertex[Cnt*4+1].vPos = D3DXVECTOR4(right, top, 0.0f, 1.0f);
Vertex[Cnt*4+2].vPos = D3DXVECTOR4(left, bottom, 0.0f, 1.0f);
Vertex[Cnt*4+3].vPos = D3DXVECTOR4(right, bottom, 0.0f, 1.0f);
※color省略
Cnt++;
とし、SetTextureして
DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, Cnt*2, Vertex, sizeof(VERTEX);
としたらテクスチャがあらぬ方向に伸びました。何故か正しく表示できてるものもあるのですが・・・。
どこか根本的に勘違いしてるのでしょうか?ご指摘いただけませんか・・・。



928 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:51:04 ]
TRIANGLESTRIPがどういうものか調べてくるといい

929 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 15:56:02 ]
>>928
さっそくのご指摘ありがとうございます。
全部プリミティブが繋がってると言うことでしょうか?
他の部分は問題ないものとしてTRIANGLELISTで実装してみます。

930 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 16:36:00 ]
>>928
TRIANGLELISTでできました!1枚の板に6つ頂点使ってますが、
ちゃんとu,vと対応させたらOKでした。後は頂点インデックス使ったほうがいいですかね。
どれくらいパフォーンマンスに影響するかはわかりませんが。ともあれ即レス感謝です!

931 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 16:42:06 ]
>>930
すぐに非効率性に気づいてTRIANGLELIST+IndexBufferに移行するだろうがな。

932 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:54:18 ]
解決したんじゃなくて先送りしただけという事に気づくんだw

933 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 06:23:18 ]
D3DXMATRIX mat;
D3DXVECTOR3 vec;

パターン1:
lpdevice->SetTransform( D3DTS_WORLD, &mat );
→vec(頂点)をDrawPrimitivで描画

パターン2:
vec = vec * mat;
→vec(頂点)をDrawPrimitivで描画(SetTransformしない)


この2つは同じ結果になると思ってたんですが、どうやら違うらしいです。
SetTransformをせず、パターン1と同じ結果を得るためにはどうすればいいのでしょう?

934 名前:933 mailto:sage [2009/08/19(水) 07:24:03 ]
計算ミスってました(ノ∀`)

サーセン orz

935 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 10:33:40 ]
>>933
SetTransformしないってのは、座標変換しないって意味じゃないぞ。

初期値として単位行列が設定されているから、起動時から一度も設定してなければ
結果的に入力と出力が同じ座標になるが。

何もセットしなけいと別の場所でSetTransformした値が残っているので、
明示的に単位行列をセットすべき。

936 名前:デフォルトの名無しさん [2009/08/19(水) 14:55:22 ]
ガラスのコップみたいな透明な物体を描画するには、
テクスチャーを透過するだけでいいんだな

937 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 15:10:03 ]
>>966
DeffUseのαを設定する形にすれば透過率を後から変更できるけどな。
いずれにせよ描画順に制約を受けるので注意。



938 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 15:46:26 ]
グラスの表現は透過率の調整だけじゃ出来ねえよ
プログラム以前に最低限のモデリングを経験してからにしろ。

939 名前:デフォルトの名無しさん [2009/08/19(水) 17:22:15 ]
>>937
deffuseのアルファ値か、ありがとう!

>>938
屈折の話とかかな?
ヒントサンクス!


940 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:09:42 ]
マウスの左ボタンを押しているときにprintfDx関数で"Hello C World!\n"と出力し、
押してないときはclsDx関数で消すというコードを書いたつもりなのですがうまく消えてくれません。
どうしてでしょうか?初歩的な質問ですいませんが、よろしくおねがいします。

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
char Key[256];

//ループ開始
while(ProcessMessage()==0 && ClearDrawScreen()==0 && !GetHitKeyStateAll( Key )){
//↑メッセージ処理   ↑画面をクリア  
//ココ↓
if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 )
{ // 押されている
printfDx( "Hello C World!\n" ) ;
}
else // 押されていない
{
int clsDx( void );
}
//ココ↑
ScreenFlip();
}
DxLib_End();
return 0;
}

941 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:18:12 ]
>>940
ここはDirectXのスレです。

942 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 20:21:55 ]
>>941
スレ違いでしたか、すいませんでした

943 名前:デフォルトの名無しさん [2009/08/20(木) 17:55:06 ]
DirectX9とc++でゲームを作っているのだが、ゲーム会社に就職する
には、どれくらいの技術が必要ですか?

よく聞く基準
ライブラリを作れるとか
簡単な3Dゲームが必要とか
2Dだったら、完成度が高くないといけない

だいたいでいいから基準みたいなものはありますか?

944 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 17:57:57 ]
ゲーム1本作れればおkよ

945 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 19:03:07 ]
人事担当じゃないから詳しいことは分からないけど、DirectXでゲームとして完成度の高いものを作っても意味ないよ。
一番は表現力。HLSLでSDKのサンプル以上の何かを出来ればそれだけで十分だったりも。
小規模な企業ならそれでいいけど、中規模以上の企業であれば数学・物理が人に教えることが出来るレベルじゃないとダメ。
ハードが変わっても求めたい答えとその計算方法が分かっていれば問題ないしね。

ちなみにバンナムは数学・物理中心で、簡単なC言語ソースの問題(穴埋め)。
任天堂は数学・物理中心、あとは一般常識と発想力。
大企業になると技術力をアピールする機会がなかったり、それ以前に蹴落とされるから注意してね。

まぁ、場違いな書き込みなんですけど。


946 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 19:38:01 ]
板違いな奴は入れないお
レスする方もたいがいだけどな

947 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 19:45:42 ]
ゲームとして完成度の高いもの(笑)



948 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 21:04:59 ]
そもそもここは進路相談のスレじゃない

949 名前:デフォルトの名無しさん [2009/08/21(金) 00:03:24 ]
>>947
面白いゲーム作れなくて、数学物理が出来ても仕方ないと思うけどな。
単なる技術のデモンストレーションみたいなゲームは嫌だろ。
ゲームとしての捻りが無ければ売れんだろうし。

ま、だからって数学物理がいらないとは言わないが。

950 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:09:04 ]
>>949
そういう人ばかりいたら駄目だろうが、当然面白いゲームを作るための人というのもまた別に雇用するだろう。

951 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:23:24 ]
ゲームが面白いかどうかなんて、グラフィックや企画、仕様による所が大きいだろーが

つーか、ここはプログラマ板だろ
プログラマ(だぶん一人)が作った、転職、就職用ゲームが面白いかどうか、
なんて言ってるのは、ロートルの分って無いオッサンにしか見えん

挙動とかタイミングなんて言うなよ?
それこそ、そのサンプルプログラムで言い訳だろ

つまり、数学物理とは言わないが
技術スキルが分るサンプルやデモで十分

採用に面白い完成したゲームとか言ってる奴は、マジで組織のお荷物ぽっい
いい年して技術が無く、技術的な問題可決もトンチレベルの発想で
結局、若い技術ある奴が残業や休日出勤でカバーとか、ねw

952 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:26:00 ]
ゲームってこれからも
どんどんどんどんどんどん
難しくなってくのかな?
昔はフォトンマップとか非線形計画問題とか考えなくても
ゲーム作れたのに。
うざい、皆死ねばいいのに。

953 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 00:36:28 ]
うんうん、板もわきまえずに語りだす奴は皆氏ねばいいね

954 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 02:14:38 ]
ツールが増えてるからむしろ簡単になってるんじゃない?

955 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 03:28:34 ]
Physixスレがないのだがここでいいのかな






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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