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

515 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:19:08 ]
XORな描画ステータスあったらいけそう

516 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:24:00 ]
わざわざ5頂点でやる意味がわからない

517 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 20:18:54 ]
出来るかどうか聞いてるのに
文句言ってるやつって何なの?

518 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 20:29:30 ]
まぁ文句出る気持ちも分かるけど

>>511
DrawPrimitiveでやるなら、まずテセレーション(面倒だけどネットに情報あり)して三角形に分解後、
それぞれの三角形を塗るかどうか判定(三角形内部から適当に線を延ばし、他の辺と交わる回数が奇数なら描画)
していくしかないね。

しっかしXファイルのことなんてレスつかないだろうから、帰ったらレスしようと思ったら、意外に皆詳しいなw

519 名前:504 mailto:sage [2009/07/21(火) 20:58:41 ]
皆さんありがとうございます
505さんの言うボーンの行列 = ボーンのオフセット行列 * 親子関係によって積算した後のフレーム行列
が何をさすかピンときませんががんばって見ます

520 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 21:06:07 ]
>>517
明らかに馬鹿でウザイから
まず具体的にやりたいことから言えって感じ
詳しく聞くとそんな仕様まったく必要ないのにくだらないもの探してるってオチだと思う

521 名前:483 mailto:sage [2009/07/21(火) 23:43:40 ]
>>493
レスありがとうございます、ですが領域はNULLでもいいみたいです。

CreateOffscreenPlainSurfaceとGetRenderTargetを使ったコードを
そのままCreateRenderTargetとStretchRectを使ったコードにしたら動きました!

しかしこれが最も速く画像を取得する方法なんでしょうか。
GetRenderTargetData→転送先サーフェイスからGetDC、BitBlt
StretchRect→転送先サーフェイスからGetDC、BitBlt
GetRenderTargetDataは遅いそうですが、StretchRectはそれより速いのか分かりません。

522 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 08:55:23 ]
>>512 が早々に適格なこと言ってると思うんだが
まあ実際、面倒ならやらないわ―ってレベルだろ

523 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 12:57:58 ]
D3DXMatrixPerspectiveFovLHのfovyは
msdn.microsoft.com/ja-jp/library/cc324601.aspx
このページのfov/2の値をのことでしょうか?
私のプログラムでは,fovyを90度ににすると歪んで見え,
45度にすると普通に見えます.また,SDK付属のサンプル
も45〜60度で設定しているようです.
しかし検索すると
www.gamedev.net/community/forums/topic.asp?topic_id=512105
のページのように,fovyはfov/2ではなく,fovを設定すると書かれているページ
に多く出会います.もしfovを設定するのだとすれば,fovyを45度に設定
することは視線から上側の視錐台の角度がたったの22.5度しかないことになって
しまいます.

真相はどうなっているのでしょうか?



524 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 13:29:37 ]
自分の目からディスプレイの上端までと目から下端までの間の角度を測ってみ
90度もある? (あるとしたら、どれだけディスプレイに目を近づけてるんだ)
不自然だから歪んで見えるのでは?

525 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 13:32:37 ]
ちゃんとラジアン角度にしてるか?
D3DXToRadian(90);

526 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 13:42:41 ]
>>525
もちろんしてます.
SDKのサンプルも90度に設定して動かすとやはり歪んで見えます

527 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 15:18:44 ]
>>526
>>524

528 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 21:51:21 ]
質問です。
Xfileを表示してキーボードでそれを動かし、当たりがあったら文字を表示するというプログラムを作ったのですが。
普通に起動させると動作が遅いのですが、メディアプレイヤーを起動している時だけはなぜか動作が速くなります。
なぜこんなことが起こるのか教えてください

529 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:07:34 ]
cpplover.blogspot.com/2008/09/google-chrome_10.html
これだろ

530 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:09:26 ]
timeBeginPeriod メディアプレイヤー
でぐぐってみれば、理由を考察してるサイトがいくつか見つかる

531 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:00:12 ]
一応解決しました。貴重な情報ありがとうございました

532 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:56:22 ]
3Dモデルを表示するソフトウェアを開発しています。
描画エンジンとしてDirectX9.0のDirect3Dを使おうと考え、
色々調査しているのですが、PCの画面色数が24Bitの場合、正常に動作しません。
Googleで調べた所、いくつかのソフトでは24Bitでは動作不可との記述が見つかりました。
 ttp://postpet.jp/support/v3/manual/win/html/2_32.html
 ttp://mxengine.net-dimension.com/jpn/sub/faq.htm
しかし、MSDNには24Bit動作不可との記述が見当たりません。

質問ですが、
DirectX9.0のDirect3Dウィンドウモードでは、16Bit/32Bit以外の動作は不可でしょうか?
24Bitで動作させる方法(コーディング例)がありましたら、ご教授お願いします。


533 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:58:58 ]
ねーよ。
そもそも24Bitの画面モードが選べるような
ビデオカードが現存してた事に驚いた。



534 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:00:08 ]
24ってマイナーじゃないの?存在を初めて知った

535 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:06:37 ]
>>533
>>534
早速のレスありがとうございます。
実は配布先PCは特殊な環境で16Bit/24Bitのみ選択可、
通常は24Bitで動作しております。

すでに客先で動作しているPCであり、
客先は全国にある為、
インストールの為、画面設定を変更するのは難しいです。

やはり24Bitで動作させるのは難しいのですね。
最悪、DirectXではなく、他の描画ルーチンを使用することも考えています。


536 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:13:26 ]
24はVRAMが少量しかなかった時代に
少ないメモリでフルカラー表現するために存在した。
VRAMが豊富になって32Bitが使えるようになったら滅んだ。
24Bitって3Byte単位のアクセスだから速度がすげー遅かったし。

>>535
DirectX7か8のどっちかならいけるはず。
無論速度は度外視な。

537 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:14:40 ]
どうせならOpenGLってどうかな?(いや、よくしらんけどw)

538 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:43:53 ]
その前にビデオカードの具体的な製品名を明らかにしろよ。
なんでいちいち情報を小出しにするんだ?

539 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:46:31 ]
それ大事か?
しかし24なんて使ったことがないから可とも不可ともいいようがない・・・

540 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:48:12 ]
D3D9は確かにディスプレイフォーマット24bitは
サポートしてないみたいだけど、
それってFullScreenだけじゃなく
Windowモードもそうなの?


541 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:49:54 ]
MatroxのG200とかは24Bitモードあったぜ

542 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:51:14 ]
>>540
デバイスの初期化が通らないよ。

543 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:53:58 ]
どうやらVoodoo Bansheeあたりも24bitあったみたい。
しかし、Bansheeは良いカードだったw




544 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 01:05:03 ]
ディスプレイモードの列挙が通らなくて強制終了だな
完全にサポートしてないと動かない

545 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 10:02:17 ]
GF2MX400とかも普通に24bitモードあったぞ。
てか、24bitがマイナーだと初めて知ったw
当時、32bitこそ「無駄遣いだなぁ。24bitでフルカラー表現できるのに、なんだこの糞異端ボード」とか思ってた。

546 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 11:25:14 ]
Direct3Dを使わないのが前提なら24bit対応のビデオカードは多い

547 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 11:30:19 ]
でもわざわざ24bitを使う理由ってなに?

548 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 11:35:13 ]
質問者は、個人制作で自宅の24bit環境が普通だと思った
メーカーがどうして用意したかは、上に散々かいてある
昔のPCI

549 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 12:51:38 ]
815あたりの内蔵グラフィック機能だと、32bppが無いんじゃなかったっけ?
16/24しか選択できなくて、3D機能が使えるのは16だけみたいな感じ。

550 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 14:53:47 ]
スパロボのようなゲームを作っているのですが、
マウスで入力するために入力関係に特化したようなサイトとかありますか?



551 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 17:39:07 ]
>>550
言いたいことはわからんでもないけどとりあえず日本語で(ry

552 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 17:42:04 ]
たぶん碁盤の目のようなフィールド上でクリックしたら
コマンドが出るようにとかしたいんだろうけど

DirectXの要素はマウスの座標取得ぐらいしかねえじゃん

553 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 20:33:35 ]
>>551
すいません、要するにスパロボのフィールド画面を作りたいんです
>>552
そうです、まさにそんな感じです

セルの上にマウスを置いたらセルを囲み、右クリック等でコマンドが出る・・等の構成にしたいのです
ゲームのサイト色々見てるのですが、なかなか目的のものが見つからないのですよ
とりあえずマウスの座標取得から始めてみますね



554 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 01:45:36 ]
作ったゲームのテストたのんだ友人の中の一人だけがエラーで止まるので
いったい何が悪いんだと調べてみたらフォント描画が原因だった
\r\nを含んだ文字列描画すると原因不明のエラー警告で落ちる
\r\nを\nにしたらエラーでなくなったが、一体なにが悪いのかよくわかりませんでつた
OSもDirectXランタイムバージョンも他の正常に動作してるPCと同じでつ

555 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 03:42:55 ]
>>554
DirectXとOSのバージョンと描画方法は何ですか?

556 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 07:06:17 ]
プログラム中の文字列の改行コードにCRLFって使った事無いなw
テキストに落とす時は別だけど

557 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 08:30:56 ]
>>554
落ちた1台が例外なんじゃなくて、
他のPCではたまたま動いたってだけの話だろうたぶん

558 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 13:50:58 ]
555は偉いなぁ…真似できん

559 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 17:36:51 ]
質問です
DIRECTXで作られた質の高いフリーゲームってありますか?

560 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 17:47:19 ]
ここはプログラムを作ることに関しての板ですゲームサロンにでもいってください

561 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 17:55:50 ]
プログラマブルシェーダでのSetTextureについて質問です。

D3DXEffect effects[100];
for(int i = 0; i < 100; ++i)
{
effects[i].SetTexture("DecaleTex", textures[i]);
}
と、それぞれのエフェクトにそれぞれ別のテクスチャーをセットするとします。
これで、すべてのエフェクトが予想通りに動いているのは確認済みです。

このときに疑問が湧いたのですが、d3ddevice->SetTexture相当のことはいつ行われているのでしょうか?
1)effect[0]を使って描画
2)effect[0]を使って描画
3)effect[1]を使って描画
4)effect[1]を使って描画
とやった場合、2→3のところで内部的に行われているのでしょうか?
となると
1)effect[0]を使って描画
2)effect[1]を使って描画
3)effect[0]を使って描画
4)effect[1]を使って描画
とやると、d3ddevice->SetTextureのコストという面では2倍コストがかかってしまっているのでしょうか?

そもそも全てのエフェクトにテクスチャをあらかじめセットしてまわっておく。というのは正しいやり方なのでしょうか?
「d3ddevice->SetTextureはなるべく減らすように」と昔教えられたもので
(実際に、パーティクルなどの表示で切り替えまくると遅かったし)
かなり気になっています。

アドバイスいただければと思います。よろしくお願いします。

562 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:22:42 ]
DX9ならBeginPassとCommitChanges
DX10ならApply
それ以外に公開情報あったっけ

563 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:23:32 ]
質問です。

d3d9.hの読み込みより前に

#define D3D_DEBUG_INFO
を設定することで、デバッグウインドウ上で情報が表示されるということで実践してみたのですが、
どう考えてもおかしな数値が入っているように表示されます。

これは皆さんの環境でそうなのでしょうか?
単なるD3Dの初期化>D3Dデバイスの中身をデバッグウインドウで見る>数値とかがぐちゃぐちゃ
なのですが…。

環境はVS2008Express
Microsoft DirectX SDK (March 2008)
を使っています。



564 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:36:20 ]
君のプログラムの文字セットの設定は何だろう?
ちなみにIDirect3DTexture9::NameはLPCWSTRだ。


565 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:40:51 ]
マウスをクリックしたとき、どのオブジェクトをクリックしたかというのはどういうコードを書けばよいんでしょうか
それとも、マウスをクリックした時にその地点にオブジェクトがあるかないかを総当りで調べるものなのでしょうか?

566 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:55:37 ]
スクリーン座標をsx,syとする。
スクリーン座標の手前(sx,sy,0) 奥(sx,sy,1) を3D空間の座標に変換する
(=3D空間の座標をスクリーン座標にする変換の逆)
2点を結ぶ直線と最初に交差したオブジェクトを選択。

総当りで問題なくOKなら総当り。
総当りでは重いならばケースバイケースで効率的な方法を考える。

567 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:57:32 ]
>>566
うおおおおありがとうございます

568 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 22:12:08 ]
>>566
直線だけだと漏れが出ないか?
四角錐じゃないと。

569 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 00:05:32 ]
>>563について自己解決です

オブジェクトのプロパティ名が表示されますが、この値はデバッグのランタイムが有効な場合のみ正確です。リテール ランタイムに対して実行するときは、値は無効です。

とありました。
DirectX Control PanelからUseDebugVersionOfDirect3D9 を選んだところきちんと値が見られるようになりました

570 名前:デフォルトの名無しさん [2009/07/25(土) 13:52:15 ]
D3DXIntersectを使って当たり判定をしてる人がいましたらご教授願います。
表示した3dモデルに対して現在一体にしか当たり判定が有効になっていません。
複数のモデルに対して当たり判定を有効にするには何か特別な仕掛けをしていますか?

571 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 18:12:35 ]
自分で組め

572 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 20:11:23 ]
まともなゲームならほとんどすべて、
詳細な当たり判定より先におおざっぱで高速な判定をして
比較するオブジェクトの数を減らす。

最終的には、D3DXIntersectだろうが自作だろうが
当たり判定の必要な回数だけ繰り返す。


573 名前:デフォルトの名無しさん [2009/07/25(土) 21:14:18 ]
レスありがとうございます!



574 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 00:22:28 ]
このスレの70%はゲー専生で構成されているとかいないとか

575 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 01:14:25 ]
そんなことはない。
大学にも行かず浪人にもなれず就職もしない人は実社会では多数派でもないし
ゲーム業界内でも少ないだろう。2流3流大卒がほとんど。


576 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 01:51:48 ]
数学とかそこらは、中学レベルだと感じるな。

577 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 09:42:08 ]
というかそんな高度な知識がなくても組めるし
まあ効率とかを考えるといろいろむずかしくなるけれども

578 名前:デフォルトの名無しさん [2009/07/28(火) 07:57:06 ]
今、線分とメッシュとの当たり判定を作っています。
中身は線分と三角形との当たり判定を行っているのですが、
そのために必要な三角ポリゴンデータを、
DirectXのメッシュデータから取得する方法がわかりません。

頂点バッファのロックメソッドから、頂点データへの先頭アドレスを取得し
そのアドレスから12byteずつずらしながら、無理やり三角ポリゴン(と仮定したデータ)を取得し
当たり判定させてみましたが、途中から頂点のデータが「3.587e-043#DEN」などと壊れるようです。

ご存じの方がいらっしゃれば、ご教授よろしくお願いします。

579 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 08:08:47 ]
>>578
空間上の特定の点がポリゴンの内包する閉空間状に存在するか(要するに当たり判定)は
計算幾何学の分野で、一応n log nのオーダーで出ることは知られているけど
計算が死ねるのでよしたほうがいい。

大学の研究レベルでやるならともかく、ゲームでやるなら質点同士の運動と考えれば十分なはず。

580 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 08:22:50 ]
ttp://sukima.vip2ch.com/up/sukima026731.jpg

江戸時代の人々はこれで抜けるんなら
ある意味聖人だな


581 名前:デフォルトの名無しさん [2009/07/28(火) 08:28:13 ]
>>579
レスありがとうございます。
線分と三角形の当たり判定は、テストデータで計算出来ていることは確認しています。
ですので、知りたいのはポリゴンデータの取得なのです。

わざわざレスくださったのに申し訳ないです。

582 名前:デフォルトの名無しさん [2009/07/28(火) 08:31:38 ]
>>579
すいません、読み違えてました。

Xファイルで入力してるので、問題ないと思っているのですが
無理でしょうか?

583 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:25:04 ]
>>578
12byteの根拠は?
頂点データにはxyz以外も含まれていると思うので、12byteではないと思うが。

ID3DXBaseMesh::GetFVFでメッシュのFVFを取得してD3DXGetFVFVertexSizeで
頂点データのサイズを取得するか、ID3DXBaseMesh::CloneMeshFVFを使って
都合のいい頂点フォーマットに変換してから扱うのがいいかと。



584 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:59:33 ]
最近DirectXを勉強しはじめました。
初心者丸出しですが、質問させてください。

DirectXで2Dを扱う場合、Spriteを使用する方法と
座標変換済み頂点を使用する方法があると知りました。
また、座標変換済み頂点を使う方が処理が早いという書き込みも
チラっとみたのですが詳しく書かれておらず、把握している程度です。


質問は
@Spriteか座標変換済み頂点のどちらを使用すれば処理が早いか。

ASpriteと座標変換済み頂点の両方の利点・欠点。


よろしくお願いします。

585 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:21:14 ]
スプライトというのは、本来のDirectXの姿を隠して
ユーザが扱いやすいようにラップしているだけで、
最終的に頂点を組み立てて描画するのは同じ
ラップしているオーバーヘッドのぶん、処理が遅いかもね

586 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:22:42 ]
>>584
D3DXSprite自身が、内部的に座標変換済頂点(rhw)を使ってるんだが、どうよ?

単体の画像を何枚か扱う程度ならこのままでもいいが、小さなチップを大量に描画するようなら
通常の頂点バッファ(Position)を使うことを考えた方がいい。

587 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:22:55 ]
DirectXにSpriteなど無い

588 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:24:51 ]
D3DXSPRITEなら定数として存在するが、D3DXSpriteなど無い

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

と普通にやっています。






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

前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