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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
回答する人も、質問する人も必ず読んでください

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

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

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

前スレ
【C++】 DirectX初心者質問スレ Part32 【C】
http://hibari.2ch.net/test/read.cgi/tech/1288282082/
2デフォルトの名無しさん:2010/12/22(水) 20:14:30
DirectX SDK チュートリアル
http://msdn.microsoft.com/ja-jp/library/bb219685%28v=VS.85%29.aspx

・DirectXに関係のない、
 C/C++の部分や、ゲーム製作全般はスレ違いなので注意しましょう。
3デフォルトの名無しさん:2010/12/22(水) 22:05:03
DirectXのXInputで質問です。

Windows7上で、USB接続したXbox360ゲームパッドから入力を受け取っています。
左右のスティックをプレスし続けた場合、最初ONになった後、一瞬OFFになってから再びONになり続けるようですが、これで正常なのでしょうか?

一瞬OFFになるのがちょっと困るのですが…
4デフォルトの名無しさん:2010/12/23(木) 06:04:45
なんで前スレ消費しきってないのにこっちに質問すんのバカなの?
5デフォルトの名無しさん:2010/12/23(木) 07:18:31
メモ帳でHLSL書いてるんだけど、どこでエラーがでているのかわからない・・・
プロジェクトの中に入れる方法あります?
6デフォルトの名無しさん:2010/12/23(木) 09:36:34
>>2
>・DirectXに関係のない、
> C/C++の部分や、ゲーム製作全般はスレ違いなので注意しましょう。
勝手に追加するな
初心者にそんな切り分けできるわけないだろ
7デフォルトの名無しさん:2010/12/23(木) 09:56:34
ここはDirectX初心者スレであって、プログラミング初心者スレではないから大丈夫。
8デフォルトの名無しさん:2010/12/23(木) 10:12:26
>>7
それは暴論
前から初心者の受け皿だった
玄人用には「鬱だ氏のうDirectX」というスレがあった
9デフォルトの名無しさん:2010/12/23(木) 10:19:00
>>7
知らないくせに発言するな
10デフォルトの名無しさん:2010/12/23(木) 10:36:04
鬱だ氏のうDirectXって無くなったのですか?
11デフォルトの名無しさん:2010/12/23(木) 10:46:04
まあ、DirectX云々以前の質問は適切なスレに誘導すればいいだけの話。
12デフォルトの名無しさん:2010/12/23(木) 11:28:34
>>10
煽り合いが酷くて消えた
それとそもそもできる奴は滅多に質問しないからスレ自体いらないってなった

まあ、人の発言の意図を汲むことができない奴のいるスレは
スレにいくらルールをつけようがすぐに終わると思うけどね
あのスレも最期の方は書いてないけど普通はわかることまでしつこく指摘しててすごく空気悪かったな

情報が不足していたら相手から引き出すってやりとり自体をそもそも嫌う奴は
掲示板なんてこなけりゃいいのにいるんだよな

質問側は煽られたら完全スルーで頼む
13デフォルトの名無しさん:2010/12/23(木) 12:04:17
最近よくあるケースは、人の意図をくんだつもりになって、
頓珍漢な回答をして変な方向に進んでいく流れ。

まずは不足している情報をきっちり出してもらった上で回答に入らないと、
毎度毎度、グダグダな流れになる。
14デフォルトの名無しさん:2010/12/23(木) 12:10:44
>>13
まあ、そりゃ、回答した奴が未熟だからってのもあるだろう

それと回答側にやたら完璧を求める奴もいたな
人間同士のコミュニケーションってことを忘れてる質問者もいるからな
15デフォルトの名無しさん:2010/12/23(木) 12:27:07
OpenGLスレもDirectXスレもビックリするぐらい人がいないよね。
大丈夫か日本
16デフォルトの名無しさん:2010/12/23(木) 12:29:05
WEB上から情報がいくらでもとれるし、そもそも質問自体2chを利用する必要性も無いと言うことなんだろう。
17デフォルトの名無しさん:2010/12/23(木) 12:48:37
若いやつはもう2chなんて使ってないよ。
18デフォルトの名無しさん:2010/12/23(木) 16:08:03
>まずは不足している情報をきっちり出してもらった上で回答に入らないと、

そもそも初心者にそれを期待するのが難しい上に
聞き取りを始めようとすると
「それが答えられるくらいならこんなところに質問に来ない」
等の横槍が入るので無理
19デフォルトの名無しさん:2010/12/23(木) 17:03:59
dxlibって何ですか?
20デフォルトの名無しさん:2010/12/23(木) 17:08:23
21デフォルトの名無しさん:2010/12/23(木) 19:07:30
すっかりスルーされちまった

入力デバイス周りに詳しい人がいたら>>3について教えてほしい
適切なスレがあればそっち行くので誘導お願い
22デフォルトの名無しさん:2010/12/23(木) 19:18:00
>>21
アナログ入力はノイズがあるって言うから、たぶんそれじゃない?
23デフォルトの名無しさん:2010/12/23(木) 19:58:03
>>21
とりあえず、ドライバを最新にする
別PC、別OSで検証する
くらいはやった上で聞いてるんだよね?
24デフォルトの名無しさん:2010/12/23(木) 20:17:03
パッドいじったことがないなら知らないでいいじゃないか
わからないことを無理やり答えるのやめようぜ
知ってるなら「俺のところじゃそんな風にならない」って回答がほしいだけなんだろ
25デフォルトの名無しさん:2010/12/23(木) 20:19:28
パッドいじったことがないなら知らないが、チャタリングってやつ?
26デフォルトの名無しさん:2010/12/23(木) 20:26:49
>>21
俺のところじゃそんな風にならない
27デフォルトの名無しさん:2010/12/23(木) 20:41:11
360コントローラなんて公式ドライバを使った場合
不具合がでることで有名な奴じゃん
そんなもの使っておいて>>3だけの情報だけじゃ
プログラムの問題なのかそれ以前の問題なのか判断するのは不可能
28デフォルトの名無しさん:2010/12/23(木) 21:23:04
>>27
不具合がでるなんて聞いたことないけど、具体的にどんな症状?
29デフォルトの名無しさん:2010/12/23(木) 21:52:57
google「360コントローラ 公式ドライバ 不具合」でググると当たるな
30デフォルトの名無しさん:2010/12/23(木) 22:10:22
おいおい、みんな情報古いな、DirectInput時代で止まってる?
XInput使えばZ軸や振動対応の不具合なんて起きないぜ?
31デフォルトの名無しさん:2010/12/23(木) 22:34:01
dxlibって何ですか?
32デフォルトの名無しさん:2010/12/23(木) 22:37:51
33デフォルトの名無しさん:2010/12/23(木) 22:38:12
34デフォルトの名無しさん:2010/12/23(木) 23:10:58
>>30
あのデカい糞パッドを誰でも持ってる
とかありえん

友達居ないだろ?
35デフォルトの名無しさん:2010/12/23(木) 23:27:13
Xbox360のコントローラが公式ドライバだとDirectInputでトリガーが1軸になってるとかは、
過去のゲームとの互換性のためにあえてそうなってるだけで、不具合とは言わないよ。

> The combination of the left and right triggers in DirectInput is by design.
> Games have always assumed that DirectInput device axes are centered when there is no user interaction with the device.
> However, the Xbox 360 controller was designed to register minimum value, not center, when the triggers are not being held.
> Older games would therefore assume user interaction.
> The solution was to combine the triggers, setting one trigger to a positive direction and the other to a negative direction, so no user interaction is indicative to DirectInput of the 'control' being at center.
> In order to test the trigger values separately, you must use XInput.
36デフォルトの名無しさん:2010/12/24(金) 00:02:41
公式のアナウンスを鵜呑みにしちゃう男の人って
37デフォルトの名無しさん:2010/12/24(金) 07:54:27
気付いたらいつの間にかウインドウを最大化した時にエラーが出るようになってたのですがなぜでしょうか?
38デフォルトの名無しさん:2010/12/24(金) 08:00:35
ウインドウを最大化した時にエラーが出るようなコードを差し込んだからじゃない?
39デフォルトの名無しさん:2010/12/24(金) 08:05:03
ウインドウを最大化したら何か特別なことが起こるのですか?
40デフォルトの名無しさん:2010/12/24(金) 08:09:28
グダグダな流れになるのが嫌なら、
具体的にどんな処理手順で何をしているのかを明確にすること。
情報を出すのが面倒なら、どんなグダグダな回答でも受け入れること。
41デフォルトの名無しさん:2010/12/24(金) 08:15:46
あまり急いでないのでグダグダでもいいです
ウインドウを最大化する時って何か特別なこと起こります?
42デフォルトの名無しさん:2010/12/24(金) 08:18:56
呼び出し履歴見たらCreateFrameの時にヒープコピーのあとメモリ関連でエラーが出てるみたいでした
43デフォルトの名無しさん:2010/12/24(金) 08:38:33
他の方質問どうぞ
44デフォルトの名無しさん:2010/12/24(金) 08:39:54
どうして流そうとするんですか?教えてください
45デフォルトの名無しさん:2010/12/24(金) 08:51:23
言われたことぐらいやらんと誰も答えれないと思うよ。
俺がわざとそれっぽい事いって、故意にミスリードしてもいいのかい?
46デフォルトの名無しさん:2010/12/24(金) 08:52:50
DXUT使ってるなら
ウィンドウリサイズ時にデバイスを作り直してるから
なにかロスト対策をしてないリソースを追加した時点でエラーが出るようになってるんじゃない?

ぶっちゃけエラーが出なくなる最小コードまで戻してひとつずつ確かめながら追加していけとしか言えない
もしくはソースうp
47デフォルトの名無しさん:2010/12/24(金) 08:58:28
>>46
ありがとうございます。デバイスロストっていうのと関係あるんですね。ありがとうございました。

>>45
お前アホなの?
48デフォルトの名無しさん:2010/12/24(金) 09:03:18
これで>>45>>46が同一人物だったら、こいつどうするんだろうね
49デフォルトの名無しさん:2010/12/24(金) 09:06:40
は、別にできなかったらまた聞きに来るだけだから問題ないだろ
最先端の質問してるわけでもあるまいし
一人だけ性格の悪いゴミクズ荒らしが粘着してればスレが終わるだけ
50デフォルトの名無しさん:2010/12/24(金) 09:15:03
>あまり急いでないのでグダグダでもいいです
これがお望みのグダグダな流れという奴なので、何の問題もない。
51デフォルトの名無しさん:2010/12/24(金) 09:17:49
グダグダな流れの一例

情報が致命的に足りない質問をする
情報を出すように要求される
情報を出さない
答えが得られない
逆ギレ
52デフォルトの名無しさん:2010/12/24(金) 11:16:15
フルスクリーンモードとウインドウモードの違いを教えてください
53デフォルトの名無しさん:2010/12/24(金) 11:22:30
フルスクリーンモードは画面いっぱいに表示します
ウィンドウモードはウィンドウの中だけに表示します
ってそんなことが訊きたいんじゃないよな・・・?
54デフォルトの名無しさん:2010/12/24(金) 11:25:33
>>52
なぜ人に質問する前に自分で調べないのよ、
アンタ、情弱なの?
今回だけは、特別に教えてあげるけど、今度からは自分で調べなさいよね!
http://msdn.microsoft.com/ja-jp/library/ee422549(VS.85).aspx
55デフォルトの名無しさん:2010/12/24(金) 11:35:52
>>35
それそれ、その記述の日本語版見てXInput使うことにしたんだよね
おかげでLTriggerとRTriggerは別々に値取れるようになった

う〜ん、結局Xbox360ゲームパッドを持ってる人は居らんみたいね、残念。
56デフォルトの名無しさん:2010/12/24(金) 11:38:39
>>53
もっと低レベル層の仕組みが知りたいのです
57デフォルトの名無しさん:2010/12/24(金) 11:56:49
>>55
Xbox360ゲームパッドもってるけどそんな風にはならんよ
せめてハードの問題なのかソフトの問題なのかくらいは絞ってくれないと
58デフォルトの名無しさん:2010/12/24(金) 12:07:26
>>56
そうなるとWDKのビデオドライバの実装辺りを調べてみるといい。
そこまでは普通の人間はやらないが、好奇心を持ったのならとことんやるといいのではないか。
59デフォルトの名無しさん:2010/12/24(金) 17:05:05
XInput使っても使えるのはXBoxのコントローラだけだしな
他のデバイスなら断然DirectInput
60デフォルトの名無しさん:2010/12/25(土) 01:26:08
>>52
動作に関してはフルスクリーンはなにもやらなきゃ楽だな
でもAlt+Tabとかサポートしはじめるとお前の実力じゃ2〜3年使うぐらい嫌な目にあう

それに対してウィンドウモードはロストとか起こりにくい
スクリーンセーバー(3Dデバイス使用&占有型)のもん動かしたときどうなんのかとか知らんけどw

後、フルスクリーンはリフレッシュレートを自由に設定できるけど
ウィンドウモードはリフレッシュレートはユーザーが自由に変えられる
もちろんゲーム実行中にも・・・
61デフォルトの名無しさん:2010/12/25(土) 02:12:24
何いきなり語りだしてるの?
62デフォルトの名無しさん:2010/12/25(土) 02:33:27
>>61
とっととあきらめてFlashいじってろよw
63デフォルトの名無しさん:2010/12/25(土) 02:37:28
まずこっからだな
http://www.mext.go.jp/programin/app/

これはいいとてもいい
64デフォルトの名無しさん:2010/12/25(土) 03:01:50
文部省そんなもん作ってるのか
なかなか興味深い教材だな
65デフォルトの名無しさん:2010/12/25(土) 03:09:53
>>60
そんなのしってるよ・・・
66デフォルトの名無しさん:2010/12/25(土) 03:23:49
無駄にエラそうな割りに実の無い情報しかしゃべれない人ってなんなんだろうね
67デフォルトの名無しさん:2010/12/25(土) 06:13:53
こんにちは。仕事でDirect3D10を使用するプログラムを書いています。
ゲームのようなダイナミックなものではなく、単純にテクスチャを1枚貼っただけのものです。
それでも私には一苦労でした。Direct3D10とシェーダープログラムはサンプルを利用しました。
ここまでは良かったのですが、同じメッシュ(表現正しいのかな?)にアルファチャネル付きの
テクスチャを何枚も貼ってほしいと要求されました。枚数は不定です。この場合のシェーダーの
書き方はどうすればよろしいのでしょうか?使えるテクスチャの上限を決めておいて、
テクスチャの数だけシェーダーを用意しなければならないのでしょうか?
68デフォルトの名無しさん:2010/12/25(土) 06:15:10
>>67
シェーダーと頂点情報はそのまま、テクスチャだけ切り替えて
繰り返し描画するだけ。
69デフォルトの名無しさん:2010/12/25(土) 07:29:26
d3dx9anim.hをインクルードするとエラーが出ます、助けて下さい……
1>c:\program files (x86)\microsoft directx sdk (august 2007)\include\d3dx9anim.h(14) : error C2065: 'IID_ID3DXAnimationSet' : 定義されていない識別子です。
1>c:\program files (x86)\microsoft directx sdk (august 2007)\include\d3dx9anim.h(15) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
1>c:\program files (x86)\microsoft directx sdk (august 2007)\include\d3dx9anim.h(15) : error C2078: 初期化子の数が多すぎます。

以下d3dx9anim.hでのエラーが80近く……
ゲーム制作でXファイルのアニメーションをしようとして調べてみて、いっちゃん最初で躓いてしまいました、どうかお願いします
70デフォルトの名無しさん:2010/12/25(土) 08:17:25
>>69
ライブラリの設定ができてないとかじゃね?
71デフォルトの名無しさん:2010/12/25(土) 08:18:27
>>66
お前みたいに煽りしか入れないのとか2度とレスしないでいいけどなw
72デフォルトの名無しさん:2010/12/25(土) 08:20:58
てか
d3dx9anim.hでエラーがでるって
d3dx9.hをインクルードするとエラーがでるってこと?
それとも直でインクルードしてるの?
73デフォルトの名無しさん:2010/12/25(土) 08:22:58
>>71
お前もなw
74デフォルトの名無しさん:2010/12/25(土) 08:23:15
DirectX関係無いよね
75デフォルトの名無しさん:2010/12/25(土) 08:27:07
>>74
いや、これはアリでいんじゃない?
厳密にはないけどw
設定方法とかわからんでしょ?
初心者だし
76デフォルトの名無しさん:2010/12/25(土) 08:31:37
他の方質問どうぞ
77デフォルトの名無しさん:2010/12/25(土) 08:32:07
>>65
>・ 回答して貰ったら、出来るだけお礼もしよう。
さっさとお礼言えよクズ
78デフォルトの名無しさん:2010/12/25(土) 08:36:14
>>60がキモイ
79デフォルトの名無しさん:2010/12/25(土) 08:38:34
追加の依存ファイルは「d3d9.lib d3dx9.lib winmm.lib dinput8.lib dxguid.lib」を設定しています
d3dx9anim.hは自分で作ったプロジェクトのヘッダーファイルからじかにインクルードしています

と、ここまで書いた時点で>>72さんの書き込み見て解決しました
d3dx9.hのインクルードが必要なんですね……
いつもは共有インクルードヘッダーに書き込んでいたので、抜けていたようです
こんな事でお手数取らせて申し訳御座いませんでした
色々言って頂いた皆様、ありがとうございます。今後このような事が無いように、確認を徹底しますね

>>74 関係無いようでしたら申し訳ないです……他にどこで聞けばいいのか解らなかったもので。
80デフォルトの名無しさん:2010/12/25(土) 08:44:57
d3dx9anim.h作った人はなんでd3dx9.hをインクルードしなかったんだろうね
81デフォルトの名無しさん:2010/12/25(土) 08:48:34
えっ
82デフォルトの名無しさん:2010/12/25(土) 08:57:17
>>81
だってd3dx9.hがないと動かないソースなわけじゃん
基本、自分が必要なもんは自分が読んでおけば問題おきないと思うぜ
83デフォルトの名無しさん:2010/12/25(土) 09:14:29
d3dx9anim.hがd3dx9.hを必要としてるんじゃなくて
d3dx9anim.hを含むライブラリ群がd3dx9.hなんだよ

実際にd3dx9anim.hが必要としてるのは
d3dx9.h自体じゃなくてd3dx9.hでd3dx9anim.hより前にインクルードされてるヘッダのどれかだ
84デフォルトの名無しさん:2010/12/25(土) 09:14:33
ってことを理解できてない浅いPGの書いたソースってことだな
85デフォルトの名無しさん:2010/12/25(土) 09:15:43
>>83
じゃ、なんでそれ自分で呼んでないの?馬鹿なの?
86デフォルトの名無しさん:2010/12/25(土) 09:16:17
>>82は自分でライブラリ作ったこと無いだろw
87デフォルトの名無しさん:2010/12/25(土) 09:18:15
>>86
具体的に呼んでないとなにかいいことあるの?
88デフォルトの名無しさん:2010/12/25(土) 09:23:34
>>87
依存しているヘッダが分割された場合の修正や、
多重に呼び出しているかどうかを無駄にチェックする回数は減るね。
89デフォルトの名無しさん:2010/12/25(土) 09:24:30
>>88
さっぱり意味がわかりません
メリットないならないっていいなさいよ
育ち悪いな
90デフォルトの名無しさん:2010/12/25(土) 09:26:25
>>89
レベル低いな
もう少し勉強してから出直しておいで
91デフォルトの名無しさん:2010/12/25(土) 09:27:03
>>89
ある程度の規模のプログラムを組んだことがないとメリットは分からないよ。
無能で理解できないのは致し方がない。
92デフォルトの名無しさん:2010/12/25(土) 09:29:21
>>90
はぁ?
じゃ、エラーの出るヘッダでも一生呼んでろw
ちょっと考えてみろよ
<stdio.h>からはじまって色々ヘッダ呼んでるとしたら
使う側はその全部をわざわざインクルードするのかよ
どうせなきゃ動かないのに馬鹿らしい

このスレが糞ったのはお前みたいに自分の間違いとか絶対に認めない糞が増えたからだな

俺がレベル低い?はぁ?
こんな簡単なことわからないお前より俺のがレベル低いっての?
面白いなw
93デフォルトの名無しさん:2010/12/25(土) 09:33:55
>>92
そういう面倒を回避するためにd3dx9.hがあるのに、
わざわざd3dx9anim.hを呼んでエラーが出ると喚いている意味が分からん。
94デフォルトの名無しさん:2010/12/25(土) 09:40:49
知っている人間が最小限のヘッダを呼び出すのなら分かるが、
無知なのに個別にヘッダを呼び出してコンパイルできないと怒り出すって、
どれだけアホなんだよ。
95デフォルトの名無しさん:2010/12/25(土) 09:41:11
>>91
なにいってんだ
まだ、頑張るのか?
メリットないだろ
なんで認めないの?
自分が間違ってるのがそんなに嫌なの?
どうせ大した経験もないくせに

>>93
明らかに話わかってないのに無理して参加するなw
いまはなんでd3dx9anim.hがd3dx9.hを呼んでないのか?って話をしている
レスするなら、まず、自分のレス(>>93)がとんちんかんだったことを認めてからレスしてね
96デフォルトの名無しさん:2010/12/25(土) 09:45:56
>>95
d3dx9.hを穴の開くほどみてこいよ
d3dx9.hがd3dx9anim.hを呼んでるんだよ
さらにd3dx9anim.hがd3dx9.hを呼んだら相互インクルードになるだろうが
97デフォルトの名無しさん:2010/12/25(土) 09:48:19
>>96
さらにウンコだよね
そのd3dx9anim.hがd3dx9.hを呼ばないとエラーになんだぜ
98デフォルトの名無しさん:2010/12/25(土) 09:52:45
えっ
99デフォルトの名無しさん:2010/12/25(土) 09:53:04
d3dx9.hを呼び出せば、d3dx9anim.hを呼び出す必要がないのに、
d3dx9anim.hにこだわる理由がさっぱり分からない。
簡単に使えるようにわざわざMSが用意しているのに、
仕様を無視して勝手なことをして対策しろというのが、
無能を通り越して知的障害か精神障害レベルだよ。
100デフォルトの名無しさん:2010/12/25(土) 10:07:39
>>99
http://msdn.microsoft.com/ja-jp/library/ee421276%28v=vs.85%29.aspx
お前が呼べゆーたんじゃないか!

要件
ヘッダー: D3dx9anim.h 宣言
101デフォルトの名無しさん:2010/12/25(土) 10:11:19
馬鹿なの?死ぬの?
102デフォルトの名無しさん:2010/12/25(土) 10:13:26
この仕様だとD3dx9anim.hはユーザーに存在を知らせる必要ないな
D3DXの依存関係が怪しい
103デフォルトの名無しさん:2010/12/25(土) 10:13:38
>>100
宣言している箇所を示しているだけで、呼べなんて一切書いていないよ。
104デフォルトの名無しさん:2010/12/25(土) 10:21:38
Win32APIの開発経験が足りず、宣言と呼び出すヘッダが違うことに無知な人間や、
サンプルやチュートリアルを確認しない馬鹿のための配慮が足りないのは確かだろう。
105デフォルトの名無しさん:2010/12/25(土) 10:36:27
>>103
ひでぇヘルプだなw
106デフォルトの名無しさん:2010/12/25(土) 10:38:09
頭の回らない馬鹿に厳しいことは確か。
107デフォルトの名無しさん:2010/12/25(土) 10:40:45
ユーザーに知らせる必要のないヘッダをヘルプに書くことになんの意味が・・・
108デフォルトの名無しさん:2010/12/25(土) 10:45:34
分かっている人間の中には、余計なものを呼び出さず最小限でヘッダを構成する場合がある。
ただそれだけの話。
109デフォルトの名無しさん:2010/12/25(土) 10:48:59
>>108
馬鹿だなお前
だからd3dx9.hはどの道呼ばなきゃ動かねぇってw
110デフォルトの名無しさん:2010/12/25(土) 10:51:16
d3dx9.hを呼ばなくても依存しているファイルを呼び出せばいいだけの話だが、
どこまで頭が悪いんだろう?
111デフォルトの名無しさん:2010/12/25(土) 10:55:56
>>110
はぁ?
だからそれは>>92の話でアフォだって言っただろ?
使う側は全部インクルードすんのかよ糞がって話だ
ループさせんなよ死ね
112デフォルトの名無しさん:2010/12/25(土) 11:03:21
>>111
>ユーザーに知らせる必要のないヘッダをヘルプに書くことになんの意味が・・・
これに対する答えだよ。
依存関係を理解している人間が、
コンパイラに送るコードを少しでも少なくするためにやるための方法なの。
絶対にやる必要がある訳じゃない。

つまり意味が理解できない馬鹿には何の意味もない情報。
113デフォルトの名無しさん:2010/12/25(土) 12:06:41
初めて書き込むが、俺的には

ライブラリ使う側
全ての依存関係をインクルードしたヘッダを使う
(d3dx9.hはライブラリ完成後に作ったんだよ、多分w)

ライブラリ作る側
依存関係だけの必要最低限のヘッダをインクルード

つまり>>69は、依存関係を調べないで使うんだったらd3dx9.hをインクルードすれば良かった話で
d3dx9anim.hをインクルードするんだったら、依存関係のヘッダーもインクルードする必要があったって事だね
で、依存関係を調べるべきなのに、依存関係が全てインクルードされているd3dx9.hをインクルードして解決とか言ってるって話だね

余談だけど、作る側が依存関係だけの構成が良い理由は
ヘッダー定義等に変更があったときに関係ないobjまで再コンパイルになって非常に面倒だから
11469:2010/12/25(土) 12:21:43
>>113
なんか妙に論争になってたんで引っ込んでましたが、おおよそ理解出来たかと思います。
依存関係とか全く気にしてなかった弊害が……
とりま無事コンパイル通って、やりたかった事の実装も半分程終わった所です

余談ですが、プログラム打ってると煙草の本数増えて仕方が無い今日この頃、です
115デフォルトの名無しさん:2010/12/25(土) 12:40:24
まだやってたのか
馬鹿の相手をするのはやめろよ
116デフォルトの名無しさん:2010/12/25(土) 13:11:26
>>113
>で、依存関係を調べるべきなのに
それを使う側が調べるのが正しいとしちゃっていいの?
117デフォルトの名無しさん:2010/12/25(土) 13:33:30
メモ帳でHLSL書いてるんですが、どこでエラー出てるか調べる方法はありますか?
118デフォルトの名無しさん:2010/12/25(土) 13:43:40
119デフォルトの名無しさん:2010/12/25(土) 13:48:39
>>117
メモ帳を使うのをやめて、Visual StudioやNVIDIA FX Composerなどの
もっとリッチなツールを使う。
120デフォルトの名無しさん:2010/12/25(土) 13:51:31
やたらスレが伸びててなんだと思ったら、ヘッダファイルの話なのか。
Windows(Win32API)でプログラムを作るときは、まず<windows.h>をインクルードする。
DirectX9でプログラムを作るときは、まず<d3d9.h>をインクルードする。
それ以外のライブラリやヘッダファイルのMSDN上での指定は、
コンパイルエラーやリンクエラーが出たときに初めて追加すればいいよ。

MS流のプログラミングスタイルは大体がこんな感じ。
121デフォルトの名無しさん:2010/12/25(土) 14:23:34
>>68
テクスチャーだけ切り換えるということは、シェーダーに
Texture2D txA;
Texture2D txB;
Texture2D txC;
としておいて、ピクセルシェーダー内で切り換えるということでしょうか?
それともC++のプログラム側で切り換えてピクセルシェーダーだけ呼び出せるということでしょうか?
あと申し訳ありません、使用したサンプルは C++\Direct3D10\Tutorials\Tutorial07 です。
122デフォルトの名無しさん:2010/12/25(土) 14:27:23
>>119
NVIDIA FX Composerはエラーで開きません。
VC++で扱えますか?
123デフォルトの名無しさん:2010/12/25(土) 14:48:57
>>121
違うよ。同じ設定でテクスチャだけ張り替えてDrawPrimitive() (DirectX9の場合)を
必要なだけ呼び出せということ。
ps_3_0まででも1回の描画で16枚までテクスチャ参照できる。
ps_4_0ならもっと増えてるはずだよね。
124デフォルトの名無しさん:2010/12/25(土) 14:50:32
>>122
じゃあHLSLが文法的に間違ってる。
fxファイルのコンパイラにかけて様子を見てごらん。
125デフォルトの名無しさん:2010/12/25(土) 14:55:05
>>124
いや、NVIDIA FX Composerが動きません。
126デフォルトの名無しさん:2010/12/25(土) 14:59:09
>>125
知らんがな。

どういうエラーが出て動かないのか、
どういう環境かも分からないのに答えられるはずがない。
自分で考えろ。
127デフォルトの名無しさん:2010/12/25(土) 15:03:37
レンダーモンキー使おうとしてるけど何がなんだかさっぱりわからん
解説サイトあります?
128デフォルトの名無しさん:2010/12/25(土) 16:43:12
メタセコイヤでモデルを作ったんですが赤色にすると
周りに作った壁なんかも赤くなってしまうんですが
どうすれば他のに影響しないようになるでしょうか?
129デフォルトの名無しさん:2010/12/25(土) 16:47:46
マテリアルが同じになってる?
130デフォルトの名無しさん:2010/12/25(土) 19:55:00
>>123
10以降はシェーダだけじゃないっけ?それ以外は廃止された

多分複数のuv座標とテクスチャは必要だと思う
といっても10以降(9もだっけ)はテクスチャ配列とか便利なものがあった気がするのでそれを使えばテクスチャは複数不要かも
俺も勉強中なのでよくわからん。後は詳しい人が教えてくれるはず↓
131デフォルトの名無しさん:2010/12/27(月) 01:04:54
まず>>67のやりたい事が、マルチテクスチャなのか、テクスチャブレンドが出来れば良いのかによる

文章を読む限りマルチテクスチャに思えるが、>>68が言ってるのは
フレームバッファを対象にレンダーステートを設定して、一枚づつテクスチャをブレンド描画していけって意味
これなら一枚テクスチャ描画の処理だけでも、複数テクスチャを張った結果と同じ事が実現出来る

そうではなく、純粋にマルチテクスチャの手法を求める場合は
シェーダーに渡すテクスチャを必要枚数セットして
UVやサンプリング方法が違うならサンプラーも必要分を容易してセットする

ただし扱える最大数はハードスペック依存だから、
アプリ起動時にでも調べて最大数を超えない処理をいれないと駄目かと
132デフォルトの名無しさん:2010/12/27(月) 01:07:14
それから、マルチテクスチャの場合は
レンダーステートで行っていた場合のブレンドを、シェーダー内で行わないと駄目だね
133デフォルトの名無しさん:2010/12/27(月) 03:30:19
67ではないが非常にわかりやすい解説でよくわかりました
134デフォルトの名無しさん:2010/12/27(月) 09:55:07
こんにちは、Direct3Dを勉強しているものです。
ttp://marupeke296.com/DXGSmp_No7_Draw3DObject.html
例えば上記サンプルを実行中に
Ctrl+Alt+Deleteを押してタスクマネージャを出そうとすると
ポリゴンとか全部消えて画面が真っ白になります。
他のサイトのサンプルとかでも全てそうなりました。
この現象を回避する方法はあるでしょうか?
135デフォルトの名無しさん:2010/12/27(月) 09:57:14
デバイスのロストについて調べるとよろし
136デフォルトの名無しさん:2010/12/27(月) 10:19:38
>>134
タスクマネージャーってCtrl+Shift+Escで呼び出す物なんだけど。
オレ、釣られてる?

Ctrl+Alt+Deleteで表示が死ぬのはまた別の話。
おそらくは >135
オレの書いたプログラムだと大丈夫だった。
137デフォルトの名無しさん:2010/12/27(月) 12:32:20
Ctrl+Alt+Deleteにタスクマネージャってボタンがあるから別に間違いじゃないな
必ずデバイスロストしてくれるのでチェックに便利だよ
138デフォルトの名無しさん:2010/12/27(月) 13:03:21
>>136
むしろ俺は、Ctrl + Shift + Escでタスクマネージャを直接呼び出せる事を初めて知った。
Vista以降の仕様なのかな? まぁ時計表示右クリックでも出せるから不便には感じてなかったんだが。
139デフォルトの名無しさん:2010/12/27(月) 13:11:14
Ctrl+Shift+EscはXPにもある
つかタスクバー以外に時計の右クリックでもでるんだな
あれも一応タスクバーの中か
140デフォルトの名無しさん:2010/12/27(月) 14:58:10
なぜタスクマネージャを表示するとロストするのか
141デフォルトの名無しさん:2010/12/27(月) 15:08:33
vista以降だとディスプレイアダプタがWindowsに乗っ取られるから

タスクマネージャーはショートカットかタスクバーから起動できるからまだいいけど
UACが発動した時に同様の理由でロストするのはどうにかして欲しかったな
142デフォルトの名無しさん:2010/12/27(月) 15:16:38
なんか話が混乱してるな。

前提: XP

・簡易ログオン有効時
Ctrl+Alt+Delでいきなりタスクマネージャが起動。デバイスロストなし。
・簡易ログオン無効時
Ctrl+Alt+Delでデスクトップが切り替わる。デバイスロストする。

Ctrl+Shift+Escでタスクマネージャが起動するのは少なくともNT4の頃にはあった。

Vista以降のUACでデバイスロストするのはデスクトップが切り替わるため。
これはグループポリシーで変更可。

間違ってたら訂正にょろ。
143デフォルトの名無しさん:2010/12/27(月) 15:50:59
tiny.xのマテリアルって
ディフューズ r1.0 g1.0 b1.0
アンビエント r0.0 g0.0 b0.0
で合ってます?
144デフォルトの名無しさん:2010/12/27(月) 16:07:27
あってる
145デフォルトの名無しさん:2010/12/27(月) 16:33:10
的外れな質問してるかもしれませんが、スキンメッシュのシェーダーで
デバイス->SetTexture();
だとテクスチャが貼られますが、
エフェクト->SetTexture();
だと上手く貼られません。
デバイス->SetTexture();は固定機能パイプラインではないのですか?
146デフォルトの名無しさん:2010/12/27(月) 16:41:19
だとしたらシェーダーで描画できてないのだろう
147デフォルトの名無しさん:2010/12/27(月) 16:43:38
>>145
エフェクトと言ってるんだから ID3DXEffect を使ってるんだと思うんだけど、
あれはIDirect3DPixelShader9やIDirect3DVertexShader9 のラッパーなわけで、
それを念頭においた上で ID3DXEffect 自体の作法に従わないといけないよ。
詳しくはサンプルソースを読め、だけど、

例えばBegin、BeginPass、EndPass、Endはちゃんと呼んでる?
148145:2010/12/27(月) 17:05:51
セオリー通り、シェーダー描画のステップを踏んでます。
.fx内でテクスチャの色を変えたりすると描画も変わるので、テクスチャはエフェクトファイル内を通っていると思います。

あと、これからもDx9をサポートするGPUは固定機能も使えますか?
149デフォルトの名無しさん:2010/12/27(月) 17:20:01
描画部のコードとピクセルシェーダを書いて
150デフォルトの名無しさん:2010/12/27(月) 17:27:07
できれば全部書いてくれ
151デフォルトの名無しさん:2010/12/27(月) 17:27:21
>>148
うーん。ID3DXMeshは使ったこと無いからその辺はわからんな。
他のやつよろしく。

正常時、異常時それぞれでPIXで描画シーケンスの
ログを取って比較してみたら何かわかるんじゃない?

RADEON HD2600系以降でDirectDrawがソフトウェア実装になったように、
古い機能がエミュレーション化される可能性は常にあるよ。

ま、どうせ描画機能は複数パターン作って適宜切り替える実装になるので
必要になったものを順に実装していけばいいよ。
152デフォルトの名無しさん:2010/12/27(月) 17:29:30
うーん。ID3DXMeshは使ったこと無いからその辺はわからんな。
他のやつよろしく。

正常時、異常時それぞれでPIXで描画シーケンスの
ログを取って比較してみたら何かわかるんじゃない?

RADEON HD2600系以降でDirectDrawがソフトウェア実装になったように、
古い機能がエミュレーション化される可能性は常にあるよ。

ま、どうせ描画機能は複数パターン作って適宜切り替える実装になるので
必要になったものを順に実装していけばいいよ。
153デフォルトの名無しさん:2010/12/27(月) 17:55:28
なんで2回いうんですか?
なんで2回いうんですか?
154デフォルトの名無しさん:2010/12/27(月) 19:19:25
大事なことだからだよ。
155デフォルトの名無しさん:2010/12/27(月) 21:12:52
D3DXIntersectを使い3D空間での「3Dモデルのメッシュ」と「平面の板のメッシュ」の当たり判定を取りたいのですが
MSDNを見てもいまいち引数の内容が分かりません、第1引数から軽くでいいので教えて頂けないでしょうか
156デフォルトの名無しさん:2010/12/27(月) 21:21:39
数学的な考え方として何をどうしようとしてるは
そもそも理解出来てるのか
157デフォルトの名無しさん:2010/12/27(月) 21:24:29
そもそも書かれてる通りなんだが
http://msdn.microsoft.com/ja-jp/library/ee417228(VS.85).aspx
158デフォルトの名無しさん:2010/12/27(月) 21:25:24
pU,pVが最初にヒットした面の座標かな?

そのまんまだね
159デフォルトの名無しさん:2010/12/27(月) 21:30:50
レイの始点と向きをワールド座標軸で指定してるから思った通りに当たらないとかってオチじゃないの?
こいつはメッシュのローカル座標軸で指定
160デフォルトの名無しさん:2010/12/27(月) 21:36:02
多分質問の仕方からして、特に
>「3Dモデルのメッシュ」と「平面の板のメッシュ」の当たり判定

って質問からして、そもそも意味自体丸ごと理解出来ていないと思われ
161デフォルトの名無しさん:2010/12/28(火) 10:22:25
数学って難しいね
162デフォルトの名無しさん:2010/12/28(火) 10:30:25
質問です。
3D空間に半透明物体を配置したいのですが、正しく描画するためにはソートが必要だと思います。
このソートを行うには、どういう方法が一般的なのでしょうか。
GPUに頂点データを送り、射影変換などの変換をし、半透明物体だけその結果を一端CPUに戻し、ソートして、またGPUに送る、ということをしないと駄目なのでしょうか。
163デフォルトの名無しさん:2010/12/28(火) 10:56:55
どういう方法もクソもない。
カメラと物体の距離を計算して遠い方から描画するだけだ。
164デフォルトの名無しさん:2010/12/28(火) 11:21:14
>結果を一端CPUに戻し
出来るのなら好きにしろ
165デフォルトの名無しさん:2010/12/28(火) 13:25:41
>>162
>GPUに頂点データを送り、射影変換などの変換をし、半透明物体だけその結果を一端CPUに戻し

これはあまり現実的じゃないなぁ
GPUの計算結果をCPUに戻すには一旦定数レジスタに放り込まねばならず
そしてそのサイズは余り大きくはないのでモデルの規模にもよるけど、まず無理
半透明のオブジェクトのみCPUで座標変換してソートしてから描画するしかないと思われ
166デフォルトの名無しさん:2010/12/28(火) 15:54:25
半透明物体の頂点の処理だけソフトウェアでやるといい、ということですね。
その方向で実装してみます。
ありがとうございました。
167デフォルトの名無しさん:2010/12/28(火) 18:20:57
マルペケ参考にして影の精度を上げようとしてるんだけど上手くいかんなー
自己影の角が取れん・・・
168デフォルトの名無しさん:2010/12/28(火) 18:32:21
シャドウ処理は精度を上げることを考えるより
低い精度でもなんとか見られるように+α工夫する方向で考えた方がいいぞ
169デフォルトの名無しさん:2010/12/28(火) 18:47:51
ボリュームとか?
170デフォルトの名無しさん:2010/12/28(火) 19:21:02
IDirect3D9の変数名は何にしてますか?
171デフォルトの名無しさん:2010/12/28(火) 19:27:32
d3d9
172デフォルトの名無しさん:2010/12/28(火) 19:29:43
俺はd3ddeviceはunkoって決めてる
173デフォルトの名無しさん:2010/12/28(火) 19:32:31
mD3D

d3dってなんやねん!
174デフォルトの名無しさん:2010/12/28(火) 20:20:31
>>173
Direct3D
17567:2010/12/28(火) 21:28:44
>>122
>>131
丁寧に説明ありがとうございます。
テストプログラムではうまくいきました。
実際に組み込む時でちょっとうまくいってませんが、これは自分の勉強不足なので
解決できると思います。
176デフォルトの名無しさん:2010/12/29(水) 15:30:10
ピクセルシェーダーの引数でPos:POSITIONとすれば
入ってくるのは頂点シェーダーから出てきたポジション?
177デフォルトの名無しさん:2010/12/29(水) 15:33:00
ピクセルシェーダに入力セマンティックPOSITIONは無いよ
178デフォルトの名無しさん:2010/12/29(水) 15:43:44
ピクセルシェーダーにポジション入れたいんだけどどうすればいいかな
179デフォルトの名無しさん:2010/12/29(水) 16:08:33
>>178
TEXCOORD
180デフォルトの名無しさん:2010/12/29(水) 16:13:22
なるほどサンクス
181デフォルトの名無しさん:2010/12/29(水) 19:51:53
どうも
182デフォルトの名無しさん:2010/12/29(水) 22:40:38
>>167
俺もあれやってみたが、劇的な変化はないよな
結局シャドウマップのサイズが足りないなら結局焼け石に水ってことか
183デフォルトの名無しさん:2010/12/30(木) 04:31:24
HLSLでポイントライトをやろうと思っています。

float Light_vol = clamp( distance(ライトのポジション, 頂点のポジション), 0.0f, 1.0f );
Col = dot( 法線, normalize( ライトのポジション.xyz - 頂点のポジション.xyz ) * Col * ライトの色 * Light_vol;

これで光の当たる場所がうまくいきません。どこが問題でしょうか。
184デフォルトの名無しさん:2010/12/30(木) 04:44:17
ライトをワールド空間座標で指定してるなら
法線もワールド行列変換するか
ライトを予めワールドの逆行列を掛けてローカル空間座標に変換しておく
185デフォルトの名無しさん:2010/12/30(木) 04:53:03
ライトはワールドのポジションで、法線もワールドに変換してあります。
186デフォルトの名無しさん:2010/12/30(木) 05:26:56
>>183
なんで情報の出し惜しみをするんだろう?
頂点シェーダ部分全部書けよ


一般的なポイントライトだと

float3 vL = ライトのポジション.xyz - 頂点のポジション.xyz;// 光源ベクトル
float lenL = length(vL);// 光源ベクトルの長さ(光源への距離)

// 光の強さ(距離の二乗で減衰させて適当な係数を掛けて調節)
float Light_vol = 100 * dot( 法線, normalize(vL) / (lenL*lenL) ;

Col = Col * ライトの色 * max(0, Light_vol);
187デフォルトの名無しさん:2010/12/31(金) 01:55:49
傾斜に対してキャラクターをクォータニオンで垂直に回転させるソースをくれ
188デフォルトの名無しさん:2010/12/31(金) 04:02:09
うわーやっとうまく行った!
>>186ヒントさんくす!!
189デフォルトの名無しさん:2010/12/31(金) 08:26:48
>>187
クォータニオンなんか使わないで傾斜にそった姿勢行列(傾斜行列)に対して

ワールド→ローカル(傾斜行列)→ローカル(傾斜行列)で垂直に回転→ワールド

でベクトル取得すればいいんじゃね?
後はクォたんでかけるもかけないも好きにしろと思う
190デフォルトの名無しさん:2010/12/31(金) 16:20:07
画面から外れるものは描画されずにGPUが節約されるということですが、
メッシュがカメラから外れる場合は描画ループに入れずに飛ばしてもパワー節約にはなりませんか?
たとえば、マトリックスとかライティング計算とかが省かれて軽くなるとか。
191デフォルトの名無しさん:2010/12/31(金) 16:26:48
そりゃもちろん描画しない分だけパワー節約になる
192デフォルトの名無しさん:2010/12/31(金) 16:33:00
じゃあオブジェクトを大量に作る場合、カメラの近くに来たものだけレンダーしたほうがいいのか
193デフォルトの名無しさん:2010/12/31(金) 17:05:12
まぁ、そんなのは常識の範囲内でさらに一歩進んだ先
描画する描画しない閾値付近で
オブジェクトがパッと消えたり現れたり
或いはLODレベルが切り替わってしまうのをどうにかしようっていうことの方問題になりやすいんだが
194デフォルトの名無しさん:2010/12/31(金) 18:10:56
レンダーターゲットをテクスチャサーフェイスにしようと思っています。
大きすぎるテクスチャだと古いGPUでは対応していないということはありますか?
1024^2でやろうと思っていますが、5年くらい前のPCだともっとサイズを小さくしたほうがいいですか?
195デフォルトの名無しさん:2010/12/31(金) 18:21:01
5年前くらいなら最低でも2048x2048はあるはず

テクスチャの最大サイズはデバイスのCapsから取得できるので
想定値より小さかったらそれに合わせるとかにしとけば良いんじゃ
196デフォルトの名無しさん:2011/01/01(土) 04:17:12
ポリゴンにテクスチャを着けたビルボードを、画面にピッタリ張り付いたようにしたいのですが、どんなマトリックスの設定にすれば良いですか?
197デフォルトの名無しさん:2011/01/01(土) 04:32:38
>画面にピッタリ張り付いたように

もうちょっとゆとり成分を抜いてくれ
198デフォルトの名無しさん:2011/01/01(土) 08:33:13
体力ゲージとかを作りたいって事だろ。・・・たぶん。
199デフォルトの名無しさん:2011/01/01(土) 11:34:23
タイトル画面とかで1枚絵をべたって貼りたいということだと俺は思った
200デフォルトの名無しさん:2011/01/01(土) 11:36:09
そんなのに、ビルボードのポリゴン使わんでもいいやん
201デフォルトの名無しさん:2011/01/01(土) 11:36:09
3D空間で屈折マップをやりたいんですが
毎フレーム、テクスチャはどうやって用意したらよいでしょうか?
202デフォルトの名無しさん:2011/01/01(土) 11:37:57
>>196
これか
D3DXMatrixOrthoLH
203デフォルトの名無しさん:2011/01/01(土) 12:22:03
単純に正面を向いたビルボードを表示したいだけかもよ?
204デフォルトの名無しさん:2011/01/01(土) 14:46:29
>>203
なるほど
だったら
D3DXMATRIX mat = camMat;(ビュー行列ではない)
mat._41 = pos.x;mat._42 = pos.y;mat._43 = pos.z;
的なコードだな
205デフォルトの名無しさん:2011/01/01(土) 16:38:16
>>196 みたいな問いでも、このスレの住人は本能的に数学的な解釈して回答してくれる
ゆとりを生み出すのは、お前らの優しさのせい
このイケメンどもめ。 そして謹賀新年、明けましておめでとうございます
206196:2011/01/01(土) 19:22:44
>>199
これです。クライアント領域の0,0から画面いっぱいに合わせて貼りたいです。
207196:2011/01/01(土) 19:24:46
>>199>>203
これにも流用できるようにビルボードにしました。
カメラからの最低描画距離とかいろいろ考えるうちにちんぷんかんぷんになってしまいました。
208デフォルトの名無しさん:2011/01/01(土) 20:01:28
>>206
なにそれ?
スクリーン座標での描画方法が知りたいわけじゃなくて
ワールドにおいたもんをどうやって画面ぴったりに描画するかってところで悩んでるってこと?
209デフォルトの名無しさん:2011/01/01(土) 20:16:32
はい。
210デフォルトの名無しさん:2011/01/01(土) 20:37:22
だったら>>202でいいんじゃね?
211デフォルトの名無しさん:2011/01/01(土) 20:45:55
それが座標変換済み頂点かな
212デフォルトの名無しさん:2011/01/01(土) 21:41:40
すいません、初めて書き込むんですがここってHLSLの質問でも大丈夫ですか?
213デフォルトの名無しさん:2011/01/01(土) 22:13:09
>>212
いいんじゃないですかね
214デフォルトの名無しさん:2011/01/01(土) 22:18:33
ありがとうございます。XNAで作っていてシェーダーの部分でわからないことができたのでこういう聞き方をしました
いざ質問しようとすると自分の中で問題が整理できてないように思ったので、もう少し考えてから質問します。よろしくお願いします
215デフォルトの名無しさん:2011/01/01(土) 23:23:58
甘えた質問かもしれませんがよろしくお願いします
3Dソフトでいう「ベンド」とか「パスに沿って変形」を作りたいと思ったので(なので頂点シェーダに関する質問です)
イマギレさんのt-potにある頂点ブレンドを参考に、ブレンドウェイトを使えばできるのかな、と思いまして
(0,0,0)を一番底にしてモデルを作りweighttemp=normlize(pos(ポジション).xyz)のz座標の値をもとにweight[0]=weighttemp.z、weight[1]=1-weighttemp.zという風に設定し
float4 pos0=mul(pos,rotatexyz(回転行列)); を作りpos=weight[0]*pos0+weight[1]*posという風に行なったのですが期待通りの変形が行われているように思えません。
この場合weight[0]*pos0というのはpos0にweight[0]の値だけ近似させるということを行っていると思っていいんですよね?
216デフォルトの名無しさん:2011/01/01(土) 23:28:26
全く整理できてない件について
217デフォルトの名無しさん:2011/01/01(土) 23:30:55
すいません。出直してきます
218デフォルトの名無しさん:2011/01/01(土) 23:51:47
D3DXCreateEffectFromFileを呼ぶと、失敗してD3DXERR_INVALIDDATAが返ってきます
別のプログラムでは成功してるし、ユーティリティにあるコンパイラでも
正常にバイナリが出力されているのでエフェクトファイルのプログラムに問題はありません
ファイル名が間違っているということもありません
リソースに組み込んでD3DXCreateEffectFromResourceを呼べば成功しますが
外部から変更したいので、ファイルから読み込む方法を取りたいです
失敗する原因は何が考えられるでしょうか
219デフォルトの名無しさん:2011/01/01(土) 23:54:01
>>215
いきなりそんなギミック動かしても動いてるのかよくわかんねーじゃん

pos=0.5*pos0 + 0.5*pos;
pos=1.0*pos0 + 0.0*pos;
pos=0.0*pos0 + 1.0*pos;

こんなん動かしてみてそれっぽいかどうか確認したらどーなん?
220デフォルトの名無しさん:2011/01/02(日) 00:00:59
>>218
なんかよくわからんけどピクセルシェーダのバージョンを2.0ぐれーにしてみたら治んない?
221デフォルトの名無しさん:2011/01/02(日) 00:09:13
>>220
治りませんでした

しかもプロジェクトのフォルダをコピーして、そっちで再びビルドすると
エラーの中身がE_FAILになった
どういうことだ?
222デフォルトの名無しさん:2011/01/02(日) 00:35:02
>>221
google「D3DXCreateEffectFromFile E_FAIL」
これでググると一発目に外人が似たような質問してる
それの返しレスでこのコードでチェックしろ的レスがあるからやってみたら?
223デフォルトの名無しさん:2011/01/02(日) 01:00:29
>>222
ありがとうございます
解決しました
224デフォルトの名無しさん:2011/01/02(日) 12:33:24
>>215
甘えた質問かどうかって言うより、
>3Dソフトでいう「ベンド」とか「パスに沿って変形」
が、実際どういう計算で行われているのかを先に理解するといいかも
どう 「設定すれば」 、と言うより、どう 「計算したら」 、って話だから。確実に。

とりあえずスプラインとかn個の頂点を通る曲線とかあるいはベジエとか、その辺をおいかけてみろ
HLSLじゃなくて数学
225デフォルトの名無しさん:2011/01/02(日) 17:00:54
>>219>>224
ありがとうございます! 
円柱を移動させてを擬似ポリラインを描くことは出来るのですが、その式を使うと上手く言い表しづらいのですが頂点を回転させてるのではなくずらして表示させてるため複雑なモデルを使うとモデルの向きが変わらず表示が不適切になってしまうのです
もう少し自分で調べてみようと思います
わからないところが出てきたらまた質問させてもらおうと思いますので、よろしくお願いします。
226デフォルトの名無しさん:2011/01/03(月) 21:55:59
Managed DirectXのドキュメントってどこで見れるんですか?
227デフォルトの名無しさん:2011/01/03(月) 23:27:46
XNAに移行して今はまともなドキュメントは無いんじゃなかったかな
228デフォルトの名無しさん:2011/01/04(火) 02:02:04
今DirectX9でマルチモニタにムービーを全画面出力することを試みています。
2出力のカード3枚刺しです。アダプタの数だけ(この場合6つ)デバイスを作って
出力することは出来たのですが、3つの「マルチヘッド」デバイスを作って全て
表示することはできるのでしょうか?
「DirectX初心者質問スレ Part25」などにマルチデバイスでのヒントなどは
発見出来たのですが、マルチなマルチヘッドデバイスのヒントがいろいろ探したの
ですが発見できませんでした。
どなたか、詳しい方おられませんでしょうか?
229デフォルトの名無しさん:2011/01/04(火) 02:15:43
普通にモニタつなげてメディアプレイヤーでAlt+Enter押したらいくんと違う?
230デフォルトの名無しさん:2011/01/04(火) 02:26:43
やったことないけどこのへんの話け?
http://msdn.microsoft.com/ja-jp/library/ee422058(VS.85).aspx

D3D10(DXGI)なら確実に対応してるみたいだがのゥ
231デフォルトの名無しさん:2011/01/04(火) 02:33:37
早速の書き込みありがとうございます。

すみません説明が足りませんでした。
各グラフィックカードに渡されるムービーは同じとは限らないのです。複数のムービーを
テクスチャとしてDirectShowでポリゴンに取り込み、違った映像を狙ったモニタに出力
したいのです。
ただ、同じグラフィックカード上のアダプタ間ではテクスチャを共有させたいのです。UV値
を変えてずらしたりはします。
それでマルチヘッドデバイスが動画の同期をとったりするのに都合が良さそうだ
ということでこの方法を試したいのでした。
232デフォルトの名無しさん:2011/01/04(火) 02:41:58
>>231

ありがとうございます。このヘルプは以前読みました。このヘルプとマルチデバイスに
関するヘルプ等も読んで、組んでみているのですが、なかなかうまくいきません。シングルの
マルチヘッドデバイスで2画面なら既に出来ているんですが、複数のマルチヘッドデバイスで
「同時に」6画面出すのに苦労しています。

D3D10では出来ているんですね。なるほど。わけあって9を使っていますが、10も
考えてみる必要があるのかなぁ。幸い9と10は一つのコードから同時に使えるらしいですし。
233デフォルトの名無しさん:2011/01/04(火) 02:45:33
>>230でした。すみません。
234228:2011/01/04(火) 11:27:42
うーん、この辺を読んでると
http://msdn.microsoft.com/ja-jp/library/ee422553(VS.85).aspx

複数のデバイスをフルスクリーンモードで同時に使うには、アダプターごとにデバイスを
作った上、それらがフォーカスウインドウを共有しなければならんとあります。
実際それで、マルチな独立デバイス的コードを書いて動画出力出来ました。(ヘッド間
で全然同期出来ませんけど...orz)

でも、そうなると、この辺の記述
http://msdn.microsoft.com/ja-jp/library/cc323931.aspx

にある、hDeviceWindowの説明とかみ合わなくてよくわかりません。実際
シングルのマルチヘッドデバイスで2画面のフルスクリーンモードを実現する
コードでは、主アダプタと従属アダプタにそれぞれ違うウィンドウをクリエイト
しないとうまくいきませんでした。

このあたりの不整合性が「マルチなマルチデバイス」がうまくいかない原因なのかな?
どなたかうまくいく方法ご存じないでしょうか。
DirectX9じゃそれは不可能だよ、という合理的な説明でもありがたいです。
235デフォルトの名無しさん:2011/01/04(火) 14:52:20
>>234
やり方はほとんどヘルプに書いてあるので、大雑把に手順を説明すると

ヘッドの数だけウインドウを作成する
D3DPRESENT_PARAMETERSの配列を作り、hDeviceWindowにそれぞれのウインドウをセット
CreateDeviceにD3DCREATE_ADAPTERGROUP_DEVICEのフラグを指定してデバイスを作成する
GetBackBuffer->SetRenderTarget->描画 をヘッドの数だけ行う
Present

3つ以上のヘッドがある場合に、2つだけ使うとかはできないと思う。
ヘッドの割り当ては、D3DCAPS9のMasterAdapterOrdinal、AdapterOrdinalInGroupで確認。
ヘッドごとに解像度が違う場合は、EnableAutoDepthStencilが使えない。
236228:2011/01/04(火) 18:01:12
>>235

ありがとうございます。そのやりかたで、マルチヘッドデバイスを一つ作って
複数のモニタに出力することは既にできています。

問題は、例えば2出力あるボードが2枚あるとして、2つのマルチヘッドデバイスで
2x2の計4つに出力する方法です。
ようは、「マルチヘッド」デバイスを「複数」作って(その意味ではマルチデバイス)
そのすべてにフルスクリーン表示する方法です。
DirectX8までは複数のアダプタにフルスクリーン出力するにはそれぞれ個別の
デバイスを当てる方法が主流でした。DirectX9から「マルチヘッド」デバイスに
よって一つで同じボード上の複数のアダプタに出力しやすくなりました。
私が知りたいのはそれらを合わせたような、マルチxマルチヘッドデバイスの
実現が可能かどうか、ということです。
ひきつづきよろしくお願いします。
237デフォルトの名無しさん:2011/01/05(水) 14:00:25
DirectX 1.0のころはどうやって3Dを描画していたのですか?
238デフォルトの名無しさん:2011/01/05(水) 15:23:20
行列バッファじゃなくてなんだっけ?
OpenGLみたいなの
239デフォルトの名無しさん:2011/01/05(水) 15:29:58
Direct3Dは存在していないから、
ビデオカード専用のAPIを使ったり、OpenGLを利用したり、
CPUで計算して勝手に各自でそれっぽく作ってただけだよ。
240デフォルトの名無しさん:2011/01/05(水) 16:59:58
DirectX1.0ってWinGだろ
241デフォルトの名無しさん:2011/01/05(水) 17:39:44
WinGとDirectXの間にGameSDKとかいうのがなかったっけか
242デフォルトの名無しさん:2011/01/05(水) 18:01:15
GameSDKが後からDirectX1扱いされているだけ。
WinGは無関係。
243デフォルトの名無しさん:2011/01/05(水) 18:18:03
>239-242
どもでした
244デフォルトの名無しさん:2011/01/05(水) 20:13:01
ここの人はDX1.0の頃からコード書いてるのか
何歳なんだよ
245デフォルトの名無しさん:2011/01/05(水) 21:25:52
3Dのゲームに使えそうなリアルタイム変形に関する本って何かありませんか?
GPUGEMSなら研究室にあるんですが
246デフォルトの名無しさん:2011/01/05(水) 21:45:22
リアルタイム変形ってなんだよ。
モーフィングでもやりたいのか? それともスキニングか。
247デフォルトの名無しさん:2011/01/05(水) 21:48:45
多分、単純な頂点の移動自体切り分けというか、処理が見えてないと思われ
248デフォルトの名無しさん:2011/01/05(水) 22:22:34
すいません…今の自分の言葉で説明できないので(ゲームエフェクト作りたいということだけですので)みなさん参考にした本など教えて欲しいです
ゲームエフェクトマニアックスは持ってます
249デフォルトの名無しさん:2011/01/05(水) 22:29:37
本から吸収できてないんだから、書籍をいくら読んでも無駄。
とにかくチュートリアルを見ながら少し付くこつこつ作れ。
250デフォルトの名無しさん:2011/01/05(水) 22:33:50
ゲームエフェクトマニアックスに書かれていることは理解していますが。無駄って言い方は傷付きます
251デフォルトの名無しさん:2011/01/05(水) 22:38:02
すいません、情けない書き込みでした…
自分で探してみます
252デフォルトの名無しさん:2011/01/06(木) 00:01:56
>>238
実行バッファじゃね?
253デフォルトの名無しさん:2011/01/06(木) 00:07:25
>>250
とりあえず数学やれ。マジで
周期関数で頂点動かせ。話はそれから
254デフォルトの名無しさん:2011/01/06(木) 00:15:03
>>248
もう300冊以上あってオススメなんてわかんね
時代もズレてるし
色んな本読んだほうがいいな
いいと思った本片っ端から買えよ
255デフォルトの名無しさん:2011/01/06(木) 00:29:21
>>236
マルチヘッドを複数ってことだったか。
それは、さすがに検証できる環境がないな。

マルチデバイスとシングルデバイスマルチヘッドのどっちもできてるなら、
その発展でできるんじゃない?
わざわざアダプタグループの定義があるくらいだから、仕様としては
問題ないと思う。
256デフォルトの名無しさん:2011/01/06(木) 01:06:52
三角関数で動かすことぐらいはできます。そこまで頭悪くありません
あんまり覗く価値ないですねここ。二度ときません
257デフォルトの名無しさん:2011/01/06(木) 01:16:54
イライラしたら負けだぞ
258デフォルトの名無しさん:2011/01/06(木) 01:21:38
まあ気持ち悪い連中はスルーしておけばいいんだ、力を抜こうぜ
259デフォルトの名無しさん:2011/01/06(木) 03:49:41
使用可能なテクスチャステージの数を得る方法を教えてください
260デフォルトの名無しさん:2011/01/06(木) 05:01:11
>>259
GetDeviceCaps

単純にステージ数ならMaxTextureBlendStages
使用できるテクスチャ枚数はMaxSimultaneousTextures

ステージ数が8ない機種なんて、RivaTNT以前とかの話になるから
基本的に8あると思っていい。
テクスチャ枚数はGeForce4くらいまでは2枚、それ以降は8枚使える。
261デフォルトの名無しさん:2011/01/06(木) 08:44:40
>>256
でも自分がどこまでできるか言わなかったよね
なのに他の人には「わかれよ!」っていうんだよね

いままでは回りの人は君のいうこと全部いいように汲んでくれたと思うけど
これからはそういうの少ないから気をつけてね
262デフォルトの名無しさん:2011/01/06(木) 09:15:59
CreateDIBSectionって、GameSDKだっけ?WinGだっけ?
>>244
女性に歳を聞くもんじゃないよ?
263デフォルトの名無しさん:2011/01/06(木) 10:51:08
WinG
264デフォルトの名無しさん:2011/01/06(木) 11:09:58
>>261
こんな掲示板でしか説教できないんだね
かわいそうだね
265228:2011/01/06(木) 13:46:55
>>255
>わざわざアダプタグループの定義があるくらいだから、仕様としては
>問題ないと思う。
そうなんです。自分もまさにそう思って始めたんですが、なかなか
うまくいきません。理由を探っているうちに234で書いたような考え

すなわち、

複数デバイスで同時フルスクリーンの場合と、マルチヘッドデバイス
を作るときの場合とで、ウインドウの当て方に矛盾があるように
思えてきたわけです。

で、誰か出来るか出来ないかだけでもご存じないかと・・・・・
266デフォルトの名無しさん:2011/01/06(木) 17:07:25
実例で学ぶ ゲーム3D数学 オライリージャパン で勉強始めたのはいいのですが。
サンプルソースがDiectX8なんです。PCに入っているのはDX9で、何処かにDirectX9
に移植したサンプルソースは有りませんでしょうか?
267デフォルトの名無しさん:2011/01/06(木) 17:10:43
自分で移植すれば勉強になるだろう。
268デフォルトの名無しさん:2011/01/06(木) 17:15:17
最初は移植しようと始めましたが、DirectXを勉強している身にはとても出来ないレベルに
感じました、DX8とDX9の違いも分からず。困難であると実感したので、ここで聞いています。
269デフォルトの名無しさん:2011/01/06(木) 17:17:51
PCに入ってるのがDX9でも、DX8を使えるはず
いったんDX8を学ぶという手もある
270デフォルトの名無しさん:2011/01/06(木) 17:19:43
>>265
234のリンク先を見ても、べつに矛盾はしてないと思うけど。

まとめると、
1. フォーカスウインドウは全てのデバイスで共有する。(同じウインドウを指定する)
2. デバイスウインドウはアダプタ(ヘッド)ごとに異なっていないと駄目。
3. 必ず1つのデバイスがフォーカスウインドウをデバイスウインドウとして使用しなければいけない。
271デフォルトの名無しさん:2011/01/06(木) 17:21:24
>>268
DX9SDXを入れてもDX8SDKは入ってません><
272デフォルトの名無しさん:2011/01/06(木) 17:28:42
そうだっけ。じゃあDirectX8のSDKを入れれば・・・って、もしかして手に入らないのか。
273デフォルトの名無しさん:2011/01/06(木) 17:33:57
はい、現在入手不可能です
274228:2011/01/06(木) 17:47:06
>>270

なるほど。明解な説明ありがとうございます。
もうちょっといじってみて、後ほど結果など報告します。
275デフォルトの名無しさん:2011/01/06(木) 17:49:31
実例で学ぶ ゲーム3D数学 オライリージャパン 
のサンプルソースは↓のURLの関連ファイルからダウンロードです。

http://www.oreilly.co.jp/books/9784873113777/

本に載ってるライセンスは、ソースの大半を製品やCDへ乗せる場合は連絡が
必要ですがその他は、自由です。
このなかのviewerとcommonをまとめてコンパイルしています。VC++2008EE使用。
どなたか出来ませんでしょうか?
エラーを出すソースは全ソースファイルの一部です。
276デフォルトの名無しさん:2011/01/06(木) 17:58:19
August 2007以前なら8.0のヘッダ類も入ってるがD3DXとかはないな
277デフォルトの名無しさん:2011/01/06(木) 21:48:03
http://www1.axfc.net/uploader/Sc/so/191323.zip
何上げれば良いのか分からなかったのでviewer.exeだけ。
環境はVC++2008EEとDirectX SDKのAugust 2007
278デフォルトの名無しさん:2011/01/06(木) 22:08:51
>>277
よろしければ、修正したソースを上げて貰えると嬉しいです。
ライセンス的には問題ないです、お願いいたします。
279266:2011/01/06(木) 22:20:44
あ、ちなみに、>>278>>275>>266から始まる、一連の質問者です。
280デフォルトの名無しさん:2011/01/06(木) 22:24:57
>>278
コンパイルエラーなんて一つしか出なかったしログ見たらすぐ分かるしで
わざわざファイル上げるまでもないような?
d3dx8.libはなくてもd3d8.libがあればとりあえずおkらしい
281デフォルトの名無しさん:2011/01/06(木) 22:25:24
手持ちの本の付録CDにDirectX8.0のSDK一式あったけど、これ勝手に再配布していいの?
圧縮しても377Mあるんだが・・・
282266:2011/01/06(木) 22:26:56
え!? すみませんDX9でお願いしています m(_ _)m
283266:2011/01/06(木) 22:28:40
>>281
MSはサポート終了となり、一切の情報が消えていました。
配布はいいと思うのですが… 私には分からないです orz
284デフォルトの名無しさん:2011/01/06(木) 22:34:36
EULAを全く見ないで「いいと思うのですが・・・」って・・・
285デフォルトの名無しさん:2011/01/06(木) 22:42:16
かわいそうにw
マイクロソフトは馬鹿だなw
テメェでバージョンつけたくせに配布止めちまうからなw

古いバージョンの本をゴミにすることで経済効果でも狙ってんのかねぇ・・・(笑)
ちーん!
286281:2011/01/06(木) 22:45:58
そういえばお約束のレスがまだだったな。
>エラーを出すソース
これのエラーは何と出てるんだ?
287266:2011/01/06(木) 22:46:33
実例で学ぶゲーム3D数学の日本語版の初版は2008年10月1日です。
これそれほど古くないでしょ>< (泣き泣き
288デフォルトの名無しさん:2011/01/06(木) 22:53:02
>>285
一体なんのためのバージョンなのかわからないな
289266:2011/01/06(木) 22:53:14
少し手を加えているので。エラーが違うと思いますが。
c:\dunn_example_code\common\renderer.cpp(446) : error C2660: 'IDirect3D9::EnumAdapterModes' : 関数に 3 個の引数を指定できません。
c:\dunn_example_code\common\renderer.cpp(606) : error C2660: 'IDirect3D9::EnumAdapterModes' : 関数に 3 個の引数を指定できません。
c:\dunn_example_code\common\renderer.cpp(700) : error C2065: 'D3DPRESENT_RATE_UNLIMITED' : 定義されていない識別子です。
c:\dunn_example_code\common\renderer.cpp(705) : error C2039: 'FullScreen_PresentationInterval' : '_D3DPRESENT_PARAMETERS_' のメンバではありません。
c:\program files\microsoft directx sdk (march 2009)\include\d3d9types.h(1493) : '_D3DPRESENT_PARAMETERS_' の宣言を確認してください。
c:\dunn_example_code\common\renderer.cpp(770) : error C2065: 'D3DTSS_ADDRESSU' : 定義されていない識別子です。
c:\dunn_example_code\common\renderer.cpp(1065) : error C2065: 'D3DVIEWPORT8' : 定義されていない識別子です。
c:\dunn_example_code\common\renderer.cpp(1065) : error C2146: 構文エラー : ';' が、識別子 'viewData' の前に必要です。
c:\dunn_example_code\common\renderer.cpp(1065) : error C2065: 'viewData' : 定義されていない識別子です。
c:\dunn_example_code\common\renderer.cpp(1837) : error C2065: 'D3DTSS_ADDRESSV' : 定義されていない識別子です。
c:\dunn_example_code\common\renderer.cpp(1954) : error C2664: 'IDirect3DDevice9::SetVertexShader' : 1 番目の引数を 'int' から 'IDirect3DVertexShader9 *' に変換できません。(新しい機能 ; ヘルプを参照)
例としてこんな物が 、もっと出ています。
290266:2011/01/06(木) 23:03:39
うわ〜ん><
291266:2011/01/06(木) 23:05:03
代わりに泣いてくれてありがとー
292デフォルトの名無しさん:2011/01/06(木) 23:05:12
うぜぇ
293デフォルトの名無しさん:2011/01/06(木) 23:14:22
まあ、これはやめたほうがいいね
ページサンプルみた感じそこまでSDKに依存してる内容でもなさそうだから
入門書2〜3冊こなせばバージョンちがくても読めるようになるっしょ
とりあえず別のやっとけばぁ?w

こことかいいんじゃね?
俺もよくお世話になってる
http://marupeke296.com/index.html
294266:2011/01/06(木) 23:17:54
>>293
そこを見てやっていたのですが、今ひとつマトリックス演算が理解できず。
そこの紹介で、実例で学ぶゲーム3D数学を参考にして理解しましたと、有ったので。
買ったんですよ。
295デフォルトの名無しさん:2011/01/06(木) 23:19:22
GDIができるなら、塗りつぶした三角形を自由に書けるようにして、行列で回転とかやれば劣化版だけど勉強にはなるんじゃないかと。
それともDXじゃないといけない理由があるとか?
296デフォルトの名無しさん:2011/01/06(木) 23:20:51
見つけてきたぞ

ttp://www.microsoft.com/downloads/en/details.aspx?FamilyId=B7BC31FA-2DF1-44FD-95A4-C2555446AED4&displaylang=en
これを落すヨロシ
お望みのd3d8.hが入ってる
297266:2011/01/07(金) 00:00:12
>>296
できました、本当にありがとうございます。
しかし、このSDK何処かに保存して、最新のSDK入れて区別しないとですね。
いま2004上書きしちゃいました。
でも、できるようになったので嬉しいです。ありがとうございます。
298デフォルトの名無しさん:2011/01/07(金) 02:14:20
DX8から9の変更点ってそんなにあったっけ?
8のサンプルコードと変更点まとめてあるとこ見ながらやってるけどほとんど問題ないよ
せいぜい引数が1個増えたり減ったりしてる程度
299デフォルトの名無しさん:2011/01/07(金) 06:01:18
あわれwww
300デフォルトの名無しさん:2011/01/07(金) 07:30:31
>>298
HLSLなくね?
描画部分がほぼ組みなおしになった気が・・・
301デフォルトの名無しさん:2011/01/07(金) 19:53:10
case WM_MOUSEMOVE:
GetCursorPos(&point);
ScreenToClient(hwnd, &point);
Drawtest(point.x, point.y);
break;

で呼んで
void Drawtest(int x, int y)
{
char str[] = "Hello World";

// 描画開始
g_lpD3DDevice->BeginScene();

RECT rc;
rc.left = x;
rc.top = y;
rc.right = x+16*strlen(str);
rc.bottom = y+16;

// 描画処理
g_font->DrawText(NULL, str, -1, &rc, NULL, D3DCOLOR_XRGB(255,255,255));

// 描画終了
g_lpD3DDevice->EndScene();
// 表示
g_lpD3DDevice->Present( NULL, NULL, NULL, NULL );
}
Hallo Worldの文字がマウスにぴったりと追従してくれません
ウィンドウの左上から離れれば離れるほど、カーソルと文字がの間が離れて行ってしまいます。
どこがいけないのでしょう?
302デフォルトの名無しさん:2011/01/07(金) 20:01:10
60fpsで1フレームあたり1万ポリゴン描画は数年前の普及型オンボードやネットブックでは厳しいかな?
たとえば、入力や衝突だけ毎回やってif文で奇数フレームだけ描画とかのほうがいいかな?
303デフォルトの名無しさん:2011/01/07(金) 21:00:30
>>302
たとえばMQOのフリー版で試験することは一応可能だが。APIはDXで。
あれで動かなそうだったら、もっとロジック突っ込むゲームでは無理じゃね?
304デフォルトの名無しさん:2011/01/07(金) 21:46:14
>>301
http://msdn.microsoft.com/ja-jp/library/bb173962(v=vs.85).aspx
第5引数のFormatを調整してみては?
305デフォルトの名無しさん:2011/01/07(金) 22:14:25
簡単なMQOのポリゴン増殖講座〜。
1、基本形状を作る。
2、メニューからオブジェクトパネルをだしてオブジェクトのプロパティから、曲面分割する。
3、メニューから曲線をフリーズする。
4、気が済むまで2に戻る。
5、マウスの左ドラッグ。おもいかも〜。

ポリゴン数はオブジェクトのプロパティから確認できるので、簡単♪
ちなみに、C2DとRadeonHD5670でプロパティの数字で20万四角形位出すと10フレーム/秒位だ。体感で・・・。
306デフォルトの名無しさん:2011/01/07(金) 23:40:29
>>302
Radeon HD 4350
ただ表示するだけで10k/1frame @60FPSくらいらしいよ
これ基準に考えると良いかも
307デフォルトの名無しさん:2011/01/08(土) 07:57:06
でも1万っていうとかなりの量だな
俺の同人ゲーが1キャラ5〜600ポリで地形もそんなもんだから
随分たくさん画面に出せるな
308デフォルトの名無しさん:2011/01/08(土) 08:55:33
頂点処理能力だけで言えば秒間60万ポリゴンなんて7-8年前のチップでも余裕なレベル
ぶっちゃけ頂点数だけじゃ評価できないよ

足引っ張りそうなのは描画回数とか
フィルレートとか半透明処理とか当時あんまり速くなかったピクセルシェーダとか
309デフォルトの名無しさん:2011/01/08(土) 09:22:53
シェーダー使うだけで半分になる?
310301:2011/01/08(土) 12:18:19
>>304
左上に合わせたり、いろいろ試したのですが
直りませんでした

こんな感じです
http://www.dotup.org/uploda/www.dotup.org1347139.png
311デフォルトの名無しさん:2011/01/08(土) 13:05:42
右下隅にカーソルに合わせたときのxyの値がウィンドウのサイズと一致するか調べなよ
312デフォルトの名無しさん:2011/01/08(土) 13:11:23
ウィンドウのサイズが 640x480 で
クライアント領域が 624x442 くらいか
313デフォルトの名無しさん:2011/01/08(土) 13:27:15
640*480で

623(横)*441(縦)
でした
314デフォルトの名無しさん:2011/01/08(土) 13:37:20
ウィンドウ作る時にシステム領域を除いたクライアント領域が640x480になるようにするか
クライアント領域のサイズで割って補正しる
315301:2011/01/08(土) 14:16:47
> GetCursorPos(&point);
> ScreenToClient(hwnd, &point);


で、クライアント領域になってるのでは?と思うので
Fontを描くときになんか間違ってるのではないかと思って
316デフォルトの名無しさん:2011/01/08(土) 14:34:52
DirectXのバックバッファのサイズと
クライアント領域のサイズが違うんじゃないか?
317デフォルトの名無しさん:2011/01/08(土) 14:41:05
>>316
うまくいきました!
答えてくれた人たち、ありがとうございます
318デフォルトの名無しさん:2011/01/08(土) 15:48:35
うまくいきました! じゃねーよ。
原因と対処方を書け。お前は解決してうれしいかもしれないが、他の人にとってはまったく無意味。

319デフォルトの名無しさん:2011/01/08(土) 19:18:28
>>318
>>316に書いてあるだろうが
320デフォルトの名無しさん:2011/01/08(土) 19:20:17
この程度も理解できないとかウゼイよね
321デフォルトの名無しさん:2011/01/08(土) 21:40:23
初心者質問スレだろ
何が悪いんだよ
322デフォルトの名無しさん:2011/01/09(日) 05:29:29
320は318に言ってるんじゃないの?
323デフォルトの名無しさん:2011/01/09(日) 09:14:58
2ch ヘッドラインニュースBBY(一覧性が秀逸)http://headline.2ch.net/bbynews/

どんな難解ニュースでも掲示板の書き込みを読んで簡単に理解。
ニュースを勢い順にカテゴリー別で表示する"2NN"(2ちゃんねるニュース速報+ナビゲーター)もどうぞ。
324デフォルトの名無しさん:2011/01/09(日) 10:14:38
HLSLのSamplerとSampler2Dって同じ動作なん?
256色のパレットカラー形式で途中でパレットを切り替えて
アルファブレンドを使わずにフェードイン/フェードアウトしたいんですが
DirectDrawにそういうAPIがあるようなんですがこの場合に
ハードウェア支援は受けられるんでしょうか。
326デフォルトの名無しさん:2011/01/09(日) 15:41:26
それ以前に256色をサポートしてるチップ自体が既に存在していませんので
ということはハードウェアアクセラレーションを受けるには
24ビットとか32ビットとかで処理する必要があるということですかね
その場合にアルファブレンドを使わずにパレットアニメーションのような
フェードイン、フェードアウトをするにはどうすればいいですか
色違いの画像を予め用意する以外の方法でお願いします
例えば入力画素のRGB値が特定の値だったら別のRGB値に変換して
高速に描画をするようなことはできますか。OpenGLなどではどうでしょうか
328デフォルトの名無しさん:2011/01/09(日) 17:15:43
アルファブレンドを禁止する理由は何
329デフォルトの名無しさん:2011/01/09(日) 17:26:16
普通にいたポリを画面いっぱいに
黒で線形合成か白で減算合成かじゃだめなのか
330デフォルトの名無しさん:2011/01/09(日) 18:33:54
シェーダー使えばインデックスパレットみたいな事を擬似実装できるとは思うけど
フェイドにパレットアニメーションを使う意味が分からない
331デフォルトの名無しさん:2011/01/09(日) 21:08:37
スキンメッシュをバイナリにしてヘッダに埋め込んだら凄いサイズになったんだけど小さくしたい。
何かいい方法ない?
元の.xから4倍になってる。
332デフォルトの名無しさん:2011/01/09(日) 21:14:56
>>331
具体的に何をどうしたのか書かないと答えられないだろ。
容量の増加にしても、四倍っつーと凄いように思えるが、
8KBが32KBになったのか、100MBが400MBになったのかで圧縮の可能性だって違うしな。

ただ増え方から言ってインデックスバッファで解決しそうな気もする
333デフォルトの名無しさん:2011/01/09(日) 21:16:52
その前に4倍って何が4倍になったのだろう?
まさかexeのサイズじゃないよね?
334デフォルトの名無しさん:2011/01/09(日) 21:17:50
.xをバイナリ形式にしてコード内にコピペしただけ
335デフォルトの名無しさん:2011/01/09(日) 21:18:32
いや、.x部分だけが4倍
336デフォルトの名無しさん:2011/01/09(日) 21:32:19
.xと.hのファイルサイズを比べてるなら無意味な話だぞ
読み込むバイトサイズで比較しないと
337デフォルトの名無しさん:2011/01/09(日) 21:34:51
0x00みたいになってるからな気がするんだけど違う?
338デフォルトの名無しさん:2011/01/09(日) 22:21:49
あー、だからテキストで貼ったんと違うか
ま、どっちにしても解決方法ないけどなw
339デフォルトの名無しさん:2011/01/09(日) 22:23:21
圧縮してからそのバイナリコード貼り付けて、実行時に解凍するとかじゃダメ?
340デフォルトの名無しさん:2011/01/09(日) 22:31:59
テキストで張るって全部""で囲うの?
341デフォルトの名無しさん:2011/01/09(日) 22:50:00
配列の初期化みたいに入れるんと違うか?
342デフォルトの名無しさん:2011/01/09(日) 22:51:41
1行1行""で囲わなきゃならなくない?
まずそれ用のツール作りからか
343デフォルトの名無しさん:2011/01/09(日) 22:52:49
素直に自分用のモデルデータに変換するプログラム作った方がいいな
344デフォルトの名無しさん:2011/01/09(日) 23:01:31
Resourceとして放り込んじゃダメなのか
345デフォルトの名無しさん:2011/01/10(月) 00:49:24
バイナリにすると一気に実行ファイルサイズが4倍に?!
346デフォルトの名無しさん:2011/01/10(月) 00:52:06
なんか、それって、Hello World 作ったら10Mのexeになった、みたいだな。
100倍以上だ。
347デフォルトの名無しさん:2011/01/10(月) 00:58:51
tiny.xが1.46Mから7.5Mになったんだが
348デフォルトの名無しさん:2011/01/10(月) 01:01:01
必要ない情報でも入っちゃったのかね
349デフォルトの名無しさん:2011/01/10(月) 01:12:05
テキストのファイルサイズで見てるだけじゃね?
350デフォルトの名無しさん:2011/01/10(月) 01:18:07
16進数に直したものをコピペしてるからなんだろうけど、
実用上問題無くても気分が良くない。配布するときも小さいほうがいいだろうし。
351デフォルトの名無しさん:2011/01/10(月) 01:24:35
>>347
だから何が7.5Mになったんだよ?
352デフォルトの名無しさん:2011/01/10(月) 01:29:26
>>361
tiny.xをバイナリ形式にしてソースコード内に埋め込んだら大きくなった
353デフォルトの名無しさん:2011/01/10(月) 01:32:17
だから、どこ見て大きくなったって判断したのか聞いてるんだって
354デフォルトの名無しさん:2011/01/10(月) 01:39:28
埋め込んだヘッダファイルのサイズ
355デフォルトの名無しさん:2011/01/10(月) 01:42:52
テキスト形式→バイナリ形式
1.46M→7.5M

埋め込まずにこうなるの?
356デフォルトの名無しさん:2011/01/10(月) 01:43:25
ファイルサイズとデータサイズが別物だって理解してるのだろうか・・・
357デフォルトの名無しさん:2011/01/10(月) 01:46:40
もしかしてexeは最適化されてちいさくなってる?
358デフォルトの名無しさん:2011/01/10(月) 01:48:34
その7.5とやらのヘッダをうpして貰えればどこが悪いのか指摘しやすそうな
359デフォルトの名無しさん:2011/01/10(月) 01:55:02
ソースコードはテキストファイルなわけで、そこに埋め込むということはバイナリをもう一度テキスト変換してることになるわけで
しかもバイナリをテキスト表記しようとするわけだからソースコードのサイズが増えるのは自明というかなんというか
360デフォルトの名無しさん:2011/01/10(月) 01:57:22
あー多分勘違いしてた
ヘッダ中のtiny.x自体はサイズが変わってるわけなくて、展開された「0x00」みたいな文字列が7.5メガなんだ
361デフォルトの名無しさん:2011/01/10(月) 01:58:08
その自明なことが分かってないお馬鹿さんなんですよ
362デフォルトの名無しさん:2011/01/10(月) 02:01:25
そんな物うpしなくてもいいっていうか、もしかして
「バイナリファイルを、ヘッダに埋め込んだ」 ってのは、
例えば元のファイルが

 FF FF FF FF ← 4バイト

の、4バイトの時、これを16進表記の文字列にして

 "FF FF FF FF" ← 例えばこんな表記で 12bytes

みたいな事を言ってるんじゃなかろうかと邪推。
てかバイナリって意味理解してないような気がする。
テキストだってバイナリだって
363デフォルトの名無しさん:2011/01/10(月) 02:02:41
リロードしたら既に書かれていたでござるの巻
364デフォルトの名無しさん:2011/01/10(月) 02:03:11
たぶんそれです。お騒がせしました
365デフォルトの名無しさん:2011/01/10(月) 02:08:54
大体バイナリデータを16進表現でソースに書いちゃう事を、
ヘッダに埋め込むなんて言い方、まともなPGなら普通言わないよな
366デフォルトの名無しさん:2011/01/10(月) 02:12:26
他のやり方として例えばどんなやり方がある?
367デフォルトの名無しさん:2011/01/10(月) 02:14:03
368デフォルトの名無しさん:2011/01/10(月) 02:14:46
やり方って、何をしたいんだよ
Resourceに含めるんじゃダメなのか
てか普段どんなプログラム作ってるんだ
369デフォルトの名無しさん:2011/01/10(月) 02:16:05
普通にファイルとして読み込めよ
リソースにしたって実行ファイルが肥大化するだけ
370デフォルトの名無しさん:2011/01/10(月) 02:19:29
多分DirectX以前にWindowsプログラミングの基礎とかやらせないとダメな気がする
丸っきり理解してない気がする。
371デフォルトの名無しさん:2011/01/10(月) 02:23:52
Cをひと通りとWINAPIをさらっとやったけどまだ内部でどんな挙動してるか把握しきれてない
372デフォルトの名無しさん:2011/01/10(月) 02:25:51
>>371
じゃあ入門書当たるか、win32APIとか基本的な流れの入門サイトいくか、
そういうスレ行った方がいい。 ここはあくまで DirectXっていう1ライブラリの為のスレだから
いやマジで。 間すっ飛ばして着てもトンチンカンな事にしかならないぜ
373デフォルトの名無しさん:2011/01/10(月) 02:30:33
374 名前:デフォルトの名無しさん[sage] 投稿日:2010/11/24(水) 22:24:26
exe が極端にでかいと、セキュリティソフトのチェックが長引いて起動に時間がかかることがある
UAC が絡むとやばいことになる
しかも XP で開発してると気づかないからめんどい



ってことらしいし普通にファイル読み込んだほうがいいよ
374デフォルトの名無しさん:2011/01/10(月) 02:36:33
複数の xファイルやテクスチャを固めた独自形式・・・ってほど大したもんじゃないけど
データファイルを外出しにはよくしてるな。パックルーチンと、アンパックとあって、
パックは開発時用、アンパックは実行時用。実行時って行っても初期処理で開いてメモリに置いちゃう訳だが
>>328->>330
ファミコン風のフェードイン/フェードアウトをやりたいんですよ…
むしろwin32apiでBitBltでもいいのかもしれないな
8bitビットマップなら転送量も少なくて済むだろうし
377228:2011/01/10(月) 15:31:00
>>270
報告遅れました。今のところ失敗です。
同じコードでマルチヘッド(一枚の場合)とマルチデバイス(従属アダプタが
ない場合)の両方動くのですが、合わせた場合だとうまくいきません。残念。。。
ウインドウは、
一つのフォーカスウインドウを全てのグラフィックカードで共有。
一枚目のカードの主アダプタのデバイスウインドウでこのフォーカス
ウインドウを使用。その他のアダプタにはすべて違うデバイスウインドウを
作成。

378デフォルトの名無しさん:2011/01/10(月) 16:07:10
すみません。
あるベクトルを正面として、90度上下左右方向のベクトルを求めたいのですが、どうすれば良いでしょうか?

D3DXMatrixRotationAxis で正面方向を軸に90°回そうとしたのですが、
正面で90度回しても上下左右を向く訳がないと気付き・・。そもそもその軸が求まれば解決なのですが; orz
379デフォルトの名無しさん:2011/01/10(月) 16:21:14
正面ベクトルと仮の上方向ベクトル(0,1,0)との外積が横方向のベクトル
正面ベクトルと横方向のベクトルとの外積が本当の上方向ベクトル
380378:2011/01/10(月) 16:44:41
>>379
なるほど〜・・。D3DXVec3Crossで求まるのですね。 感謝・・! orz
381デフォルトの名無しさん:2011/01/10(月) 17:09:07
そもそも3D空間で「上下左右」を決めるためには元のベクトルだけじゃ無理で(無数にできてしまう)、
座標軸か何かを基準にすることになる。>>379のもそのやり方。汚い図だけどこんなん。
ttp://iup.2ch-library.com/i/i0220890-1294646376.jpg

DirectXというより数学の問題なので、分からなかったら基礎的な部分だけでいいのでちょっと調べたほうがいいかも。
382デフォルトの名無しさん:2011/01/10(月) 17:47:48
クオータニオンじゃダメなのか?
383デフォルトの名無しさん:2011/01/10(月) 17:50:07
数学弱いのでクオータニオンは任意軸での回転しか使った無い
384デフォルトの名無しさん:2011/01/10(月) 17:51:42
クオータニオンだろうがなんだろうが
正面ベクトルを軸にくるくる回っちゃって無限に存在するから
>>379みたいに天井方向なり水平方向なりを1つ決めてやらないと求まらないでしょ
385デフォルトの名無しさん:2011/01/10(月) 17:55:14
382先生はクオータニオンの隠れた性質について行ってくれるんだろ
じゃなきゃ趣旨がまるで解ってないアホだ
386デフォルトの名無しさん:2011/01/10(月) 19:53:55
>>>385
アホだ
387デフォルトの名無しさん:2011/01/10(月) 23:58:40
すみません。モデルの大きさは抜きにして、
モデルがカメラより前に有る、またはカメラに映るかを判定するにはどうすれば良いのでしょうか?
388387:2011/01/11(火) 00:05:23
内積で求まるらしい計算方法を見つける事ができました。失礼しました。
389デフォルトの名無しさん:2011/01/11(火) 15:32:06
はぁ・・・
390デフォルトの名無しさん:2011/01/11(火) 22:08:28
Visual Studio 2010 C++ を利用して d3d9.dll のラッパー dll を作りたいと思ってます

今までマイコンでの C 程度の知識しか無く、いまいち分かりません
とりあえずすべての命令を d3d9.dll に丸投げするには、どのようなコードになるのでしょうか?
391デフォルトの名無しさん:2011/01/11(火) 22:10:58
マジレスを待っている釣りならもう少し上手くやってほしい
392デフォルトの名無しさん:2011/01/11(火) 22:16:03
>>391
何を持って釣りとするのかよく分かりませんが、もしかして Visual Sutdio 2010 C++ では不可能です?
393デフォルトの名無しさん:2011/01/11(火) 22:20:35
>すべての命令を d3d9.dll に丸投げする
意味がわかりません
394デフォルトの名無しさん:2011/01/11(火) 22:23:58
>>392
マイコンの C 程度しか知識がなくていまいちわからない人が、
どうして C++ で d3d9.dll の、ラッパーの、DLLを、作ろうなんて思ったのか

何をする為のラッパなのか。目的が無いのに知らない言語で書こうとはしないだろ?

「全ての "命令" を丸投げするようなコード」 って奴がもしもあったとして、
それをどうやってスレなんかで説明出来るって言うのか。 またそんな曖昧な質問する奴が、仮にそれをどうしたいのか

その辺、例えばWindows上でMS謹製のIDE使ったからって、どうにかなるなんて普通思わないだろっての
395デフォルトの名無しさん:2011/01/11(火) 22:25:16
>>393
要するに、d3d9.dll と全く同じ挙動をする dll を作りたいと言うことです
でも、d3d9.dll と全く同じプログラムを組むのはとても無理です

そこで調べてみたところ、ラッパーやらフックやらの単語には当たったのですが、いまいちよく分からなくて
396デフォルトの名無しさん:2011/01/11(火) 22:26:35
>>395
d3d9.dllでいいじゃんw
397デフォルトの名無しさん:2011/01/11(火) 22:26:37
>>390
ウィンドウを丸投げして作ってくれるような便利機能はDXにはない。あえて言うならDXUTということになるが。
どっとnetではないDXの最低要件はC/C++&WINAPI&DX だからな。
398デフォルトの名無しさん:2011/01/11(火) 22:28:53
>>395
その道は正道ではないと思われる。
普通にインターフェイス取得して普通のアプリつくりなよ。
399デフォルトの名無しさん:2011/01/11(火) 22:28:53
3Dゲームライブラリみたいのを作りたいわけじゃなくて?
400デフォルトの名無しさん:2011/01/11(火) 22:29:54
>>395
まったく同じ挙動でいいならラッパ書かずにそのまま使えよ
そうでないなら必要な仕様起こして C++ で書けよ
C++ 自体わからないならこのスレ来る前に、言語の勉強しろよ
言語だけならわかるって話ならOSの挙動理解しろ
その中で、OSと同調して動くプログラムは直でBIOS叩かないでAPI関数を経由させるって事の意味を理解してコード書けよ
その後DLLってどんな物なのか理解しろ
その上で、やろうとしてる事をもう一度自分で自分に説明してみろ
おわり
401デフォルトの名無しさん:2011/01/11(火) 22:31:28
>>394
おっしゃるとおりなのですが、C の知識で触っていく内に分かることもあるかと思いまして
ただ、.Net 上で動く 2010 ではそもそも無理なのかなーとは思いました

具体的にやりたいことは、既存のゲームの画面に時計を表示させたりですね


>>396
とりあえず、です
そこへ独自の挙動を組み込んでいきたいというか


>>397
DXUT について調べてみますが、どのみち .Net framework 上で動くようなプログラムでは難しそうですか
402デフォルトの名無しさん:2011/01/11(火) 22:37:05
あぁわかった・・・ もしかして鍵はこれか

>今までマイコンでの C 程度の知識しか無く、いまいち分かりません

もしかして、8bitないし16bitの時代にBASIC、マシン語、C言語でプログラミングしてた時代の人か
もしもそうなら、今のOSの下で動くプログラムは全てブラックボックス(ベンダ提供の何らかのライブラリ、win32やDirectXなど)
を叩く格好で動かすのが正道だから、もしもそれを外れて・・・
例えば直接機械語でVRAMやGRAM叩いて動かすようなイメージ持ってるとしたら、ちょっと難しいとは思うよ。

そしてその場合全責任は自分で取る訳で、その手順の中でさらに DLLっていうOSが管理するリンク手段使おうって話なら
もっとややこしい事になると思うよ。 少なくとも Microsoft製品のエキスパートにならないと無理
403デフォルトの名無しさん:2011/01/11(火) 22:37:34
ハッキングだの何だのといった悪い方向に育つから止めときなさい
404デフォルトの名無しさん:2011/01/11(火) 22:38:05
とりあえず組み込みで3Dっぽいことやりたいならこういう感じだ。
1、任意の座標に塗りつぶした3角形をかけるようにする。
2、行列や、クオータニオンでアフィン変換する。
3、3角形を書くときにピクセル単位でシェーディングできるようにする。

すべての図形は3角形から作れるといわれている。
しかし、トップを行くにはPC業界が積み上げたスタックを習得しないといけないかも。
405デフォルトの名無しさん:2011/01/11(火) 22:42:50
>>404
単純に描画したいだけなら、G-RAMのどこかのアドレスにまず適当なbit数でデータ描けて、
あとはその処理で線分を描けるようにして、
三頂点で作られる面をスキャンラインのようにして塗りつぶすような処理があればおkじゃね

別にそれ自体は行列も四元数もいらない。アフィン変換もいらない・・・ アフィン変換的な処理はいるけど
406デフォルトの名無しさん:2011/01/11(火) 22:44:09
皆さん、いろいろ親切にありがとうございます

VC が駄目なら gcc でコンパイルとか、APIHijack と言う物で実現できるんじゃないかと今調べてましたが、自分の質問がスレの趣旨とずれているような気もしてきました
DirectX を利用した純粋なプログラムというわけではないので、やっぱりズレているかな

API や ライブラリ、フレームワークといったカーネルの上に乗っかってる諸々についてはある程度分かっているつもりでしたが、
そのライブラリひとつに引っかけるのにもいろいろ大変なんですね
うーん
407デフォルトの名無しさん:2011/01/11(火) 22:48:27
>>406
もしもお前が古代から来たおっさんでなく、まして機械語でG-RAMを直接叩いて、
DirectXの代用品のような物を自作したい、って話でも無いとしたら、
技術の伴わない、読んで得た知識だけの、目の前の物が理解できないから自分で全部やってしまおうと思った中二病

というか、VCとgccがどこが同じでどこが違うかの違いもわかってないとか、なんでやねんって話
408デフォルトの名無しさん:2011/01/11(火) 22:51:41
ttp://www1.axfc.net/uploader/Img/so/105245.png

組み込みで触るのはBIOSとOSの間だと思うけど、ウインドウズのなかで普通のアプリ作ったらOSとDXの間あたりを使うことになる。
描画APIもDXのほかにGDIといレガシーのようで現役の2DAPIもある。

そもそも、郷に入らば郷に従えの言葉通り、ウインドウズの作法みたいなものもある。
で、>>406に必要なのは知識量だ。正道から入れば苦労しないところで苦労してるように見える。
409デフォルトの名無しさん:2011/01/11(火) 22:53:10
あげてしまった・・・。
410デフォルトの名無しさん:2011/01/11(火) 22:54:44
>>407
文面から中二病と判断するに至る経緯がいまいちよく分かりませんが、技術が伴わず、読んで得た知識だけというのはその通りです
当然結果には結びつかないので、こちらにお邪魔した次第です

いろいろ荒立ててしまい申し訳ありませんでした
ネット上に散らばった資源を有効活用し、もう少し考えようと思います
411デフォルトの名無しさん:2011/01/11(火) 22:56:59
>>408
ありがとうございます
やりたいことが既存のゲーム画面に介入するという物で、もちろん正道ではないですね

よく分かります
「その前に覚えることがあるだろ」
急がば回れですね orz
412デフォルトの名無しさん:2011/01/11(火) 22:57:07
>>410
とりあえず、聞きかじりで良いから、白紙のウインドウだしてみー。コードのこぴぺ禁止で。
おまじないばかりだけど、ウインドウズではよくある話。
413デフォルトの名無しさん:2011/01/11(火) 22:58:37
>>やりたいことが既存のゲーム画面に介入するという物
これを最初に言っていればどれだけレスがうまくついたやら。
今までの全部無駄になっちゃったよ・・・。
414デフォルトの名無しさん:2011/01/11(火) 22:59:12
>>410
お前はここに来るより前にもっと基本的な所からやり直せよ
じゃないと何も書けないよ。 とりあえず win32API を使って
C/C++ で普通にGUIアプリケーション書けるようになってから考えろ。 まずそれ。
カーネルがどうだとか、そんなのどうでもいいから、まずそれ。
415デフォルトの名無しさん:2011/01/11(火) 22:59:12
「なぜd3d9.dll(というかDirectX)を使おうとしないのか」という点が分からないのでどうにも答えようがない。
>>401で独自の挙動という話はあったけれど、DirectXの提供する機能は割と下位のものが多く、
極端な話printf()とかと同じような標準的な関数レベルで使っていくことになる。
普通のアプリケーションやゲームを作る上で、その挙動を置き換えたいという発想は(少なくとも、あんまり)出てこない。

出てくるとすれば「何をやるにも逐一面倒で、もっと簡単に〇〇をできるようにしたい」というような発想であって、
またそういうためのライブラリ(簡単に使えるようにしたもの)を普通ラッパーと言う。
決して「DirectXを置き換えたもの」じゃない。wrapper、「包み込んだもの」。
416デフォルトの名無しさん:2011/01/11(火) 23:00:25
>>412
JAVA であるライブラリを利用した RS-232C 通信プログラムなら作ったことがあります
これもマイコンとやりとりするのに必要でw

でも、そういう基礎から作り直すのも必要ですね
417デフォルトの名無しさん:2011/01/11(火) 23:02:05
>>413
ごめんなさい、>>401 の時点でやっと趣旨を書いてますね orz
418デフォルトの名無しさん:2011/01/11(火) 23:05:54
質問者は学生か。マイコンのCって、学校でやる基礎の話で、
あとはGC言語しか触った事がなく、でもゲームが大好きで
既存のゲームをそのまま改造的な事をしたいとかそういう奴か。

>>416 に送る言葉は >>400>>414
419デフォルトの名無しさん:2011/01/11(火) 23:07:30
あー、外部から別のアプリやゲームの画面情報を取得したり、また描画に(擬似的に、或いは完全に)割り込んだりすることもできるが、
それをやるのに基本的にはDirectXをハックする必要はない。
また、それはWindowsのウィンドウ描画やイベント処理まわりに付随するので、その辺が分かっていないとどうしよもうない。
420デフォルトの名無しさん:2011/01/11(火) 23:10:23
夢見がちな勘違いド素人のゆとりに付き合うとか
お前らもずいぶんお人良しだな
421デフォルトの名無しさん:2011/01/11(火) 23:20:25
何とかなりそうです
いろいろアドバイスをいただき、ありがとうございました
422デフォルトの名無しさん:2011/01/11(火) 23:23:10
なんとかなりそうなのか・・・
やべぇマジかっけぇ
Microsoftに就職できるだろ
423デフォルトの名無しさん:2011/01/11(火) 23:26:47
この文章だけで見通しが立つとか天才じゃないのか?
424デフォルトの名無しさん:2011/01/11(火) 23:29:27
中二病らしい幕切れ
425デフォルトの名無しさん:2011/01/11(火) 23:47:02
常駐サービスを起動する形でもいいなら
単純にウィンドウをゲーム画面の上に置けば割り込まなくても描画できね?
アクティブなウィンドウの右端に〜って感じでデスクトップマスコットみたいなのでいけんじゃん
特定のウィンドウ名でしか起動したくないっていうならそうもできるし
426デフォルトの名無しさん:2011/01/11(火) 23:49:45
描画自体を書き換えたいとかじゃねえの
まあぶっちゃけ初心者質問スレに書きこむレベルじゃ次元が違いすぎて何していいかもわからないとは思うが
427デフォルトの名無しさん:2011/01/12(水) 01:09:46
何故ここまで見当違いの回答ばっかなんだ
428デフォルトの名無しさん:2011/01/12(水) 01:14:40
>>427
正しい解答を是非どうぞ
429デフォルトの名無しさん:2011/01/12(水) 01:19:08
>>427
君が見てるゴッドビューと流れが違うんだよ。
最初の質問の仕方で大分変わる見本という感じだな。
430デフォルトの名無しさん:2011/01/12(水) 01:21:19
多分 >>427 は質問者本人
431デフォルトの名無しさん:2011/01/12(水) 01:22:37
最初の質問の時点で何がしたいのかすぐわかったが。
長すぎるんでポイントになる部分だけおいておく。

#define CINTERFACE
#include <d3d9.h>

DWORD OldProtect;
VirtualProtect(D3DDevice->lpVtbl, sizeof(IDirect3DDevice9Vtbl), PAGE_EXECUTE_READWRITE, &OldProtect);
D3DDevice->lpVtbl->EndScene = MyIDirect3DDevice9_EndScene;
VirtualProtect(D3DDevice->lpVtbl, sizeof(IDirect3DDevice9Vtbl), OldProtect, &OldProtect);
432デフォルトの名無しさん:2011/01/12(水) 01:22:45
あちゃー。
433デフォルトの名無しさん:2011/01/12(水) 01:33:44
>>431
そういう話なら VirtualProtectEx じゃないの?
434デフォルトの名無しさん:2011/01/12(水) 01:36:48
ProxyDLLなりDLLインジェクションなりで割り込みたいソフトのプロセス内で実行するから
Exである必要はないよ
435デフォルトの名無しさん:2011/01/12(水) 05:54:09
面(壁)と球の簡単な当たり判定のやり方を教えてください
436デフォルトの名無しさん:2011/01/12(水) 06:05:10
Z軸0地点+側を向いた無限長の壁があると想定して、
ボールのポジションからボールの半径を引いたzの値が0以下になったら当たってる
437デフォルトの名無しさん:2011/01/12(水) 06:14:57
┏━━━┓━━━━┳┓
┃┃━┓┻━┓┣━┛┃
┃┣┓┣━┓┣┓┳━┫
┣┓┗┛━╋┓┻┓┏┫
┗━┻━┻━━┗━━┛

このようないろいろな向きがある壁に、当たったら球の座標を
壁に当たるギリギリのとこにしていく迷路のようなものを想定しています
438デフォルトの名無しさん:2011/01/12(水) 06:39:52
当たり判定に簡単も難しいもないから真面目に勉強しろよ
439デフォルトの名無しさん:2011/01/12(水) 08:17:03
DirectXの質問じゃなくてアルゴリズムの質問だよなこれ
440デフォルトの名無しさん:2011/01/12(水) 09:21:17
DirectX的に答えればよくね?
メッシュにレイ飛ばす関数使って、当たったポリゴン取得して
その法線と当たり位置取得して、球の中心と当たり位置の距離が球の半径より小さかったらHit
Hitしてたらあたり位置から法線方向へ球の半径分だけ置いた距離を球の位置に設定して補正完了

これ全部DirectXの関数でできるね
441デフォルトの名無しさん:2011/01/12(水) 17:37:17
すみません。
地形(不透明)以外の、全モデルをソートして遠い順に描画しています。
その中に【両面描画する半透明モデル】が有るのですが、
z値の書き込み(D3DRS_ZENABLE)次第で下のようになります。
Off・・・×理想どおりに描画されない(一部ポリゴンが欠落) ○他モデルとの前後関係は正常。
On・・・○理想どおりに描画される。  ×他モデルとの前後関係は破綻。(z値が0.0になる?)

何か、両方の○を兼ね備えた良い方法はないでしょうか・・?
442デフォルトの名無しさん:2011/01/12(水) 20:23:56
D3DXMatrixInverseの第二引数は何に使用するのですか?
いまいちヘルプを呼んでもわかりませんでした。
443デフォルトの名無しさん:2011/01/12(水) 21:34:56
行列式は、関数内部で逆行列を求める際に使っている。
引数になっているのは、せっかく作ってもったいないからお裾分けする為。
例えば何に使うかはwikiってください。
444デフォルトの名無しさん:2011/01/13(木) 00:20:48
四角ポリゴンってDirectXで三角2つに変換される?
445デフォルトの名無しさん:2011/01/13(木) 00:24:56
>>444
されない
446デフォルトの名無しさん:2011/01/13(木) 00:27:39
DirectXのXファイルの読み込みルーチンたしかゴミだろ
マテリアル分割もしてくれないし、N角形ポリゴンも変換して描画してくれなかった希ガス
間違ってたらスマンコ
447デフォルトの名無しさん:2011/01/13(木) 00:28:24
じゃあメッシュつくるツールでわざわざ三角2つにして法線の向きを調節したりしなくてもいいん?
四角1つのほうがポリ数節約になる?
448デフォルトの名無しさん:2011/01/13(木) 00:29:36
描画されるかどうかということなら四角ポリゴンを三角二つで描画する機能はあるけれど
四角ポリゴンの描画規則が一つではないので、意図した通りにされるとは限らない。
(TriangleStrip、TriangleFanとかで調べてみるといい。頂点を並べる順番が違う)
449デフォルトの名無しさん:2011/01/13(木) 00:29:54
DirectXでは三角ポリゴンのみ扱うみたいなこと書いてあった記憶があるから心配になった
450デフォルトの名無しさん:2011/01/13(木) 00:31:29
ああ、リロードすりゃよかった…

>>447
四角を四角として描画する機能はない。内部的には全て三角になる。
頂点数は節約されるけどポリ数は変わらない。んで、今の環境だと頂点数を節約するメリットもあんまりないかと思う。
451デフォルトの名無しさん:2011/01/13(木) 00:32:58
内部的には全て三角になるってことはやっぱ対角線を指定しておいたほうが確実か・・・
452デフォルトの名無しさん:2011/01/13(木) 00:35:46
Xファイル読み込みルーチンはなにもやってくれないっけ?
それともテキトーに描画してくれたっけ?
453デフォルトの名無しさん:2011/01/13(木) 00:48:58
D3DXあたりに最適化したストリップを作るとかそういう機能はあったような気もするが
昔からの癖で最初から三角で作ってしまうな…
454デフォルトの名無しさん:2011/01/13(木) 00:51:49
1つのメッシュに複数のマテリアルつくと強引に1つで描画しようとするでしょ
もういい加減治った?
455デフォルトの名無しさん:2011/01/13(木) 00:56:03
完全に平面な四角の場合、どっちに対角線付いても同じか・・・
と思いきや法線をスムーズにすると結構変わる?
456デフォルトの名無しさん:2011/01/13(木) 00:57:38
複数のマテリアルって表示できないの?
メッシュのロードのメソッドの後にマテリアルの数を数えたような・・・?
457デフォルトの名無しさん:2011/01/13(木) 00:57:56
どっちでもいいだろそんなの
くだらねぇ
それで売上上がるの?
こだわるなよ給料泥棒(俺のいた会社の社長談)
458デフォルトの名無しさん:2011/01/13(木) 01:02:22
>>443
だいたいイメージはわかりました ありがとうございます
459デフォルトの名無しさん:2011/01/13(木) 08:40:29
DirectXは三角形しかとかツールが云々とか言ってる人は
多分プログラミングまったく関係無いただのエンドユーザ
460デフォルトの名無しさん:2011/01/13(木) 17:36:32
ちょっとハマってるので教えてちょーだい

縮退三角形で変形済みの平面ポリゴンを表示しようとしてるのだけど、
何故か左回り(D3DCULL_CW)じゃないと表示されないという謎の状態。

色々省いてるけど、コードは次のレスのような感じで組んでる。
カリングの設定を、(D3DCULL_CCW)でポリが見えるようにしたいのだけど
何がダメなのかな。
461460:2011/01/13(木) 17:38:15
D3DVERTEXELEMENT9 VertexElements[] = {
{0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITIONT, 0},
{0, 16, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD , 0},
D3DDECL_END() };

m_pVertexData[ iVertexIndex ].v4Pos.x = fX;
m_pVertexData[ iVertexIndex ].v4Pos.y = fY;
m_pVertexData[ iVertexIndex ].v4Pos.z = 0.0f;
m_pVertexData[ iVertexIndex ].v4Pos.w = 1.0f;
m_pVertexData[ iVertexIndex + 1 ].v4Pos.x = fX;
m_pVertexData[ iVertexIndex + 1 ].v4Pos.y = fY;
m_pVertexData[ iVertexIndex + 1 ].v4Pos.z = 0.0f;
m_pVertexData[ iVertexIndex + 1 ].v4Pos.w = 1.0f;
m_pVertexData[ iVertexIndex + 2 ].v4Pos.x = fX + m_v2Size.x;
m_pVertexData[ iVertexIndex + 2 ].v4Pos.y = fY;
m_pVertexData[ iVertexIndex + 2 ].v4Pos.z = 0.0f;
m_pVertexData[ iVertexIndex + 2 ].v4Pos.w = 1.0f;
m_pVertexData[ iVertexIndex + 3 ].v4Pos.x = fX;
m_pVertexData[ iVertexIndex + 3 ].v4Pos.y = fY + m_v2Size.y;
m_pVertexData[ iVertexIndex + 3 ].v4Pos.z = 0.0f;
m_pVertexData[ iVertexIndex + 3 ].v4Pos.w = 1.0f;
m_pVertexData[ iVertexIndex + 4 ].v4Pos.x = fX + m_v2Size.x;
m_pVertexData[ iVertexIndex + 4 ].v4Pos.y = fY + m_v2Size.y;
m_pVertexData[ iVertexIndex + 4 ].v4Pos.z = 0.0f;
m_pVertexData[ iVertexIndex + 4 ].v4Pos.w = 1.0f;
m_pVertexData[ iVertexIndex + 5 ].v4Pos.x = fX + m_v2Size.x;
m_pVertexData[ iVertexIndex + 5 ].v4Pos.y = fY + m_v2Size.y;
m_pVertexData[ iVertexIndex + 5 ].v4Pos.z = 0.0f;
m_pVertexData[ iVertexIndex + 5 ].v4Pos.w = 1.0f;

pDevice->DrawPrimitiveUP( D3DPT_TRIANGLESTRIP, 3, m_pVertexData, sizeof(VERTEX_INFO) );
462デフォルトの名無しさん:2011/01/13(木) 18:07:54
スクリーン座標のイメージで頂点を置いてしまってないか?
CCWでやるなら上下を反転させる必要がある。その置き方だと「下から上に」置いている。
463460:2011/01/13(木) 18:27:00
>>462
変換済みなのでスクリーン座標のイメージであってる。
CCWだと上下反転するのか!びっくりだなぁ。

なにわともあれ、ありがとう。
464デフォルトの名無しさん:2011/01/13(木) 23:34:14
CCWだから反転してるわけじゃなくて
変換済み頂点だから
通常の座標系(上方向y+)ではなく
スクリーン座標系1(下方向y+)だから反転してるように見えてるだけじゃ
465デフォルトの名無しさん:2011/01/14(金) 19:03:30
D3DRENDERSTATETYPEの内容がD3DRS_ZENABLEかなどを真偽したい場合、どのようなコードになりますか?
466デフォルトの名無しさん:2011/01/14(金) 21:31:38
>>465
やっぱGetRenderStateじゃねぇか?
467名前は開発中のものです。:2011/01/15(土) 15:25:26
DirectX9で2Dゲームを作っています。

テクスチャーのアルファ値のある部分を、赤色で塗りつぶしたり、
青色で塗りつぶしたりしたいのですが、どんな方法があるでしょうか?

やりたい事は、テクスチャーに描かれたキャラを、
特定の色で光らせたいと考えており、今のところは、
二つのテクスチャーを用意して、片方のテクスチャーの
抜き色以外の部分を光らせたい色で塗りつぶして、それを表示し、
その上に半透明で本来のキャラを描写するという事をやっていましたが、
もしかしたら他に方法があるかもしれないと思い、質問しました。
468デフォルトの名無しさん:2011/01/15(土) 16:36:33
その演出で光ってるように見えるかは置いといて

シェーダー使えば一発だろうし
使わなくても
ポリゴン(頂点)の色を光らせたい色にしてテクスチャカラーと
加算か乗算でブレンドすれば似たような効果になるんじゃね?
469名前は開発中のものです。:2011/01/15(土) 17:01:34
加算か乗算でブレンドすると透明になりませんか?
470名前は開発中のものです。:2011/01/15(土) 17:06:33
とりあえずシューダーを勉強してみようと思います。ありがとうございました。
471デフォルトの名無しさん:2011/01/15(土) 17:11:57
>>469
背景とブレンドするわけじゃなくて
テクスチャステージステートで頂点カラーとテクスチャカラーをブレンドするんだよ
472名前は開発中のものです。:2011/01/15(土) 18:56:10
>>471
重ね重ね、ありがとうございます。ようやくやりたい事が実現出来ました。
473デフォルトの名無しさん:2011/01/15(土) 19:54:03
>>472
うむ、精進しなさい
474デフォルトの名無しさん:2011/01/16(日) 00:07:26
Directx11にて、フルスクリーン切り替えでちょっと躓きました
症状としてはフルスクリーンからの復帰で画面が真っ白になるというものです
どうやらwarningによると、IDXGISwapChain::ResizeBuffersを呼ばなければならないようですが、
Alt EnterでDx11が勝手にやる上にWM_SIZEイベントで補足できません

勝手にフルスク機能を無効化、
またはこのResizeBuffersを実行するタイミングをどうすれば知ることができるか教えてください
よろしくお願いします
475デフォルトの名無しさん:2011/01/16(日) 06:49:53
>>474
毎フレームやってりゃ問題ないんじゃないか?

まぁ、画面が真っ白ってデバイス消失してるだけのような気もするけど。
476デフォルトの名無しさん:2011/01/16(日) 11:49:26
IDXGIFactory::MakeWindowAssociation()はどうしているの?
これをDXGI_MWA_NO_WINDOW_CHANGESで呼び出しておけば
勝手に何かしちゃうってのは無くなる様だが
477デフォルトの名無しさん:2011/01/16(日) 12:24:40
(ノートPCを閉じて)マシンを休止状態→再立ち上げすると
DirectDrawでの描画が止まってしまうのですが
原因はなんでしょうか?

ウィンドウプロシージャで
case WM_POWERBROADCAST:
UMsg = BROADCAST_QUERY_DENY;
return 0;
break;
は既にやっています。

また、描画を行う関数は再立ち上げ後も
普通に動いているみたいです。

サーフェスが壊れる?か何かしてるのかと思いましたが
デバッグで見るとプライマリサーフェスのアドレスが
再立ち上げ前後で変わったりはしていません。
478デフォルトの名無しさん:2011/01/16(日) 16:16:15
モデルを拡大すればするほど、そのモデルだけが暗くなってしまうんですが、
どうやったらそれを防げるでしょうか?
479デフォルトの名無しさん:2011/01/16(日) 16:22:20
拡大縮小したら法線を正規化
480デフォルトの名無しさん:2011/01/16(日) 16:23:10
D3DRS_NORMALIZENORMALS
481デフォルトの名無しさん:2011/01/16(日) 16:29:35
>>475-476
ありがとうございます
この線でもうちょっと試行錯誤してみます
ありがとうございます
482デフォルトの名無しさん:2011/01/16(日) 16:36:36
>>479-480
法線が原因だったんですね!
今までライトを色々変えて試していたんですが、無駄でしたね(苦笑)。
おかげさまで、解決することができました。
ありがとうございました。
483デフォルトの名無しさん:2011/01/16(日) 17:01:26
Directx9のアニメーションコントローラーで質問です
複数のAnimationSetを含むxfileを使いID3DXAnimationControllerで切り替え等の制御をしているのですが
各アニメーションの長さを取得する方法はないでしょうか?
484デフォルトの名無しさん:2011/01/16(日) 17:06:46
ID3DXAnimationSet::GetPeriod
485デフォルトの名無しさん:2011/01/16(日) 17:15:42
>>484
ありがとうございます
486デフォルトの名無しさん:2011/01/16(日) 17:33:53
>>478
ミップマップを作らなくしてみる

って縮小じゃなく拡大か…違うっぽいな
487474:2011/01/16(日) 18:17:31
IDXGIFactory::MakeWindowAssociation()でDXGI_MWA_NO_WINDOW_CHANGES
ですが、戻り値では成功を示していますが、
動作としてはalt + enterで勝手にフルスクされてしまいました

毎フレームIDXGISwapChain::ResizeBuffersを呼び出すと、
一応フルスクリーンとウィンドウを行き来がうまくいきました。(RenderTargetViewを開放し、Resize、再作成)
しかしDirectxx11の警告は残ったままです
DXGI Warning: IDXGISwapChain::Present: Fullscreen presentation inefficiencies
incurred due to application not using IDXGISwapChain::ResizeBuffers appropriately,
specifying a DXGI_MODE_DESC not available in IDXGIOutput::GetDisplayModeList,
or not using DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH.
DXGI_SWAP_CHAIN_DESC::BufferDesc = { 800, 600, { 1, 60 }, R8G8B8A8_UNORM, 0, 0 };
DXGI_SWAP_CHAIN_DESC::SampleDesc = { 1, 0 }; DXGI_SWAP_CHAIN_DESC::Flags = 0x2;
一応初期化コードを張ります
http://codepad.org/6FA8kpcQ
原因がわかりましたら教えていただきたいです
488デフォルトの名無しさん:2011/01/16(日) 20:34:01
SlimSX + VisualC#2010 + DX11で勉強しているんだが、
標準出力にD3Dのデバッグメッセージが出ない。
VisualC++2010では出るんで、DXのコンパネの設定には問題ないみたい。
どうすればいいかわかりますか?
489デフォルトの名無しさん:2011/01/16(日) 20:38:14
>>488
D3D11_CREATE_DEVICE_DEBUG
をたまたまセットし忘れてるとか?
490デフォルトの名無しさん:2011/01/16(日) 21:50:13
>>489
http://mainori-se.sakura.ne.jp/slimdx/wiki.cgi?page=%A5%C7%A5%D0%A5%C3%A5%B0%BE%F0%CA%F3
ここに書いてありました。
VC2010C#EEだったので、DebugViewを入れて表示できるようになりました。
ありがとうございました。
491デフォルトの名無しさん:2011/01/17(月) 00:44:25
DirectXアプリって一度に何個まで実行できますか?
WindowsXP、DirectX9です。
492デフォルトの名無しさん:2011/01/17(月) 01:13:41
D3DERR_OUTOFVIDEOMEMORYが返るまで
493デフォルトの名無しさん:2011/01/17(月) 17:16:10
あっそ
で?
494デフォルトの名無しさん:2011/01/17(月) 17:40:13
>>493
頭よわいこはマンガでも読んでてください
495デフォルトの名無しさん:2011/01/17(月) 18:18:46
D3DXMatrixOrthoLH();
これがイマイチわかりません。ビューボリュームのサイズを決定していると思うのですが、
四角垂ではなく長方形なのに近平面と遠平面を指定する?のがわかりません。
この関数は空間のどこに描画しているのですか?
496デフォルトの名無しさん:2011/01/17(月) 21:04:16
>>495
画面に表示されるときは平面だが、
このZは遠くのものを小さくするためには使われずに、
Zバッファに渡される値の計算のために近平面と遠平面を指定している
普通に2Dに書きたいだけならば、
頂点バッファの頂点のzの値を近平面に設定しておけばいい
実際に頂点を自分で紙の上ででもmsdnの行列の式で掛け算してみると、
最終的に-1 <= x <= 1,-1 <= y <= 1, 0 <= z <= 1 の間に変換されるのがよくわかる
ただあの式は行優先の行列だから注意が必要だが
497デフォルトの名無しさん:2011/01/17(月) 22:19:01
すみません。現在、キャラの頭上の名札&HPを
VertexBuffer=キャラ数分でDrawPrimitiveもキャラ数分 テクスチャ=全キャラ共有(UV座標別)
とやって描画しています。

しかしDrawPrimitiveやSubsetは重いと聞き、VertexBufferを1纏めにしようかと思ったのですが、
纏めるとソートして描画順序を操作する事は出来なくなりますよね。
でも抜き色しか使わないなら1纏めでも問題ないハズですし、纏めるべきでしょうか?
それともせいぜい200キャラ未満の板ポリなんて纏めても大した意味がなく現状で良いのか。

自分ならこうする という意見で構いませんので助言頂けますと助かります。
498デフォルトの名無しさん:2011/01/17(月) 22:38:58
>>497
マネージャをひとつ作って、
そいつが動的に書き換えられる唯一の大き目の頂点バッファを持って、
描画リクエストをそいつに送り、
描画自体はマネージャが纏めて行うと早いはず

「重さ」だが、FPS制限をはずすと直感的にパフォーマンスを計測できるから
オススメだ
499498:2011/01/17(月) 22:40:36
>>497
あとは4角形ならインデックスバッファを
使ったらいいんじゃないだろうか
500デフォルトの名無しさん:2011/01/18(火) 00:11:10
>>497
200キャラ未満の板ポリだからこそ纏めるべきだと言える
4頂点しか描かないDrawPrimitiveを200回も発行するのは結構足引っ張ってるぞ
501デフォルトの名無しさん:2011/01/18(火) 01:19:02
>>497
重くなってから考えたら?w
502デフォルトの名無しさん:2011/01/18(火) 02:58:07
てす
503497:2011/01/18(火) 19:45:44
>>498-501
色々なご助言ありがとうございます。纏める事に決め、IndexBufferでの描画を最低限実装しました。そこで2点質問が。

@名札ではなく、情報窓(最前面(D3DFVF_XYZRHWでz値は常に0.0f))のそれぞれの前後関係(重なり具合)を
Indexの並び替え(つまり描画順序の操作)で再現すると、zファイト(ちら付き)が起きる危険は高いでしょうか?

A名札やダメージも纏めて、D3DXVec3Projectで得たz値+αで描画しようと思うのですが、
z値は相対的な存在と聞き及びました。
つまり常に固定値で+αすると手前のキャラを貫通したり、逆に対象にめり込む危険が有るのでしょうか?
良い方法が有れば、ご助言頂けますと幸いです。
504デフォルトの名無しさん:2011/01/18(火) 20:12:11
>>497
こういうのを使う。
 複数のジオメトリのインスタンスの効率的な描画 (Direct3D 9)
 http://msdn.microsoft.com/ja-jp/library/ee418549%28v=vs.85%29.aspx

こんな感じのが黄金パターン。
 http://www1.axfc.net/uploader/File/so/57229.zip
Direct3D のチュートリアル05を改造した。
banana.bmp が exe のフォルダにないとエラーになる。

で、必要ならソートする。
動的 VertexBuffer に頂点列を構築するときに、ソート済みの順番で作成する。
505デフォルトの名無しさん:2011/01/18(火) 20:19:34
あれ? リロードしたつもりだったのに。

>>503
前者はチラつきは起こらない。
D3DRS_ZFUNC と描画順によって決定される。

後者はどんなゲームでも大丈夫な銀の弾丸は無い。
良い方法は、
A) 勉強して z について理解し、そのときのプロジェクトの z の範囲を分析した上で適切な値を設定すること。
B) 衝突判定を行って重なったりめり込んだりしないようにする。
のどちらか、または両方。
506503:2011/01/19(水) 02:45:13
>>504 情報ありがとうございます。双方少し目を通して上はページ保存、下はDLさせて頂きました。今後参考にさせて頂きます。
>>505 前者は大丈夫なのですね環境差の不安が拭えました。後者は衝突判定というのも手だったのですね。
    解決方法の目処が立って来ました。ありがとうございます。

そして再質問で申し訳ないのですが、
@描画時(DrawIndexedPrimitive)にテクスチャを切替たく、何度もバラして呼ぶと負担は当然増大するでしょうか?
A現在、テクスチャは全て2048x2048を上限に作っています。
 最終的に、常に多数のモーション付きモデルを再生し続ける類の、負担が多めの物になるのですが、
 切替コストを減らす為に4096x4096や、8192x8192のテクスチャを利用すべきと思われますか?やめた方が無難でしょうか。
 個人的なお考えで構いませんので、ご助言頂けますと幸いです。
507デフォルトの名無しさん:2011/01/19(水) 04:50:29
>>506
http://msdn.microsoft.com/ja-jp/library/ee422132(v=VS.85).aspx
ここに目を通しておくと幸せになれるかもしれない

Draw系の命令はオーバーヘッドが大きいから纏めてやるのがいいだろう
とはいえ何より信頼できるのは自分での時間、FPS計測なのでそっちを頼るのがいいだろう
508デフォルトの名無しさん:2011/01/19(水) 08:52:54
てか、うぜぇ
こんなの実測あるのみ
名札出す前にその分モデルも描画するんだからぶっちゃけまったく変わらないと思う
509506:2011/01/19(水) 16:26:03
>>507 とても嬉しい情報が多数載っておりました、勉強になります。 ありがとうございます。
>>508 失礼致しました; その辺は変わらない可能性も有るんですね。 ご助言ありがとうございます。

今回はとても勉強になりました。回答下さった方々、有難うございました
510デフォルトの名無しさん:2011/01/20(木) 21:41:31
MIDIの再生にはMIDI APIを使ってwavの再生にはdirectMusicを使うことってできますか?
511デフォルトの名無しさん:2011/01/20(木) 22:49:08
MIDIは知らんがwavならXAudio2かちょっと古いDirectSoundだろう
512デフォルトの名無しさん:2011/01/20(木) 22:54:44
質問です
日本語フォントをポリゴンとして描画したいが、
サイズが大きいのでテクスチャフォーマットを小さい
D3DFMT_A8を使おう、そして色はシェーダー定数でいれてしまおう
という流れは自然ですか?不自然ですか?
513デフォルトの名無しさん:2011/01/21(金) 01:02:10
>>512
A4L4 お勧め。
A == 0 が抜き、
A != 0 && L != 0 が文字色
A != 0 && L == 0 が縁取り色
というようなことができる。

で、色の指定はシェーダ定数でもいいけど、頂点色にして >>504 のやり方を使うと DrawPrimitive() の回数が減る。
(画面中の文字色が一色の場合は減らないけど)
514デフォルトの名無しさん:2011/01/21(金) 09:39:36
マルチプルレンダリャンゲターゲッツ(複数形大事)を取り消すとき、

for (int i = 0; i < HoweverManyRenderTargetsIJustUsed; i++)
{
GraphicsDevice.SetRenderTarget(i, null);
}


美しくないそうですが
これの何が美しくないというのですか。
515デフォルトの名無しさん:2011/01/21(金) 11:58:09
> レンダリャンゲターゲッツ(複数形大事)

ただの質問にいちいち小ネタをはさもうとするあたりが美しくない
516デフォルトの名無しさん:2011/01/21(金) 12:18:36
>>512
シェーダー使うならRGBA全部を完全に別のモノクロバッファとして使うと
1つのテクスチャにかける文字数が増えるから、1回のDrawで書ける文字数が大幅に増えておすすめ
517デフォルトの名無しさん:2011/01/21(金) 14:32:39
R32
518デフォルトの名無しさん:2011/01/21(金) 15:28:11
>>514
言ったヤツに聞かないと分からないが、考えられることとしては、
・0 を無効にする意味は無いから for の初期化は int i = 1 とすべき
・有効無効は bitset で指定すべき
・レンダーターゲットのセットを表すクラスを用意するべき
・ever を紛れ込ませるような小ネタを控えるべき
・インデントに &nbsp; を使うべき
あたりかな。

>>516
自分の使ってない方法を薦めるのは誠意が無い。
もし使ってるなら、帯域とシェーダリソースの無駄だから、固有の事情が無い限りはやめたほうが良い。
519516:2011/01/21(金) 17:24:22
>>518
自分のGUIライブラリの文字表示部で使ってるので教えてください

上記でDrawの呼び出し回数が少なくなるのは分かってもらえると思いますが
それ以上に帯域の無駄使いによるオーバーヘッドが大きいと言う事ですか?
一般的なテクスチャフォーマットなので、ある程度の最適化はされている様に思います

日本語や漢字も使うとなると512x512では足りなくなり、サイズはビデオカードの
制限があるため大きくはせず、この方法を採用しました

シェーダーリソースの無駄と言うのは意味が分かりません
確保した領域が無駄に空いている前提の話ですか?

自分の方法を押しつけたいのではなく、この方法があまりに無駄だと言うなら考え直したいと思います
520512:2011/01/21(金) 22:29:18
>>513
ありがとうございます!確かにシェーダ定数より頂点カラーのほうが
楽ですね!こっちでやろうと思います。そして縁取りが必要になったら、
D3DFMT_A8L8も考えたいとおもいます!
>>516
ありがとうございます
すいませんこっちの方法はちょっとわかりませんでした(汗
とりあえず今は513さんのやり方でやってみようかとおもいます。

521デフォルトの名無しさん:2011/01/22(土) 00:21:35
>>519
518ではないけど俺が思ったこと。
まぁ、話半分に聞いてくれ。

>一般的なテクスチャフォーマットなので、ある程度の最適化はされている様に思います
8bppのテクスチャ送るのと32bppのテクスチャ送るのとどっちが軽いかなんて最適化とかそういう問題ですらなく自明だろ?

>日本語や漢字も使うとなると512x512では足りなくなり、サイズはビデオカードの
>制限があるため大きくはせず、この方法を採用しました
日本語や漢字も扱うなら、文字(文字列)が必要になるたびにCPU側のコードで描画して、
テクスチャとして転送するのが普通だと思うが。
(そこに最適化のためにキャッシュ機構を組み込んだりはするだろうけど)
毎フレーム完全にランダムな文字を適当に表示するとかでもない限り、
一枚のテクスチャに全文字を描画しておくなんてことはしないと思うぞ。

512x512x4では、たとえば一文字を16x16としても4096文字しか置いておけない。
この文字数は、例えばノベルゲームのように、完全な日本語の文章を表現するには
ちょっと足りないくらいのレベル(JIS第一・二水準漢字の合計が6000文字強くらい)。
ましてや太字化や文字サイズ変更など望むべくもない。
522デフォルトの名無しさん:2011/01/22(土) 00:30:48
おとなしくDirectX11に移行しなよ
テクスチャサンプラが配列に入れられるからテクスチャ1枚に収める努力がいらないぞ
9でも擬似的にできるけど制限がある上にあまりスマートじゃないんだよね
523デフォルトの名無しさん:2011/01/22(土) 00:38:30
DirectXはまじで新しい奴の方が全然いいな
初学者にはハードル高くなってるかもしれないけど、
一度理解した人にとってはどんどん高度な機能を直感的に扱えるようになってきてる
524デフォルトの名無しさん:2011/01/22(土) 01:52:42
fxc.exeがエラー吐くなんでだろう?
fxc.exe effect.fx /T fx_2_0 /Fo effect.cfx
525デフォルトの名無しさん:2011/01/22(土) 01:53:58
>>524
まず何のエラーか書いてくれ
526デフォルトの名無しさん:2011/01/22(土) 01:58:57
.....\fcx.exe は有効な Win32 アプリケーションではありません。
というメッセージボックスが出て
コマンドプロンプトでは「アクセスが拒否されました」と出ます。
527デフォルトの名無しさん:2011/01/22(土) 02:05:30
>>526
DirectX SDK Command Promptで実行すればいい
528デフォルトの名無しさん:2011/01/22(土) 02:13:39
DirectX SDK Command Promptとは何ですか?
529デフォルトの名無しさん:2011/01/22(土) 02:36:31
>>528
スタートメニューのDirectXフォルダのどっかにあるだろ
お前はまずコマンドプロンプトの使い方と環境変数PATHから調べるべきだ
あとfxc.exeを使わなくても十分なDirect3Dのアプリケーションは作れるぞ
530デフォルトの名無しさん:2011/01/22(土) 03:53:49
D3D11が出たのでD3D11、ってのは俺は大嫌いだな

D3D11デバイス持ってない人はどうなる。

俺ならD3D7パスから必ず書く。
531デフォルトの名無しさん:2011/01/22(土) 05:19:12
x D3D7パスから必ず書く
o D3D7パスしか書けない
532デフォルトの名無しさん:2011/01/22(土) 08:45:50
シェーダー無いとCPU側の最適化で
構造変わりすぎてやってらんないし、
HLSLしか書けないので、
DX9
533デフォルトの名無しさん:2011/01/22(土) 11:44:25
何がムカつくって、アセンブラシェーダ書けなくなったのがムカつく

何がHLSLだ
何がGLSLだ
しゅっぽっぽぅーとか煙吐いてろっての
534デフォルトの名無しさん:2011/01/22(土) 12:02:04
モバイル機ではアセンブラシェーダーは現役っていうかHLSLつかえん
535デフォルトの名無しさん:2011/01/22(土) 16:11:56
DirectInputで、マウス左ボタンのダブルクリックを判別するにはどうしたらいいですか?
536デフォルトの名無しさん:2011/01/22(土) 19:57:31
>>535
押されていない間フレームを数えればよろし
537デフォルトの名無しさん:2011/01/22(土) 23:31:38
GetDoubleClickTimeというそのまんまなAPIがあってだな
538デフォルトの名無しさん:2011/01/23(日) 00:55:48
2Dゲームの効果音を鳴らすくらいなら
Xaudio2よりdirectMusicの方がいいですか?
539538:2011/01/23(日) 00:58:27
間違えた×durectMusic○directSound
540デフォルトの名無しさん:2011/01/23(日) 04:16:42
XAudioの方が簡単だと思う
541デフォルトの名無しさん:2011/01/23(日) 07:27:00
1ms未満のティックをやりたい場合どうしたらいいのですか。
最悪でも1nsでカウントしてくれないと話にならないのですが。
542デフォルトの名無しさん:2011/01/23(日) 08:56:20
>>541
QueryPerformanceCounterという関数があるらしいが
ぶっちゃけ実際にしっかり動いてるのかどうか試してみたことない
543デフォルトの名無しさん:2011/01/23(日) 09:03:49
精度を求めるならASIO
よってスレ違い
544538:2011/01/23(日) 09:55:52
>>540
ありがとうございます。
XAudio2でやってみます。
545デフォルトの名無しさん:2011/01/23(日) 12:21:06
x86なら、本来はAPICを自分で制御するのが当たり前。

このタイマユニットを利用して1nsを得る。

ところが、これをやろうとするとカーネルサンダース側のドライバが必要だときたもんだ。
バカか
546デフォルトの名無しさん:2011/01/23(日) 13:21:22
OS上で叩きたいならそのOSの都合も許してやれ
547デフォルトの名無しさん:2011/01/23(日) 14:12:28
自分で時間計測用のスレッド裏で走らせればいいじゃん
実測値ではなくて予想値になるからパフォーマンスが不安定な環境だと精度悪いかもだけど
548デフォルトの名無しさん:2011/01/23(日) 14:15:56
スレッドの切替にどんだけ時間食うかわからないからなー
俺の予想では1ms単位になると思うな
549デフォルトの名無しさん:2011/01/23(日) 14:16:55
>>547
わざわざスレッドを設けるとどんなおいしいことがあるんですか?
550デフォルトの名無しさん:2011/01/23(日) 14:21:15
RDTSCなどは、使い物にならない。

まずRDTSCの呼び出し自体が遅い。
TSCカウントはコアごとに違うので一定ではない。
TSCがクロックにより変動するCPUが多数を占める。

更に問題なのは、マルチコアの場合
 RDTSCで読み取るTSCの値がどのコアのものなのか分からない

呼ぶたびに違うコアが呼ばれるので、
例えばあるコアのTSCが100のときに呼んだとしても
次にRDTSCしたら別のコアが呼ばれ、そのコアでは60
だということも大いに有り得るわけで
まったく役に立たない。
551デフォルトの名無しさん:2011/01/23(日) 14:23:06
>>541
DX使用で1ms以下のタイマーが必要な場合を想像つかないが、何に使う?
制御関係なら、PCにオンボードCPU繋げて使えばいいだろ。
具体的に何に使うんだ?
552デフォルトの名無しさん:2011/01/23(日) 14:41:05
少なくともAIなら1msスライスじゃ
まともなもん出来ないな
553デフォルトの名無しさん:2011/01/23(日) 14:46:08
>>552
>少なくともAIなら1msスライスじゃ 、まともなもん出来ないな
そこんとこkwsk、想像つかんぞ
554デフォルトの名無しさん:2011/01/23(日) 15:02:53
AIの場合、余程アルゴリズムが複雑でない限り
1クロックで解を出すべきものだろ
そういう性格だから、switch-caseは絶対に使わない。使っているのもいるかもしれないが、それはカスだ

1クロック、1デューティが1nsだったら1nsで出す。
だから1msは無駄もいいとこだ
555デフォルトの名無しさん:2011/01/23(日) 15:06:20
>>554
それは1msスライスと全然関係が無いじゃないか?
AIで1msスライスを必要としているのはあるのか?
556デフォルトの名無しさん:2011/01/23(日) 15:13:43
要は、
1msの間に何回1nsがあるか

ってこった
処理回数は多ければ多いほどいい
557デフォルトの名無しさん:2011/01/23(日) 15:18:10
だから、1msスライスを必要とする処理を>>552は説明すべき。
558デフォルトの名無しさん:2011/01/23(日) 15:20:00
AI持ち出した奴が聞きかじりのガキなことが解ったので終了
559デフォルトの名無しさん:2011/01/23(日) 15:32:22
こっちは必要ねえって言うのに
必要とする処理って何。
560デフォルトの名無しさん:2011/01/23(日) 15:33:34
1msでは足りない、1msは必要ない
必要なのは1ns

なのに

1msスライスを必要とする処理を


は?????
561デフォルトの名無しさん:2011/01/23(日) 15:38:01
キチガイのフリをして誤魔化そうとしていますw

こういうのが歳喰ってもまとまになれないことは
ゆとり教育が証明しちゃったからな
562デフォルトの名無しさん:2011/01/23(日) 15:39:28
あーあ

ダメだこのバカw
563デフォルトの名無しさん:2011/01/23(日) 15:39:49
ヒント:物理シミュのタイムスライスにタイマーは必要ない
564デフォルトの名無しさん:2011/01/23(日) 15:47:45
1クロックで解を出すって本当?
Z80の記憶だとレジスタに値入れるだけで1サイクルなんだけど
どうすんのマジで
565デフォルトの名無しさん:2011/01/23(日) 16:12:00
AIは、逐次で進んでいかないからタイマー制御がいるんだよ

決まりきったルートで制御していくわけじゃないぞ
566デフォルトの名無しさん:2011/01/23(日) 16:13:20
晒しあげ
567デフォルトの名無しさん:2011/01/23(日) 16:16:45
http://www36.atwiki.jp/directx/pages/22.html
ここを見つつ
カーソルキーを使って画像を移動させることはできたのですが
タスクバーのボタンを押して最小化し、
http://www.dotup.org/uploda/www.dotup.org1377857.png
また戻すと
かってに画像が動いてしまうのですがどうしてそうなるんでしょうか
568デフォルトの名無しさん:2011/01/23(日) 16:17:21
ここら辺は組み込みと同じだ

単位時間内にちゃんと解を出せればいいのだが、
そうでないときももちろんある

デッドラインを超えたら問答無用で次に渡さないといけない。
そういうときもタイマーが必要

それは1msの分解能では荒すぎる。
569デフォルトの名無しさん:2011/01/23(日) 16:25:00
>>568
その様なクソな設計だから、いらぬタイマーが必要だとなる。
世の中のゲームはその様なタイマーは不要な設計をしている。
自身を見直した方がいいのじゃないか?
570デフォルトの名無しさん:2011/01/23(日) 16:27:32
まさかタイマー使われてねえとか言い出すんじゃねえだろうなw


レンダリングも、フレームレート計測もタイマーありきだぞw

バカだバカ
571デフォルトの名無しさん:2011/01/23(日) 16:28:22
救いようがない
572デフォルトの名無しさん:2011/01/23(日) 16:28:40
そもっそも割り込みそのものがタイマー要るんだからな

573デフォルトの名無しさん:2011/01/23(日) 16:29:41
ドライバ書いたこともないどころか、ソース見たこともない無知バカだなこりゃ

タイマーというと特殊な例でしか使ってねえみたいに恥ずかしい事言い出すのは
たいていそういうバカ。
574デフォルトの名無しさん:2011/01/23(日) 16:29:45
>>569
嘘を嘘と見(ry

鹿爪らしく並べてるだけの超理論を
相手にするなよ
575デフォルトの名無しさん:2011/01/23(日) 16:31:48
タイマーの使われ方も知らないバカを晒し上げ
576デフォルトの名無しさん:2011/01/23(日) 16:34:28
はやくタイマーバカはWindowsで1nsの分解能で出せるタイマー教えてやれよw
577デフォルトの名無しさん:2011/01/23(日) 16:36:13
AIでミサイルの誘導でもしたいのかな?
フレーム単位だと微分値としては荒いのは分かるけどどうしようもないな。
いっそ処理自体を毎秒1万フレームで回すとかw
578デフォルトの名無しさん:2011/01/23(日) 16:38:00
>処理自体を毎秒1万フレームで回す
タイマー無しで処理を10倍100倍回すのはレーシングゲームでは常識
579デフォルトの名無しさん:2011/01/23(日) 16:41:21
1nsは可能だが、それにはドライバが必要だって既に書いてあるだろw


日本語も読めないのかあのバカw
580デフォルトの名無しさん:2011/01/23(日) 16:42:23
物理演算なんかもタイマーは必要。
581デフォルトの名無しさん:2011/01/23(日) 16:43:52
そうなのかw
なら解決じゃん。
582デフォルトの名無しさん:2011/01/23(日) 16:44:56
VSYNCが16.66msか否か程度で
馬の首取ったかのようにしゃしゃり出てきた

要は痛々しいんだよオマエ
583デフォルトの名無しさん:2011/01/23(日) 16:45:53
ということで世の中のゲームAIはカーネルドライバで
タイマー取得してないので総じてカスが結論だそうです

お し ま い
584デフォルトの名無しさん:2011/01/23(日) 16:46:00
今はたいていがAPICだろうが、そのAPICを自分でやればいい。

WindowsやLinuxのウェイト関数やカウント関数もそれ使ってるんだからな

その分解能が大体1msだというだけ

それが不満なら、自分でAPICを駆動さすしかない。
585デフォルトの名無しさん:2011/01/23(日) 16:46:25
そもそも高精度なタイマーの精度が必要ならWindowsは使わないし、
出来もしない、存在しないタイマーの話をDirectXスレでする馬鹿はいったい何がしたいんだろう?
586デフォルトの名無しさん:2011/01/23(日) 16:47:36
16.6msなのは更新されるのがそれなだけであって

16.6msごとに処理してるわけじゃないぞw
その間にも凄まじいフレームが出来上がっている。

だからダブルバッファやトリプルバッファができんだよw
60フレームとして、16.6ms内に2枚ないし3枚終わらなかったらバッファリングできねえんだよw
587デフォルトの名無しさん:2011/01/23(日) 16:48:36
>>585
まさに
          ,〜〜〜〜〜〜 、
|\     ( 釣れたよ〜・・・)
|  \    `〜〜〜v〜〜〜´
し   \
゙'゙":"''"''':'';;':,':;.:.,.,  ヽ○ノ
          ~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                 ト>゚++<
              ノ)
588デフォルトの名無しさん:2011/01/23(日) 16:49:14
被害妄想
589デフォルトの名無しさん:2011/01/23(日) 17:00:16
>>586 :真性の(ry

AI処理や物理演算に必要なタイマは
描画タイミング(VSYNC)かほぼ無視してよい
入力タイミングしか無いんだよ
590デフォルトの名無しさん:2011/01/23(日) 17:08:11
V-syncないときはどうするつもりだよw

ないゲームももちろんあるし、ユーザーが選択しないときももちろんある

バカバカしい
591デフォルトの名無しさん:2011/01/23(日) 17:11:04
w使う奴は会話についていけないんだな
592デフォルトの名無しさん:2011/01/23(日) 17:12:28
>ないゲームももちろんあるし、ユーザーが選択しないときももちろんある
もっと精度の低いタイマでOkの場合だろ

アホは黙ってろ
593デフォルトの名無しさん:2011/01/23(日) 17:12:40
はやく1ns以下の頻度でドライバに問い合わせてカーネル遷移を繰り返す
クソじゃないゲームばかりになると良いですね(笑)
594デフォルトの名無しさん:2011/01/23(日) 17:12:59
頼むからこれ以上は無知を晒さないでくれ
あと>>567はさすがにそれじゃわからん
595デフォルトの名無しさん:2011/01/23(日) 17:25:24
1ms=1000000ns?
596567:2011/01/23(日) 17:52:40
ウィンドウを非アクティブにすると、
カーソルKeyでしか移動しないはずの、表示されている画像が、
かってに移動してしまうということでした


SetCooperativeLevel(HWND hwnd, DWORD dwFlags);で

DISCL_BACKGROUND のフラグを設定したら
ウィンドウが非アクティブでも画像が勝手に動くことはなくなりました

自己解決してしまいましたが
レスを返してくれてありがとうございました
597デフォルトの名無しさん:2011/01/23(日) 18:41:45
精度が高くてもV-syncなしのゲームなんか山ほどあるぞ?w
598デフォルトの名無しさん:2011/01/23(日) 18:42:42
16.6msなのは更新されるのがそれなだけであって

16.6msごとに処理してるわけじゃないぞw
その間にも凄まじいフレームが出来上がっている。

だからダブルバッファやトリプルバッファができんだよw
60フレームとして、16.6ms内に2枚ないし3枚終わらなかったらバッファリングできねえんだよw
599デフォルトの名無しさん:2011/01/23(日) 18:57:51
トリプルバッファって意味なくね?
600デフォルトの名無しさん:2011/01/23(日) 19:06:18
>>598の書き方だと無いw
601デフォルトの名無しさん:2011/01/23(日) 20:11:33
Xaudio2使おうと思ったけどDecember 2004には入ってないのか
しょうないからDirectSound使うか
602デフォルトの名無しさん:2011/01/23(日) 20:13:18
なぜ、新しいのを使う選択肢を無くす?
603デフォルトの名無しさん:2011/01/23(日) 20:14:59
Xaudio2やdirectInputをXboxと同じプラットフォームに置き換えたいのは経営上仕方ないんだろうけど
開発側からしたらクソ面倒だよな
604デフォルトの名無しさん:2011/01/23(日) 20:49:39
使わなきゃいいだけでなにも面倒は無いが
605デフォルトの名無しさん:2011/01/23(日) 21:25:26
D3DXのDLLバージョン問題を回避するには、2004を使い続けるしかないんだろう。
606デフォルトの名無しさん:2011/01/23(日) 22:06:39
ランタイムのインストーラーもいっしょに配ればいいんじゃねーの?
607デフォルトの名無しさん:2011/01/23(日) 22:32:28
そもそも計算結果プロットするようなシミュレーションなら
高精度タイマーとか不要だよね
608デフォルトの名無しさん:2011/01/24(月) 07:53:42
素人じゃやらないだろうし、職業にしていても縁なんかあまりないが
3Dなんてなるとダブルバッファも4枚だぞ
609デフォルトの名無しさん:2011/01/24(月) 21:41:19
この板は職業の人も沢山来るから、そんな恥ずかしいことを言い張らないほうがいいよ。
610デフォルトの名無しさん:2011/01/24(月) 22:06:46
自分が知らない事を書かれる

嫉妬する
611デフォルトの名無しさん:2011/01/24(月) 22:21:58
初心者でもBulletやPhysXのチュートリアルはできる
煽るにも無理がありすぎ
612デフォルトの名無しさん:2011/01/24(月) 22:46:15
C言語〜ゲームプログラミングの館〜 [DXライブラリ]
http://dixq.net/g/
を一通り試してみた。
基本的なことはいろいろ分かってきて面白いんだけど、いざゲームを作ろうと思うとここだけじゃ無理なのね。
このあとどのサイトや本を見たらいいんだろう?シーンクラスとかそれっぽい言葉は分かるんだけど…
ちなみに、C++はド初心者で、Rubyとかスクリプト言語を少し使える程度。
RPGが作りたいけど初心者だし定番のシューティング→アクション→…って形でも全然おk。
とにかく、「ゲームという形にする」ための知識がほしい。
613デフォルトの名無しさん:2011/01/24(月) 23:35:10
>>612
あー、ゲームを作るチュートリアルみたいな本やサイトがほしいのね
ねぇよ
もう10年もPGやってるけど
いまだにその類の書籍やサイトをみたことがないw
あっても「え〜(笑)」って内容w
614デフォルトの名無しさん:2011/01/24(月) 23:46:38
教科書に教えてもらって作るもんじゃないもんな、こればっかりは。
むしろ溜め込んだ自分の中のロジックを実験とか応用しろって話
いやマジで
615デフォルトの名無しさん:2011/01/24(月) 23:48:34
全部人から教えてもらってコピーペーストしたいです
絵だけ描いて自作と言い張りたいです。あなたのアイデアを全部下さい
考えるのめんどいです
616デフォルトの名無しさん:2011/01/24(月) 23:56:03
>>612
一通りやってシューティングの1つも出来ないとは、それはやったんではなくて、
眺めただけ。または、本当に無能なので、プログラマ諦めろ。
617デフォルトの名無しさん:2011/01/25(火) 00:09:22
>>612
最初から完成された作品を作るんじゃなくて
機体の画像を←→↑↓のボタンで動かせるくらいの簡単なプログラムを
組むのを目指すといいよ
618デフォルトの名無しさん:2011/01/25(火) 02:36:00
>>612
アマゾンで「ゲーム プログラム」とかで検索してみて、
良さそうな本を片っ端から漁ってみたら。

ま、とりあえず一からテトリス作るだけでもとっかかりが見つかるし、
見つからないなら諦めた方がいいと思う。
そもそもRPG作りたいとか言ってる時点で向いてないと思う。
619デフォルトの名無しさん:2011/01/25(火) 03:43:03
>>612
これ結構網羅されてると思うんだけど
もしかして3Dやりたいって事?
620デフォルトの名無しさん:2011/01/25(火) 06:08:35
Effect->SetTechnique();
Effect->Begin();

Device->SetRenderTarget( 0, テクスチャ1のサーフェイス);
Device->Clear();
Effect->BeginPass(0);

Device->SetRenderTarget( 0, テクスチャ2のサーフェイス);
Device->Clear();
Effect->BeginPass(1);

Effect->EndPass();
Effect->End();

これでPass(1);が描画できません。なぜでしょうか。
試した事
・描画に入る前にGetRenderTarget()で保持した(画面全体にテクスチャ1が描画されてしまった)
621デフォルトの名無しさん:2011/01/25(火) 06:10:54
ちなみに
Device->SetRenderTarget( 0, テクスチャ1のサーフェイス);
Device->Clear();
Effect->BeginPass(0);
の部分をコメントアウトすると、Pass(1);が描画されます。
622デフォルトの名無しさん:2011/01/25(火) 06:30:32
>>620
型宣言が無い
intとして認識しろという事か
623デフォルトの名無しさん:2011/01/25(火) 06:42:34
Device->GetRenderTarget();これのことですか?
624デフォルトの名無しさん:2011/01/25(火) 08:27:10
パス1のEndPassが無い
625デフォルトの名無しさん:2011/01/25(火) 08:29:30
>>620
BeginPass(0) に対応する EndPass は?
626デフォルトの名無しさん:2011/01/25(火) 08:35:37
>>624-625
これでした!お騒がせしました
627デフォルトの名無しさん:2011/01/25(火) 09:18:13
{ } 式にしねえからダメなんだよな。

スコンパイラは { } の抜けはちゃんとチェックするのに
if end とか begin end とか、end関係は軒並みチェックしない。
628516:2011/01/25(火) 10:36:51
>>521-522
遅くなりましたが有難うございます!参考になりました。
629デフォルトの名無しさん:2011/01/25(火) 12:36:54
ダイレクトイソプットって、俺にとっては使いづらい

なにがダイレクトじゃボケェ
630デフォルトの名無しさん:2011/01/25(火) 12:57:12
GetASyncKeyStateで十分だな
631デフォルトの名無しさん:2011/01/26(水) 00:31:42
DirectInput はこんなインタフェースの自前クラスをライブラリに突っ込んでいるので
特に使いづらくも無いぜ http://codepad.org/mGWcus8n
632デフォルトの名無しさん:2011/01/26(水) 00:42:47
joy***で十分だな

つーかMSもベンダーにXInputの対応強制させるくらいすれば良いのにー
633デフォルトの名無しさん:2011/01/26(水) 02:20:21
2つテクスチャを作ってそれぞれのサーフェイスに書き込まれたあと、片方をもう片方に代入する場合、
Tex1 = Tex2;
で問題ありませんよね?
でもこれをやると代入されたほうのテクスチャが何も描かれていない状態になります。どうしてでしょうか。
スレ違いかもしれませんが、お願いします。
634デフォルトの名無しさん:2011/01/26(水) 06:45:11
IDirect3DTexture9オブジェクトをつくり、NULLを代入して
D3DXCreateTexture();で描き込み用のテクスチャを作り、サーフェイスを取得して書き込める状態にしました。
が、テクスチャには何かメモリ上のゴミが入ってるようです。どうしてでしょうか。
また、描画ループで初期化する方法はありますか?
635デフォルトの名無しさん:2011/01/26(水) 07:24:10
何も書いていないのなら、中に入っているのは当然不定だろう。
初期化したければすればいいだけの話。
何が疑問なのかさっぱり分からん。
636デフォルトの名無しさん:2011/01/26(水) 08:06:25
変数 = NULL;でいいの?
637デフォルトの名無しさん:2011/01/26(水) 08:13:49
そもそもC/C++自体理解してるのだろうかって匂いがする
638デフォルトの名無しさん:2011/01/26(水) 08:14:34
変数はあくまでインターフェースであって
NULLを入れようが代入しようがテクスチャの中身が初期化されたりコピーされる訳ではない
Lockしてピクセルを書き換えるか
レンダリングターゲットに指定してClearするとかしないと
639デフォルトの名無しさん:2011/01/26(水) 08:18:09
>レンダリングターゲットに指定してClearするとかしないと
これをしているのに何か入っています。
640デフォルトの名無しさん:2011/01/26(水) 08:27:28
俺が入れた
641デフォルトの名無しさん:2011/01/26(水) 08:28:45
とりあえずソース出せと
642デフォルトの名無しさん:2011/01/26(水) 08:28:52
ポインタでない物をコピーしようとしてる時、そもそも
コピーコンストラクタや演算子オーバロードの状況を気にせず
= で結んでそのまま放り込んじゃうとかありえない
643デフォルトの名無しさん:2011/01/26(水) 08:29:01
どうせくだらないミスをしているんだろう。
644デフォルトの名無しさん:2011/01/26(水) 08:44:58
とりあえず理解度確認用
http://codepad.org/EnHsPAyg
645デフォルトの名無しさん:2011/01/26(水) 09:07:55
なんで釣られるかな。
646デフォルトの名無しさん:2011/01/26(水) 09:14:34
後から来て釣りとか言い逃れ
647デフォルトの名無しさん:2011/01/26(水) 09:51:14


宣言や確保ってのは、あくまで「ワク」を用意したに過ぎない。

「こっからここまで俺の土地ね!」って囲った

しかし、囲っただけでは雑草は取れない。

ちゃんと草むしりしないといけない。

どんな言語でもそうだが、それと同じだろう
最近はコンパイラが勝手に0で初期化してくれるものもあるようだが
648デフォルトの名無しさん:2011/01/26(水) 10:01:08
>>644
同じメモリ領域を2度消そうとしている?

ちなみにテクスチャを他のテクスチャに移そうとするときどうやります?
649デフォルトの名無しさん:2011/01/26(水) 11:36:21
どうやるも何も、わざわざコピーするための命令が用意されているだろ。
650デフォルトの名無しさん:2011/01/26(水) 13:13:25
本当だ1つ前のソースでちゃんとやってた
もうどこが悪いのかすらわからなくていままでやってきたのが間違ってるんじゃないかとか疑いはじめてメチャクチャだわ
651デフォルトの名無しさん:2011/01/26(水) 13:26:14
間違ってるから動かないんだろう。
いったい何を言ってるんだ?
652デフォルトの名無しさん:2011/01/26(水) 13:27:40
ああそうなんだけどC言語まで理解してない気がしてきて変な質問が出てきた
653デフォルトの名無しさん:2011/01/26(水) 20:47:28

常識だと思っている事が通用しない世界もあるので難しい。

free(Fuckintosh);
Fuckintosh = NULL;

Fuckintoshを使い回すので、一回freeしたらNULLを入れる
これが当たり前だと思っていたら

「余計な事すんな!」

と来た。
654デフォルトの名無しさん:2011/01/26(水) 21:12:19
メタセコイアで作ったモデルが黒くなって色が出なかったり
色が出ても周りの色まで変わっちゃうんですがなにか対策ありますか?
655デフォルトの名無しさん:2011/01/26(水) 21:28:10
原因を調べて改善すればいい。
656デフォルトの名無しさん:2011/01/26(水) 21:29:16
そもそもメタセコイアって時点でメチャせこいわ。
657デフォルトの名無しさん:2011/01/26(水) 22:16:04
>>654
SetMaterialあたりの設定ミスだろう
もしくはD3DRS_DIFFUSEMATERIALSOURCEの値とか
658デフォルトの名無しさん:2011/01/26(水) 23:44:23
>>654
どういう処理でそうなるのか言わないのに
対策なんて想像でしか書けなくね
659デフォルトの名無しさん:2011/01/27(木) 10:55:13
>>656
セコくてごめんよう
俺もメタセコなんだw
660デフォルトの名無しさん:2011/01/27(木) 11:11:06
俺もメタセコ
Bryceも使ってる
661デフォルトの名無しさん:2011/01/27(木) 14:49:53
今、「15歳からはじめるDirectx9、3Dゲームプログラミング C++編」を見ながら
DirectxのチュートリアルフォルダのTut04_Lightsフォルダ内のLights.cppを新しいプロジェクトに
コピーしビルドしようとしているのですが以下のエラーが出てビルドが出来ません

1>------ ビルド開始: プロジェクト: d3dtest02, 構成: Debug Win32 ------
1>LINK : fatal error LNK1104: ファイル 'd3d9.lib d3dx9.lib winmm.lib' を開くことができません。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

ちゃんとDirectx SDK もインストールし、追加の依存ファイルに d3d9.lib d3dx9.lib winmm.lib を指定し
インクルードディレクトリ、ライブラリディレクトリにパスも設定しました。
これは何が原因なんでしょうか、解決方法を教えてください。
開発環境はVC++2010です、宜しくお願いします。
662デフォルトの名無しさん:2011/01/27(木) 15:01:16
>>661
Google「'd3d9.lib d3dx9.lib winmm.lib' を開くことができません。」カチッ!
663デフォルトの名無しさん:2011/01/27(木) 15:13:42
>>662
明らかに的外れ

>>661
全角スペースで区切ってたり " で全ファイルを囲ってたりしないか?
664デフォルトの名無しさん:2011/01/27(木) 15:34:40
>>663
返信ありがとうございます、確認した所ちゃんと半角スペースで区切られていました
ファイルを"で囲っていることもないです。
googleでも検索してディレクトリパスの確認、libファイルはちゃんと入っているのかなど
いろいろ確認してみたのですが解決できませんでした。
665デフォルトの名無しさん:2011/01/27(木) 15:39:16
>確認した所ちゃんと半角スペースで区切られていました
それが原因だ
666デフォルトの名無しさん:2011/01/27(木) 15:46:37
>>665
おおおおおおおおおおおおおおおおおおお!!!!!!!!!
それが原因だったんですか!今スペースじゃなくて改行で複数指定した所しっかりビルドが通りました
書籍では半角スペースで複数指定と書かれていたのでここを疑うことがなかったです。
本当にありがとうございます、これでまた一歩ステップアップできそうです。
667デフォルトの名無しさん:2011/01/27(木) 18:24:18
えええええええええええええええええええええ!!!!!!!!!
668デフォルトの名無しさん:2011/01/27(木) 18:54:42
vsの設定はなんでこんなオンボロなのかな
文字列で書かせないでちゃんとファイル参照ボタンにしたらいいじゃないか
ファイル指定する場所なんだから
669デフォルトの名無しさん:2011/01/27(木) 19:10:35
ファイル名のみを指定する場所であってフルパスを指定する場所じゃないから
670デフォルトの名無しさん:2011/01/27(木) 19:18:19
>>669
ライブラリ参照パスは設定してあるんだから
そこのファイル一覧でも出して選択させてやりゃいいんじゃね?とか思ったり
まあなんつーか他の部分はやたら豪勢なのにこういう設定部分がショッパイ出来だから
なんか気になったって感じだけど
671デフォルトの名無しさん:2011/01/27(木) 22:35:55
そのライブラリ参照パスは複数あるのが普通だし
どこのパスを最初にGUIで表示するのかは一意に決められんよ
672デフォルトの名無しさん:2011/01/27(木) 22:56:48
>>671
じゃ、パスの中にあるファイルを一覧で全部出せばいいじゃん
とか、なんかテキトーに(別のやり方も色々あると思うよ)解決策が浮かんじゃうのに
なんでコレなのよ・・・ってショッパイのが結構あるじゃん
673デフォルトの名無しさん:2011/01/27(木) 23:11:07
開発環境なのに、なんでそんな初心者仕様でどうでもいいところを作り込まないといけないんだよ。
ゆとりにも程がある。
674デフォルトの名無しさん:2011/01/27(木) 23:17:10
>>673
まあ、思想はどうでもいいけど
「だっせー」ってただそれだけなんだけどねw
675デフォルトの名無しさん:2011/01/27(木) 23:33:31
大量のライブラリサーチパスから数百数千のライブラリをずらずら表示なんて
そんな糞重くて使いにくいUIイラネ
676デフォルトの名無しさん:2011/01/27(木) 23:48:55
>>675
いや、そもそも他にやり方いくらでもあるでしょ
ライブラリ参照パスをフォルダ一括にしてるのがそもそもの間違いだろってところから入ることになるけどw

だから何もかも古いんだよ
まあ、ちょっと前のvsは環境変数とか使ってたから仕方ないっちゃそうだけど
それもvs2010になって変えたみたいだけどあんまりセンスいい仕様にはならなかったなぁ的なガッカリ具合
677デフォルトの名無しさん:2011/01/27(木) 23:52:10
今のところお前が出してる解決策は全部駄目出しされてるみたいだけど?w
678デフォルトの名無しさん:2011/01/28(金) 00:09:22
視差マップから水面の波をやっているんですが、小学生の絵みたいな波しかできない・・・。
どなたかサンプルを見せてもらえませんか?
679デフォルトの名無しさん:2011/01/28(金) 00:14:21
http://www.youtube.com/watch?v=NAsoXHHCqWM
いま波ってここまでできるのな
680デフォルトの名無しさん:2011/01/28(金) 00:36:53
>>679
これはすごい波
681デフォルトの名無しさん:2011/01/28(金) 08:40:13
>>677
それは今の話題とはあんまり関係なくない?
そもそもの仕様がダサいってところが根本にあるわけだし
682デフォルトの名無しさん:2011/01/28(金) 08:52:54
ダサいといっている人間のセンスが無いから、
ダサいとのたまうだけで、ろくな解決方法を提示できないというだけの話。
その辺にいる、文句だけ言うくせに何も出来ない自称評論家。
683デフォルトの名無しさん:2011/01/28(金) 08:58:12
>>682
じゃ、参照フォルダは無しでフルパスで1つずつ(いつものファイルダイアログ)で
現状の仕様より大分マシになるじゃん
684デフォルトの名無しさん:2011/01/28(金) 09:33:07
現状より数倍酷いわ
685デフォルトの名無しさん:2011/01/28(金) 09:37:06
>>684
なんで?
ソースファイルとかだって同じように追加してるじゃん
仮にソースとかをライブラリファイルみたいに
フォルダ+ファイル名で指定するようにしたらブーイングの嵐だと思うよ
686デフォルトの名無しさん:2011/01/28(金) 09:57:31
*.libもソリューションエクスプローラ上でドラッグドロップで追加できるが、
いったい何を言ってるんだ?
単純に環境の使い方が分かっていないだけの馬鹿だろ。
687デフォルトの名無しさん:2011/01/28(金) 10:13:10
>>686
そんな話じゃねぇw
688デフォルトの名無しさん:2011/01/28(金) 10:15:45
そんな話も何も、ソースファイルと同じ追加方法でライブラリの追加も出来る。
阿呆にもほどがある。
689デフォルトの名無しさん:2011/01/28(金) 12:13:48
>>688
だから今その画面の話してないじゃん
690デフォルトの名無しさん:2011/01/28(金) 12:14:39
>>688
さっきからツッコミがまるで的外れなんだけど
なにか病気でももってるの?
691デフォルトの名無しさん:2011/01/28(金) 12:25:01
操作方法すら分かっていないんだから、
これ以上恥の上塗りをしても仕方がないだろ。

脳内だけの妄想センスが凄いのだけは分かったよ。
692デフォルトの名無しさん:2011/01/28(金) 12:26:09
どっちの病気持ちもスレ違いだから消えろ
693デフォルトの名無しさん:2011/01/28(金) 12:27:42
>>691
操作方法?
ああ、「;」と「 」で間違えてなんのエラーもでなくて苦しんだ被害者が出たねw
すごくいい仕様だと思うよ理想的だ
694デフォルトの名無しさん:2011/01/28(金) 12:30:11
ヘルプを読まない馬鹿がいても、すべてMSの責任。
凄いゆとりだ。
695デフォルトの名無しさん:2011/01/28(金) 12:30:37
シェーダーのディスプレイスメントマップって重い?
水面の波作るのにこれやったらリアルになりそうだけど5年くらい前のローエンドPCじゃ描画はキツイかな?
696デフォルトの名無しさん:2011/01/28(金) 12:37:31
>>694
センスが悪いって話をしてるのに
ヘルプを読めってどうとらえたらいいのかな?
君の脳みそが腐ってる可能性を考慮したほうがよさそうだよね
697デフォルトの名無しさん:2011/01/28(金) 12:57:40
>>696
自分のセンスが悪いのに気がつかない時点で痛いよ。
簡単にライブラリを追加したいならソリューションエクスプローラを利用するし、
コードに依存するライブラリが明確なら#pragmaを指定しておけばいいだけの話。
使い方が分かっていないのを棚に上げて、センス云々とか恥ずかしいにも程がある。
698デフォルトの名無しさん:2011/01/28(金) 14:07:58
>>697
じゃあ、なんであんな余計な設定画面ついてんだよw
あの設定画面はセンス悪いのは認めるんだよね?
699デフォルトの名無しさん:2011/01/28(金) 14:29:08
どうでもいい話してないで、DirectXの話しろよ
700デフォルトの名無しさん:2011/01/28(金) 14:36:17
>>698
VSのUIがダサイかどうかはそれこそ今は関係無いよね
お前の提案がことごとく現状より役に立たないだけw

で、次のぼくのかんがえるさいきょうのUIは?

>>695
5年前じゃ重いかどうか以前にサポートしてるかどうかも怪しいよ
701デフォルトの名無しさん:2011/01/28(金) 14:43:05
>>700
何が関係ないんだよ
もともとあの画面のセンスが悪いって話してたんだよ
また、全然関係ないこと結び付けて話ししたでしょ?

大丈夫かよお前w
PG組めるのかってより社会人として仕事やっていけるのかw

すべてのレスが

とーんちーんかーんちーん一休さーんw
      ∩___∩
   (ヽ  | ノ      ヽ  /)
  (((i ) / (゜)  (゜) | ( i)))
 /∠彡    ( _●_)  |_ゝ \
( ___、    |∪|    ,__ )
    |     ヽノ   /´
    |        /
702デフォルトの名無しさん:2011/01/28(金) 14:57:21
>>701
>もともとあの画面のセンスが悪いって話してたんだよ

君がそう主張したいのに誰も同意してくれないから可哀想だよね・・・

みんな少なからずVSのUIには不満を持ってるはずなのに
なにせ君から出てくる解決策がさらにセンス無いもんで同意のしようがないwww
703デフォルトの名無しさん:2011/01/28(金) 15:04:03
>>701
ワラタ
704デフォルトの名無しさん:2011/01/28(金) 15:13:03
センスがない奴ほど他人のセンスを攻撃したがる。
これクレタ人のコモンセンス。
705デフォルトの名無しさん:2011/01/28(金) 15:15:37
入力処理作るのが面倒でxファイルをD3DXLoadMeshFromXで読み込んでるのだけど
頂点バッファをロックして値を取り出したい場合に構造体でキャストをする必要があるじゃない?
その構造体って、どうやって決定すればよいのか分からないんだ。

現状はCloneMeshFVFで強制的に変更しちゃってるのだけど
何か他に方法があったりする?
706デフォルトの名無しさん:2011/01/28(金) 15:31:40
頂点構造体のサイズはGetNumBytesPerVertexで調べられるけど
要素へのオフセットや型はGetDeclarationで地道に計算するかないんでないの
707デフォルトの名無しさん:2011/01/28(金) 15:42:22
とーんちーんかーんちーん一休さーんw
708デフォルトの名無しさん:2011/01/28(金) 16:28:20
>>705
自前でX-Fileを読めば、余計なことを考えなくてすむよ。
パーサは用意されてるし。
709デフォルトの名無しさん:2011/01/28(金) 16:48:41
用意されてるよね
710デフォルトの名無しさん:2011/01/28(金) 19:42:14
ブラックボックスの積み上げコードは予定通りの方法が楽になるだけ
自前で自由にしたければ自分で書くのが普通
711デフォルトの名無しさん:2011/01/29(土) 05:08:29
>>706
Pixでよくね?
プログラム中で調べるて、FVFをジェネレートでも
するの?
712デフォルトの名無しさん:2011/01/29(土) 05:23:54
>>711
705を読んでから書いてるの?
713695:2011/01/29(土) 06:42:40
Core2Duo3GHzでCPUエミュレーションで水面と太陽の描画だけ
ディスプレイスメントマップ付き:CPU 30%
ディスプレイスメントマップ無し:CPU 15%
キューブマップなどは、あまり負荷に影響せず

みなさん、ハイエンドではない一般ユーザ向けに作る場合どんな基準で開発しますか?参考に教えてください。
714デフォルトの名無しさん:2011/01/29(土) 08:28:02
オプションでON-OFF切り替えられるようにしとけば解決
715デフォルトの名無しさん:2011/01/29(土) 16:50:54
DXUTを使って、.xファイルから描画を行いたいんですが、
サンプルを見る限りでは、.fxファイル(エフェクトファイル)を使用してる例ばかりです。
DXUTは、.fxファイルの使用は必須なのでしょうか?
.xファイルのみから描画をしてるサンプル等がありましたら教えてもらえないですか。
716デフォルトの名無しさん:2011/01/29(土) 17:00:25
チュートリアルにメッシュの描画って無かったけ?
717デフォルトの名無しさん:2011/01/29(土) 17:01:36
DXUTにXファイルの読み込み描画ヘルパークラスがあったはず
そいつのRender関数が
Effect使用版と固定機能版の二通り用意されていたはずだが
718デフォルトの名無しさん:2011/01/29(土) 19:35:32
DirectX9です。
バックバッファ以外に、バッファを用意してそれにレンダリングし終わってからバックバッファに転送する、ってのをやりたいです。
自分で考えた流れは、
1. CreateRenderTargetでサーフェス確保
2. SetRenderTargetしてレンダリング
3. UpdateSurfaceでバックバッファに転送
しようと思ったんですが、RenderTargetになるのはD3DPOOL_DEFAULTだけで、それはUpdateSurfaceできないとSDKのドキュメント読んで分かりました。
普通、こういうことをやるときはどういう構成にするものなんでしょうか?
組み込みスクリプトのフロントエンド的なものを作りたくて、そのためにバックバッファにもう一段バッファを噛ませたいんです。
ほとんどDirectXは初めてなので何か根本的に理解してないとこがあったら指摘お願いします。
719デフォルトの名無しさん:2011/01/29(土) 19:43:36
>>718
つStretchRect
テクスチャをレンダーターゲットにするのもあり
720デフォルトの名無しさん:2011/01/29(土) 20:14:21
単なるトリプルバッファじゃないのか?
721デフォルトの名無しさん:2011/01/29(土) 20:23:24
サーフェイスじゃなくて普通のテクスチャをレンダリングターゲットとして作成して
そのテクスチャを描画するだけじゃだめなのか?
722デフォルトの名無しさん:2011/01/29(土) 20:43:54
>>721
横から失礼してくだ質だけど
サーフェイスとテクスチャの違いって何?
723デフォルトの名無しさん:2011/01/29(土) 20:44:20
ディスプレイスメントマップって意味わからんな
ポリゴン数が減るわけでもないしスキンメッシュじゃダメなのか?
724デフォルトの名無しさん:2011/01/29(土) 20:48:43
>>722
テクスチャはサーフェイスを含むが、
サーフェイスがテクスチャとは限らない。
725デフォルトの名無しさん:2011/01/29(土) 20:52:04
イクロソフト(MS)が27日発表した決算は、純利益が5四半期ぶりの減益だった。中核のパソコン用基本ソフト(OS)「ウィンドウズ」の事業部門で、営業利益が4割減ったのが響いた。
アップルの「iPad(アイパッド)」に代表される「タブレット型」の多機能情報端末との競合に加え、無償OSが普及したためだ。
726デフォルトの名無しさん:2011/01/29(土) 20:53:14
レンダーターゲットテクスチャにレンダリングすればミップマップも自動で作ってくれる
727722:2011/01/29(土) 20:57:32
テクスチャの方がサーフェスよりも大きい物だったのか

サンクス 今まで逆だと思い込んでたんで混乱していた。
今まで上手く解釈できないでいたヘルプを読み直してくる
728デフォルトの名無しさん:2011/01/29(土) 21:18:27
Direct3D9を使用してます。

頂点カラーを所持したXFileをD3DXLoadMeshFromXを使用して
読み込み、描画を行いたいのですがどうも落ちてしまいます。

頂点カラーが反映されずに描画はうまくいく。という状況であれば、
データが所持されていない等など推測できますが、

ゲーム自体がその場で落ちてしまうことから、現プログラムが頂点カラーに
対応していない、と考えてよろしいのでしょうか?

よろしくお願い致します。
729718:2011/01/29(土) 21:32:25
ありがとうございました。

>>719
StretchRectで動作しました。感謝です。

>>720
そうなんですけど、こっちのほうが柔軟性があるかなと。

>>721
何となく、余計なものがない単なるサーフェスのほうがこういうバッファには似合うじゃないかっていう理由です。
テクスチャのほうがいいですか?
730デフォルトの名無しさん:2011/01/29(土) 21:38:32
>>828
まぁ、そんな難しい話じゃなくて
単にファイル読み込みに失敗しててNULLポインタにアクセスしてるから落ちてるとかってオチじゃね?
ちゃんとデバッガ使えばどこで落ちてるかななんて一発だ
731デフォルトの名無しさん:2011/01/29(土) 22:31:56
一発だって・・・
732デフォルトの名無しさん:2011/01/29(土) 22:55:06
すみません。
「カメラ座標とキャラクター座標の間に、地形ポリゴンが有るかどうか」
を検出するにはどうすれば良いでしょうか?
(多くの3Dゲームで有る、カメラが地形にめり込まない事を表現したく思っています。)
733デフォルトの名無しさん:2011/01/29(土) 23:01:09
>>732
仮にあったらどうするの?
カメラを地形の前までもっていく?
地形自体を半透明にするか消す?
734デフォルトの名無しさん:2011/01/29(土) 23:06:04
コナミカメラの特許マジでなんとかしてほしい…
735デフォルトの名無しさん:2011/01/29(土) 23:52:38
>>732
キャラクターとカメラの座標を結ぶベクトルに、
ボリュームをつける(円柱とか、一番良いのは視錐台と同じ)
そのボリュームと地形との当たり判定
736デフォルトの名無しさん:2011/01/30(日) 00:06:12
つい最近DirectXスレで1ns精度のタイマが必要とか言って暴れてたのがいたような・・・
737デフォルトの名無しさん:2011/01/30(日) 00:07:30
いやんスレ間違えた
738デフォルトの名無しさん:2011/01/30(日) 00:07:50
つい最近DirectXスレでとーんちーんかーんちーん一休さーんとか言って暴れてたのがいたような・・・
739デフォルトの名無しさん:2011/01/30(日) 00:09:34
とーんちーんかーんちーん一休さーんw
      ∩___∩
   (ヽ  | ノ      ヽ  /)
  (((i ) / (゜)  (゜) | ( i)))
 /∠彡    ( _●_)  |_ゝ \
( ___、    |∪|    ,__ )
    |     ヽノ   /´
    |        /
740デフォルトの名無しさん:2011/01/30(日) 01:56:35
>>739
フイタw
741デフォルトの名無しさん:2011/01/30(日) 04:53:37
テクスチャは2の階乗じゃなきゃいけないとか、サイズは512*512までとか書いてあったりするんですが、
SDKのマニュアルのどこに載ってますか?
そんな小さかったら2D描画には分割でもしないと使えないですよね?
単に2D画像ファイル(1280*720とかの大きめの)を表示したいだけの時の王道(D3DXのスプライト以外で)は何なんでしょうか?
Web探しても断片的で解説がしっかりしてないのがほとんどで、見よう見まねで
矩形ポリゴン書いて、D3DXCreateTextureFromFileして、巨大なテクスチャ貼り付けたら上手くいったんですが、ちゃんとしたやり方なのか不安です。
SDKのドキュメントとかサンプルもテクスチャはいきなり3Dっぽくなったりしてて……
D3DXLoadSurfaceFromFileを使ってやる方法もあってどっちにすればいいのか迷ってます。
良い模範サンプルがあったら教えてください。
742デフォルトの名無しさん:2011/01/30(日) 04:59:47
具体的な制限値はビデオカードによります
D3DCAPS9のMaxTextureWidthとかMaxTextureHeightとかD3DPTEXTURECAPS_POW2とかを調べてください
743デフォルトの名無しさん:2011/01/30(日) 10:27:11
512*512ならどのカードも安全ってことでしょ
別に分割描画くらい面倒がらずに書けばいいじゃない
744デフォルトの名無しさん:2011/01/30(日) 10:52:32
ビデオカードがどこまでサポートしてるのか知りたいなら
dxinfoと↓の見といたほうがいいよ

> C:\Program Files\Microsoft DirectX SDK (August 2007)\Samples\C++\Direct3D\ConfigSystem\CardCaps.pdf
> にCAPS一覧がある。
745デフォルトの名無しさん:2011/01/30(日) 11:49:26
分割描画くらい、って簡単に言うけど
拡大縮小や回転とかしたら境目が浮き出たり、割と大変だよな
確かにその辺りを解説した本もサイトも見たことないや
テクスチャの拡大フィルタとかとの格闘になる

サイトはともかく、そういう本ってあるのかな?
746デフォルトの名無しさん:2011/01/30(日) 11:56:20
境目とかビデオカードのクセもあるので一概にはなんとも
747デフォルトの名無しさん:2011/01/30(日) 13:34:09
>>745
画面よりデカイテクスチャ作っちゃえばいいじゃないですか
748デフォルトの名無しさん:2011/01/30(日) 13:36:22
などと意味不明な供述をしており・・・
749デフォルトの名無しさん:2011/01/30(日) 13:57:35
いまどきそんなグラボはねぇんだよ
みんな画面よりデカイテクスチャ作っちゃってるから
そんなところは対応してない
だいたいフィルタかけたら線が入っちまって対応不能だろ
2xだか4xだか8xだか16xだか対応してらんね(俺は)
750デフォルトの名無しさん:2011/01/30(日) 14:15:25
グラボは問題ないけどチップセットに内蔵のはどうなんかね。
2000年以降であれば2048くらい行けるのかな?
751デフォルトの名無しさん:2011/01/30(日) 17:57:20
化石みたいなチップへの対応に時間使うくらいならもっと別のことに力いれろよ
752デフォルトの名無しさん:2011/01/30(日) 19:24:07
だいたいなんだ512って
いまどきVooDooでもサポートするつもりか?w
753デフォルトの名無しさん:2011/01/30(日) 19:42:12
バックバッファのフォーマットにアルファ持たせると何かいいことあるんですか?
754デフォルトの名無しさん:2011/01/30(日) 19:49:57
>>753
色が変わったピクセルの差分だけを描画できる・・・というのは冗談として、
エコーやブラーが表現しやすいとかあった気がする。あれ、バックバッファだったっけな。
755デフォルトの名無しさん:2011/01/30(日) 20:20:29
VooDooって256*256じゃなかったっけ
756デフォルトの名無しさん:2011/01/30(日) 20:36:09
頂点カラー+テクスチャのXファイル読み込んで描画させたいんだけど、
3Dソフト上と同じように中々描画されなくてなきそう

DxViewerで見てもテクスチャ張られてないわ、頂点カラー描画されてないはなんだが

これはもう書き出し時点で何かしら間違ってるってこと?
757デフォルトの名無しさん:2011/01/30(日) 20:57:55
ファイルの中身を確認すればいいだろ。
普通の人間だったら質問する前にやるべきことだが、
脳みそが腐っているのか?
758デフォルトの名無しさん:2011/01/30(日) 21:02:35
だろ。
759デフォルトの名無しさん:2011/01/30(日) 21:16:45
>>756
DirectXViewerは信用できないよ
昔のSDKについてたMeshViewでみるのが一番なんだが
760デフォルトの名無しさん:2011/01/30(日) 22:31:45
>>757
ttp://dixq.net/forum/viewtopic.php?f=3&t=7725&sid=c87addc213e323f8df77f8bd489c203b
むこうの掲示板も相互リンクを張らないと規約違反だぞ。
761デフォルトの名無しさん:2011/01/30(日) 22:32:44
762732:2011/01/30(日) 22:47:29
>>733 ありがとうございます。
>>734
特許情報も読んでみましたが、理解できたのはコナミ邪魔。って程度でした。
>>735
線分と面で作ってみてボリュームの必要性を理解しました。
視錐台について再勉強しようかと思います。ありがとうございました。
763デフォルトの名無しさん:2011/01/31(月) 02:51:28
>>756
Xファイルの中身見てテクスチャのパスとか確認してみたら?
764デフォルトの名無しさん:2011/01/31(月) 11:35:37
HLSLでテクスチャを貼ってライトをあてて描画するとチカチカと点滅してしまう・・・
エスパーの方この情報だけでどこに問題がありそうかわかります?
765デフォルトの名無しさん:2011/01/31(月) 11:43:58
描画処理
766デフォルトの名無しさん:2011/01/31(月) 11:57:14
描画処理?
767デフォルトの名無しさん:2011/01/31(月) 12:06:12
何で聞き返すんだよ
768デフォルトの名無しさん:2011/01/31(月) 12:07:59
どういう意味かわからなかったので
769デフォルトの名無しさん:2011/01/31(月) 12:10:51
提示された内容でどこがおかしいかって答えで
真っ先に思いつくべき処理はそれだから見直した上で
これをこうやったがダメだった 何がおかしいんだろうか って展開させろよ

答える側に何もかも丸投げするな
770デフォルトの名無しさん:2011/01/31(月) 12:19:02
僕の質問はなんでしょうか。エスパーの方、答えてください。
初心者なので考えるのがめんどくさいです。
正解以外はいりませんのでよろしくお願いします。
771デフォルトの名無しさん:2011/01/31(月) 12:27:13
>>770
「僕の質問はなんでしょうか」が質問なら、答えは「僕の質問はなんでしょうか」だろ
772デフォルトの名無しさん:2011/01/31(月) 12:32:14
ああもうわかったよ
描画処理とだけ言われても描画処理で詰まってるんだから狭義で何かを指してるのかと思ったんだよ
まだ話は全然進んでないのにその怒り方とか予定調和が好きそうだね
他で聞くことにするわ
773デフォルトの名無しさん:2011/01/31(月) 12:37:50
directSoundでセカンドバッファを100個くらい作っても問題ないですか?
wavファイルごとバッファを作って同じ音を同時に鳴らす音は
同じファイルでも複数バッファを作るプログラムを作ったんだけど
後から考えたらこれでいいのか不安になりました。
774デフォルトの名無しさん:2011/01/31(月) 13:23:38
不安が問題なら、まずはカウンセリングを受けることから。
775741:2011/01/31(月) 13:26:15
ありがとうございました。
どうも大きいテクスチャを気にしないのが普通みたいなので気にせず大きいの使うことにします。
776デフォルトの名無しさん:2011/01/31(月) 15:23:11
>>772
その処理をどうやってどう詰まったのかも言わないまま逆ギレとか
お前が100%悪い
777デフォルトの名無しさん:2011/01/31(月) 15:24:33
わかれよ!
俺がイライラしてんだろが!
ぶっ殺すぞ!
778デフォルトの名無しさん:2011/01/31(月) 16:48:42
とーんちーんかーんちーん一休さーんw
      ∩___∩
   (ヽ  | ノ      ヽ  /)
  (((i ) / (゜)  (゜) | ( i)))
 /∠彡    ( _●_)  |_ゝ \
( ___、    |∪|    ,__ )
    |     ヽノ   /´
    |        /
779デフォルトの名無しさん:2011/02/01(火) 03:00:53
エスパーすると
頂点宣言と実際の頂点バッファのフォーマットが違うから正しく表示できない
780デフォルトの名無しさん:2011/02/01(火) 09:27:47
正解はメソッドで正規化されたベクトルをシューダー内で再びノーマライズしたからでした
781デフォルトの名無しさん:2011/02/01(火) 10:13:15
何回正規化しても結果は変わらないはずなのにおかしいな・・・
782デフォルトの名無しさん:2011/02/01(火) 10:35:45
俺もおかしいと思うわ
他のものと組み合わせて使ってるわけじゃないから俺のプログラムのどこかから廻り廻ってバグってるんだろうな
783デフォルトの名無しさん:2011/02/01(火) 11:58:27
行列のどれかがあやしいんじゃないか?
法線の正規化はシェーダ内でやるようにしたら?
784デフォルトの名無しさん:2011/02/01(火) 13:02:38
当方、DirectX初心者です。ここ数日悩んでいる事があります。
下記サイトのソースを使ってDirectX9上で頂点バッファによる直方体を
描こうとしています。

http://www.h2.dion.ne.jp/~takusoft/directx8/d3d/chapter1/sec14/d3d_14.html

ソースにあるように奥の面 -> 手前の面の順でDrawPrimitiveを呼び出す場合
問題なく描画されるのですが、手前の面 -> 奥の面の順にすると
Zバッファが効かず呼び出し順で描画されてしまいます。
何か根本的な間違いをしているのでしょうが原因がわかりません。

他のソースにある座標変換済み頂点(RHW)で試したところ、
DrawPrimitiveUPではきちんとZ値を意識して描画できているので、
D3Dデバイスの初期化や設定に間違いは無さそうなのですが。

当方環境
・DirectX SDK(August 2008)
・VS2005
785773:2011/02/01(火) 13:10:17
レスが無かったので質問を変えます。
directSoundでセカンドバッファを最初につくりまくって再生するのと、
再生するたびにセカンドバッファを破棄して作り直すのはどっちがいいんですか?
786デフォルトの名無しさん:2011/02/01(火) 14:38:49
>>785
最初に作りまくったほうがいいんじゃね?
あんまりでかいwavをリアルタイム処理中に読み込むとちょっと時間かかるからゲーム止まるかもよ
787デフォルトの名無しさん:2011/02/01(火) 14:40:33
や、でもボタンクリックしたら音を鳴らすみたいなツールを作ってるときは
用途によって違うかもしんない・・・
一覧でファイル名出してクリックしたらBGM再生なんて場合は
一覧のファイル全読み込みしたらさすがに製作者に殺意がわくかもしれん
788デフォルトの名無しさん:2011/02/01(火) 15:43:33
>>784
デプスバッファかレンダーステートのどちらかの設定がおかしい。
ソース一式どっかに上げて見せてもらわないと原因は特定できない。

それと、最初は分かりにくいけど、そういうバグの原因を調べるには便利だから PIX for Windows を使ってみろ。
789デフォルトの名無しさん:2011/02/01(火) 16:01:39
>>784
そこのサイトのコードに問題がある。

>D3DXMatrixPerspectiveFovLH(&matProj, D3DXToRadian(60.0f), 1.0f, 0.0f, 1.0f);

後ろから2番目の引数は0にしてはいけない。
ここを0にすると、すべてのZ値が同じになってしまう。
790デフォルトの名無しさん:2011/02/01(火) 16:02:35
>>785
どのみち同時に鳴らしたい音の最大数が決まってるなら選択の余地はないでしょ
一応確認するけどDuplicateSoundBufferでメモリ自体は共有できるのは知ってる?
791773:2011/02/01(火) 17:12:37
>>786-787
レスありがとうございます。
BGMじゃなくてSEなので最初に全部読み込むことにします。
792773:2011/02/01(火) 17:14:46
>>790
DuplicateSoundBufferなんて知りませんでした。
使うことにします。
793デフォルトの名無しさん:2011/02/01(火) 19:43:11
>>788-789

ありがとうございます。
下記のようにすることでZバッファが効くようになり
問題なく描画できるようになりました。

D3DXMatrixPerspectiveFovLH(&matProj, D3DXToRadian(60.0f), 1.0f, 1.0f, 100.0f);

過去ログにも同じ質問がありました…失礼しました。
794デフォルトの名無しさん:2011/02/02(水) 12:28:00
DirectXの質問か微妙なところですが質問します。
SDKのサンプルで動きのあるやつ(例えばText3D)のウィンドウで、タイトルバーをクリックしている状態
だと描画が停止してしまいますよね?
それどころかクリックをやめると停止してたところからそのまま再開することを見ると、メインループ自体が
停止している気がするんですが、これを動作し続けるようにするにはどうしたらいいんでしょうか?
795デフォルトの名無しさん:2011/02/02(水) 14:07:08
既存のウィンドウを使わない
796デフォルトの名無しさん:2011/02/02(水) 17:26:45
Directlibで作ったゲームをdownloadしたんだけど
http://homepage2.nifty.com/natupaji/DxLib/
こっからね。

Ponってゲーム

で俺がそのゲームのCGの球があるんだけど
その球に星印をペイントで加えてゲームやったら
何かペイントのときだけでてくるその球の黒い、
バックグラウンドまで一緒に出てきたんだけど・・・
どうしよう・・・
797794:2011/02/02(水) 17:33:10
>>795
すみません、もうちょっと詳しく説明をお願いできますか?
798デフォルトの名無しさん:2011/02/02(水) 17:38:56
>>796
α!α!!
799デフォルトの名無しさん:2011/02/02(水) 17:49:58
>>798
どういうことでしょうか?
800デフォルトの名無しさん:2011/02/02(水) 18:11:13
>>799
α値だよ言わせんな恥ずかしいおまえさんにはDirectXはまだ早い
っていうかDXライブラリのスレ行けよ
ttp://hibari.2ch.net/test/read.cgi/gamedev/1286180687/

>>797
メッセージループでググったりしろ
801デフォルトの名無しさん:2011/02/02(水) 18:37:52
http://msdn.microsoft.com/ja-jp/library/cc351213.aspx
DirectSoundでエフェクト処理したいんですけど、サンプルみたいなの教えて。
802デフォルトの名無しさん:2011/02/02(水) 19:45:59
DirectX SDK(June 2010)には、xファイル・ビューワが付属していますか?
拡張子がアプリケーションと関連づけられていないため、関連付けを行いたいのですが、どのexeに関連付ければいいのかよくわかりません。
803デフォルトの名無しさん:2011/02/02(水) 20:37:52
>>802
DirectX SDK(June 2010)にはビューワはついてないぞ
804デフォルトの名無しさん:2011/02/02(水) 22:50:41
質問です
DirectX11で
・板ポリに絵を貼っつけて表示
・同じ絵を画面に複数表示
までは出来たのですが、
違うテクスチャを描画する方法が分かりません
〜に〜したあと〜しろ 程度でいいのでアドバイス頂けませんか?
805804:2011/02/02(水) 22:51:34
すみません、違うテクスチャ・板ポリを同時に描画する方法でした
806デフォルトの名無しさん:2011/02/02(水) 23:01:03
テクスチャを変更して描画すればいいだけ。
何が疑問なのかさっぱり分からん。
807デフォルトの名無しさん:2011/02/02(水) 23:21:13
すみません、解決しました
根本的に理解していなかったようです...
808794:2011/02/03(木) 02:34:28
>>800
ありがとうございます。
すみません、言葉足らずでした。
恐らくメッセージループをどうかすればいいのかはわかっています。
詳しく言うと、(サンプルは分かりませんが自分のプログラムで)メッセージが来ていようが来ていなかろうが毎フレーム描画し続けるようにプログラムを組み、
WM_DESTROY以外はDefwindowprocに任せているのに何故うまくいかないのかが知りたいのです。
DirectX固有の問題ではないかもしれませんが、恐らくDirectXを使うとき一般に出会う問題だと思ったので質問しました。
809デフォルトの名無しさん:2011/02/03(木) 02:59:51
>>808
自分がやりたい事が、Windowsアプリの作法から外れることを理解してる?
で、DirectXはWindowsのSDKだよね?
問題なんかじゃ無いでしょ、貴方が勝手におかしな事をやりたがってるだけ

それを理解できたなら
メッセージ、キュー
PeekMessage(), TranslateMessage(), DispatchMessage()を調べてみな
メッセージ無視で描画をするようになったら、他がどうなるかも体験するといいよ

因みに、普通はフルスクリーンと言う手を使う
と思うけどね
810デフォルトの名無しさん:2011/02/03(木) 03:45:23
動的キューブマップってクソ重いな
単純に描画が6倍増えるんだな
811808:2011/02/03(木) 04:17:37
>>809
ありがとうございます。
>自分がやりたい事が、Windowsアプリの作法から外れることを理解してる?
そうなんですか?
私の手元の市販のDirectXを使用しているゲームでいくつか試してみましたがどれも私の期待通りの動作でした。
それからご指摘の関数等についてはMSDNのリファレンスを自分で出来る限り読み込んだ上で質問しています。
もう少し深いヒントをいただけないでしょうか?
812デフォルトの名無しさん:2011/02/03(木) 07:14:35
アプリの作法から外れるというのは答えている人間が馬鹿なだけ。
描画用のスレッドを作って、そこからレンダリングすればいい。
メッセージループ上でやるから止まるんだよ。
813デフォルトの名無しさん:2011/02/03(木) 08:16:51
>>809 の話は アプリの作法 じゃなくて Windowsアプリの作法 の話だと思う

メッセージングとそのディスパッチによる駆動というOSベンダが提供要求してる、作法の話
その辺理解出来ない人は多分、不慣れで馬鹿なだけ
814デフォルトの名無しさん:2011/02/03(木) 08:41:40
>因みに、普通はフルスクリーンと言う手を使う
この時点で頭が悪いのがにじみ出ている。
フルスクリーンは今回の件とは何の関係もない。
あまりにも回答者のレベルが低すぎるよ。
815デフォルトの名無しさん:2011/02/03(木) 08:48:43
>メッセージングとそのディスパッチによる駆動というOSベンダが提供要求してる、作法の話
Windows3系統でそれでは不便だから、9x以降マルチスレッドが使えるようになったんだろう。
解決策はきっちりOSベンダが提供しているんだが、作法云々ってあまりにも無能すぎるぞ。
816デフォルトの名無しさん:2011/02/03(木) 09:15:46
描画を別スレッドで処理の一言で解決なのに
作法がどうのとか変なこと喚いてる子がいるのか
817デフォルトの名無しさん:2011/02/03(木) 09:20:17
今丁度話題っぽいので聞きたいんですが、描画を別スレッドに投げると、
1フレームにAだけ動いて欲しいのに、描画と移動のタイミングが合わないのか
途中で1フレーム程度描画が止まってしまいます
描画スレッドとMoveスレッドのタイミングがズレているのが原因だと思うのですが、
どうすればスムーズにできるでしょう?
818デフォルトの名無しさん:2011/02/03(木) 09:25:10
>>815-816
俺は >>813 だけど作法って文脈について補足しただけ
解決方の話ならそれでいんじゃね
819808:2011/02/03(木) 11:00:31
>>812
ありがとうございます。
試してみたら確かに期待通りの動作をしてくれました。
ただ、データの同期がめんどうすぎるのでスレッド使わない方法もありませんか?
別スレッドだと動くことから何らかのメッセージをDefwindowprocに渡さなければできそうな気がするのですが。
(DirectXでゲーム作るなら避けて通れない問題のはずなのに解説サイトがなかなかないです)
820デフォルトの名無しさん:2011/02/03(木) 12:56:06
面倒くさいならプログラムを組むな
821デフォルトの名無しさん:2011/02/03(木) 13:21:35
(なにがやりたいんだこのクズは・・・)
822デフォルトの名無しさん:2011/02/03(木) 13:50:56
>>819
描画スレッドより簡単な方法はない。
DefWindowProcがWM_NCLBUTTONDOWN(こんぐらい調べろ!)でブロックするのはWindowsの仕様。
スレッドよりNC系メッセージを自前で実装する方が楽だと思うなら好きにすればいい。
823808:2011/02/03(木) 14:32:30
>>822
>DefWindowProcがWM_NCLBUTTONDOWN(こんぐらい調べろ!)でブロックするのはWindowsの仕様。
なるほど。
確かにこれじゃどうしようもなさそうですね。そしてプログラムの挙動に納得がいきました。
あきらめてスレッド使うことにします。
大感謝です。
824802:2011/02/03(木) 15:03:35
DirectX SDK(June 2010)には、xファイル・ビューワがないのですか。。。
フリーでお勧めのビューワとかありますか?
DXUTのサンプルのxファイルを見たりしたいのですが。
825デフォルトの名無しさん:2011/02/03(木) 15:37:15
>>824
自分で作る
826デフォルトの名無しさん:2011/02/03(木) 15:45:57
>>817
mutexとか使ってスレッドの同期をとるか、描画と移動を同じスレッドで処理する。
重たい処理をしない限り、描画と移動を別スレッドにする必要ないと思うが。
827デフォルトの名無しさん:2011/02/03(木) 15:56:37
>>819
SetTimerして、WM_TIMERのプロシージャから描画処理呼べば、
シングルスレッドでもタイトルバーをクリックしてる最中に動かせるよ。
828826:2011/02/03(木) 16:10:22
>>817
あと追加だが、スレッド間でデータを共有するときは慎重にやらないといけない
例えばグローバル変数の座標を移動スレッドで更新しても、描画スレッドに反映されないことがある
詳しくはvolatile変数とかで調べてくれ
829デフォルトの名無しさん:2011/02/03(木) 19:47:49
非同期でいい処理は、なるべく、細かく分けたスレッドで処理する方がいいのかな?
それともスレッドの数は最小限に納めた方がいいのかな?
830デフォルトの名無しさん:2011/02/03(木) 21:08:23
ちなみにマルチスレッド対応コンパイラは、
グローバル変数にvolatileを付けなくてもスレッドセーブでコンパイルされるので書く必要はない。
つまりグローバル変数にvolatileを付けろと言うのはただの知ったか。
831デフォルトの名無しさん:2011/02/03(木) 21:11:59
マルチスレッド対応コンパイラってあるのか知らんかった・・・
832デフォルトの名無しさん:2011/02/03(木) 21:12:37
>グローバル変数にvolatileを付けなくてもスレッドセーブでコンパイルされる

おいおい
833デフォルトの名無しさん:2011/02/03(木) 21:14:55
ただ少なくともvolatile使えばおkというのはおかしい
834デフォルトの名無しさん:2011/02/03(木) 21:15:23
VCもBCCもgccもメジャーなコンパイラは対応しているよ。
835デフォルトの名無しさん:2011/02/03(木) 21:20:54
volatile云々はさておいて、スレッドセーフかどうかは実装次第だろ

//win32に用意された関数を使う場合 --------------------------------
CRITICAL_SECTION so;

スレッドとして処理したい関数() {
 EnterCriticalSection(&so);

 //同期的に触れる処理はここで

 LeaveCriticalSection(&so);
}

// boostを使う場合 --------------------------------
typedef boost::mutex::scoped_lock lock;
boost::mutex mtx;

スレッドとして処理したい関数() {
 lock l(mtx);
 
 //同期的に触れる処理はここで
}
836デフォルトの名無しさん:2011/02/03(木) 21:25:37
マルチスレッドでvolatileが必要なケースは実は無いんだよね。
同期が必要なデータはmutexなりで保護しないと意味はないし、
保護されているならvolatileを書く必要性はない。
837デフォルトの名無しさん:2011/02/03(木) 22:11:26
ケースが無いと言うより、逆に 「ロックして同期処理」 を 「しない」 場合の保護だろ volatile
メモリの READ WRITE のタイミングによる、いわゆる H側とL側が違うタイミングで更新されないように、
だとか構造体の要素などの更新タイミングがズレないようにだとか。 ロック処理するなら、いらないだけであって、
実はいらない、じゃない。 なんか混同してる人間多すぎないか。 てかここDirectXの初心者スレだからわかってないのか
838デフォルトの名無しさん:2011/02/04(金) 00:12:10
HLSL内でテクスチャの一部だけをマッピングすることはできますか?
たとえば512x512のうちの0,0から64,64までとか
839デフォルトの名無しさん:2011/02/04(金) 00:35:17
むしろ何で出来ないと思ったのか聞きたい
840デフォルトの名無しさん:2011/02/04(金) 00:44:50
おしえてください!
841デフォルトの名無しさん:2011/02/04(金) 07:17:28
>>837
グローバル変数にvolatileを付ける話をし出した馬鹿がいたからだろう。
別スレッドから参照されるのを考慮して、最初から最適化に巻き込まないようになっており、
付けても付けなくても生成されるコードに変化がないのに。
コンパイラの動作を全く理解していない。
842デフォルトの名無しさん:2011/02/04(金) 10:59:36
多コアの時、キャッシュの書き戻しのコントロールってどこでやってるんだろう
843デフォルトの名無しさん:2011/02/04(金) 12:27:47
グローバル変数にvolatileがいらないってのは初めて知った
グローバル変数使わないけど・・・
844デフォルトの名無しさん:2011/02/04(金) 12:35:32
CreateTextureでD3DFORMATを指定してもデバイスによって
指定フォーマットがサポートされていたりいなかったりしますが
どんな環境でもサポートが保証されているフォーマットってありますか?
845デフォルトの名無しさん:2011/02/04(金) 12:50:17
ありません。
846840:2011/02/04(金) 20:08:31
お願いします
847デフォルトの名無しさん:2011/02/04(金) 21:25:38
>>846
テクスチャ座標は頂点座標といっしょに渡してるの?
848デフォルトの名無しさん:2011/02/04(金) 21:31:03
テクスチャ座標ををいっぱいにセットした四角ポリゴンにHLSL内でtex2Dで貼り付けてるだけです。
849デフォルトの名無しさん:2011/02/04(金) 22:51:08
DXUTって実用性ありますか?実際どれほど使われているのでしょうか?
想定してるプログラムは、World of Warcraft や リネージュ2といったMMORPGです。
850デフォルトの名無しさん:2011/02/04(金) 23:16:43
スレチだが、リネ2は確かUnrealEngineスクリプトで作られてた希ガス
851デフォルトの名無しさん:2011/02/05(土) 00:40:02
DXUTなら下手に自分でウィンドウ作るよりよっぽど安定した動作するよ
多少カスタマイズしないと使いにくい部分はあるけどソース全部ついてるから問題なし

ただしDXUTはあくまでフレームワークであってゲームエンジンではないので
UT使ったからといってゲーム作りが楽になるわけではない
852デフォルトの名無しさん:2011/02/05(土) 02:58:00
質問です。
ID3D11DeviceContext::DrawInstancedで今詰まっています。
一つのオブジェクトデータ(頂点群-テクスチャ)を使って複数オブジェクトの描画を行うものだと思うのですが、
そのまま使っただけだと表示は変わらないため、おそらく同一座標に複数回描画するだけになってると思われます。
描画座標を変えて複数オブジェクトを描画するにはどうしたらいいのでしょうか?
頂点シェーダあたりが怪しい気はするのですが・・。
853デフォルトの名無しさん:2011/02/05(土) 10:31:48
質問です。
ChangeDisplaySettingでフルスクルーンとウインドウの切換を出来るようにしたのですが、
ウインドウに戻したとき、常に最前列になってしまいます。どのようにすればよいでしょうか。
念のためHWND_NOTOPMOSTを入れてもダメでした。

SetWindowLong(hWnd,GWL_STYLE,WS_POPUP|WS_VISIBLE);
SetWindowPos( hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, (SWP_SHOWWINDOW|SWP_NOMOVE|SWP_NOSIZE) );
854デフォルトの名無しさん:2011/02/05(土) 10:56:19
ウインドウの配置を記憶しておき、全てを元に戻す。
855デフォルトの名無しさん:2011/02/05(土) 11:25:23
>>854
サンクスです。

原因がわかりました。
画面を作り直す際に、WindowsのバグでTopMostを付けられてしまったので、
1秒ぐらい時間をおいてからNOTOPMOSTを行うことでした。

ありがとうございます。
856デフォルトの名無しさん:2011/02/05(土) 14:24:14
それ本当にバグ?
最初にCreateWindowするとき何指定してる?
857デフォルトの名無しさん:2011/02/05(土) 14:58:12
>>852
もう見たかもしれんが
Instancing10 サンプルとか参考になるんでは?
SV_InstanceIDを使って定数バッファを切り替えながらインスタンスを描画ということだろう
858デフォルトの名無しさん:2011/02/06(日) 03:14:03
>>853
ついでに聞きたんですがウインドウからフルスクリーンにするとき別のモニターに表示されてるウインドウが横にずれるんだけど
原因わかりますか?
859857:2011/02/06(日) 22:00:03
>>858
わかりません
以上!
860819:2011/02/06(日) 22:31:03
>>827
ありがとうございます。考慮にいれてみます。
861デフォルトの名無しさん:2011/02/06(日) 22:32:55
>>858
モニターが変わるとずれるなら、モニターの調整位置がずれてる
862デフォルトの名無しさん:2011/02/08(火) 02:48:11
SDKのドキュメントによればDirectShowはゲーム開発には非推奨らしいけど、じゃあ代替に何使えばいいのかってことが
書いてないんですが。
他のコンポーネントはほとんど代替物書いてあるのに。
みんな何使ってるんですか?
863862:2011/02/08(火) 03:20:50
ttp://social.msdn.microsoft.com/Forums/en/windowsdirectshowdevelopment/thread/9069c296-ac01-4363-806b-335e5fea9ff2
要するにDirectShowはゲームには大げさだから普通のAPI使えってことらしいけど、違う人の付け加えではVMR9(DShowの一部)は
DirectXのサーフェス描画に適してるってあるし、どうしろってことなんだ。
864デフォルトの名無しさん:2011/02/08(火) 03:41:06
やってみて結果がダメじゃないならそれで正解
865デフォルトの名無しさん:2011/02/08(火) 03:47:28
ゲームシーンで動画流したいとかなら存分に使えばいいべよ
現状GPUにスムーズに動画流すとなるとVMR9が現実的だし

Media Foundation+EVRとかあって性能特化してるけど
まとにも使うにゃ条件厳しすぎる
866デフォルトの名無しさん:2011/02/08(火) 04:29:23
テクスチャをコピーするメソッドを忘れてしまいました。

メソッド( コピー元, RECT, コピー先, 色, コピー方法)
こんな感じだったと思います。教えてください!
867デフォルトの名無しさん:2011/02/08(火) 05:10:03
UpdateTexture
UpdateSurface
StretchRect
ColorFill
D3DXFill***
868デフォルトの名無しさん:2011/02/08(火) 06:03:49
カメラの動きをプレイヤーが直感的に操作出来る様にするには、どうすればいいんでしょう?
オイラー角で回転させてもロールピッチヨーで回転させても、直感的でない動きをします。
(前を向いてる時と横を向いてる時で、視点を傾げるキーと上下を見るキーが変わったりとか)

これでだいぶ悩んでいるんですが、解説されているサイトなどをあんまり見ないので、
もしかしてカメラを直感的に動かす為のヘルパー関数みたいなものがあったりするんでしょうか?
869デフォルトの名無しさん:2011/02/08(火) 06:26:38
>>868
そんな関数ねぇよw

直感的とかわかんねーよ
ちょっと有名ゲームでも挙げて
これと同じようにしたいって質問したほうがまだわかりやすい
870デフォルトの名無しさん:2011/02/08(火) 23:40:01
実はあるよ
関数っていうかクラスがDXUTcamera.hとDXUTcamera.cppに
その二つをひっぱってくればUTベースのアプリじゃなくても使える
871デフォルトの名無しさん:2011/02/09(水) 00:55:24
フルスクリーンってGDI使わないのになんでウインドウハンドルが必要なの?
872デフォルトの名無しさん:2011/02/09(水) 03:36:40
フォーカス
873デフォルトの名無しさん:2011/02/09(水) 13:17:03
HWND は別に画面に出る矩形領域の為のモノじゃないし
874デフォルトの名無しさん:2011/02/09(水) 20:45:08
ウィンドウメッセージを受け取るため、かなぁ。
>>871はHDCではなくHWNDのことを言ってるんだよね?
875デフォルトの名無しさん:2011/02/09(水) 20:48:36
>>872-873
ありがとうございます
フォーカスはアダプタ番号指定しているのでいらないと思いました

>>874
そうです。
876デフォルトの名無しさん:2011/02/10(木) 00:51:19
ふーん
877デフォルトの名無しさん:2011/02/10(木) 01:06:29
875です

よくよく考えてみればウインドウハンドルがないとウインドウズが管理できませんよね。。。
失礼しました。
878デフォルトの名無しさん:2011/02/10(木) 04:24:04
DirectXでMMORPGを作る場合のネットァーク部分の実装って、DirectPlayが一般的に使われますか?それともWinSockでガリガリ書くのが普通ですか?
879デフォルトの名無しさん:2011/02/10(木) 07:27:53
>>878
いまは推奨されていないみたい
880デフォルトの名無しさん:2011/02/11(金) 02:28:48
CrossFireの場合、デバイスは2つなんでしょうか、それとも1つ扱いになるんでしょうか?
「デバイスを2つ以上使う場合ってあるんだろうか」と気になっただけなのですが・・・
881デフォルトの名無しさん:2011/02/11(金) 03:39:44
>>880
それ用のコードを書かないといけないような仕組みだったら、
過去のゲームに対応したりできないだろう。
882880:2011/02/11(金) 07:24:10
なるほど、確かにそうですね・・・とすると2つ以上のデバイスを使う必要は
複数のVGAに別々のモニタをつないでそれぞれ別々に処理する場合以外
(・・・できるのか??)ありえなさそうですね。ありがとうございました
883デフォルトの名無しさん:2011/02/11(金) 21:05:28
D3DXMatrixIdentity( &mat );
D3DXMatrixIdentity( &rot ); D3DXMatrixIdentity( &tra ); D3DXMatrixIdentity( &sca );

D3DXMatrixTranslation( &tra, 0, 0, 0 );
D3DXMatrixRotationYawPitchRoll( &rot, D3DX_PI * 0.5, 0, 0 );
D3DXMatrixScaling(&sca, 0, 0, 0 );
mat = rot * tra * sca;

---エフェクト---
pos = mul( mat, ビュー );
pos = mul( pos, プロジェクション );
return mul( In.Pos, pos );

これで正確な位置に表示されません。例えばtraのx座標を増やしても斜め奥に移動してしまいます。
どこに問題がありますか?ちなみにカメラはz軸-から正面を見て設置しています。
884デフォルトの名無しさん:2011/02/11(金) 21:12:18
ちなみにD3DX_PI * 0.5だと90度回転すると思うのですが、なぜか180度回転します。
885デフォルトの名無しさん:2011/02/11(金) 21:35:16
とりあえずスケーリングを物体のサイズとして使ってるなら
mat = sca* rot * tra;
にしようぜ
886デフォルトの名無しさん:2011/02/11(金) 21:51:14
やってみましたが変化はありませんでした。
>>883のソースのスケーリングは
D3DXMatrixScaling(&sca, 1, 1, 1 );の間違いです
887デフォルトの名無しさん:2011/02/11(金) 23:32:49
>mat = rot * tra * sca;
これをエフェクトに渡してるなら、エフェクト側では
return mul(In.Pos, mat); // matは↑の渡されたやつ

の1行でいけるはずなんだけど
888デフォルトの名無しさん:2011/02/11(金) 23:37:32
すまんボケてたw
883で合ってるね。posって名前おかしいけど
889デフォルトの名無しさん:2011/02/11(金) 23:38:04
それはローカル座標とは違うの?
890デフォルトの名無しさん:2011/02/11(金) 23:52:07
とりあえず>>883がX方向に1動かしたつもりの
matの行列の中身を書いてみなよ
それで少なくともワールド変換以前で間違ってるのか
それ以降で何かおかしいのかは分かるから
891デフォルトの名無しさん:2011/02/11(金) 23:54:34
モデルのローカル軸がZ+が正面じゃないってオチじゃないのか
892デフォルトの名無しさん:2011/02/12(土) 00:26:37
>>891
-z方向に向いています。重心も真ん中にあります。
tiny.xでやっても同じ挙動なのでモデルの不具合は考えにくいと思います。

http://www.dotup.org/uploda/www.dotup.org1339073.png
右がx軸方向に1.0動かしました
893デフォルトの名無しさん:2011/02/12(土) 00:40:10
サンプルなど問題のないものを参考にしてみては?
894デフォルトの名無しさん:2011/02/12(土) 00:47:39
そもそも他の部分がすでにおかしいとかありそうだな
895デフォルトの名無しさん:2011/02/12(土) 01:17:11
>D3DXMatrixRotationYawPitchRoll( &rot, D3DX_PI * 0.5, 0, 0 );
これ嘘書いてない?
>>892見るとヨーじゃなくてピッチ軸で回転してる気がするんだけど・・・
896デフォルトの名無しさん:2011/02/12(土) 11:14:40
y軸回転じゃなくてx軸で回ってる
この分じゃ全然関係ないところでもミスしてそうだな
897デフォルトの名無しさん:2011/02/12(土) 20:22:02
GPUのハード的な動きについて詳細に解説している書籍やWebサイトってないでしょうか?

DirectXではAPIを呼ぶことでGPUを動かしてますが、効率よく処理したいので、GPUがどのように動くのか知りたいです。
例えば、描画コマンドの発行やリソース管理、メモリアクセス等です。
同じような情報でも、頂点ストリームに含めたほうがイイのか、テクスチャとして与えたほうがイイのか等を
判断できるようになりたいです。
また、DirectX9から10への移行で大きく変わったという話もありますが、
このあたりの具体的な内容も知りたいです。

ttp://journal.mycom.co.jp/column/architecture/index.html
CPUだと、こういう詳細解説のコラムがありますが、
これのGPU版みたいなのがあるとうれしいです。

よろしくお願いします。
898デフォルトの名無しさん:2011/02/13(日) 01:17:53
そういう類の話って、本当に好事家か専門な人でもいない限り、
本に書かれた瞬間から情報が古くなってしまう気がする
899デフォルトの名無しさん:2011/02/13(日) 01:37:36
nvidiaの記事でどうやったらパフォーマンスが出るかみたいな記事があったよ
900883:2011/02/13(日) 10:32:38
今までスキンメッシュの頂点ブレンデリング後にやっていたらおかしかったのですが、それを飛ばして入力POSITIONセマンティクスを直接投影変換するとマトモに動きました。
ボーンによる頂点ブレンデリングは投影変換後にやるものなのですか?
901デフォルトの名無しさん:2011/02/13(日) 10:39:10
>>900
スキニングの仕組みからわかってねーじゃねーか!
902デフォルトの名無しさん:2011/02/13(日) 11:31:21
×頂点ポンデリング
○頂点ブレンドのing
903883:2011/02/13(日) 12:43:33
もうわからなくなってきた・・・
頂点ブレンドと投影変換の手順だけでも教えてください
904デフォルトの名無しさん:2011/02/13(日) 14:58:48
質問よろしいでしょうか?
IMediaControlのGetStateのWaitってどの程度いれればいいのでしょうか?
905897:2011/02/13(日) 15:32:45
>>898
それがツライところですよね・・・

>>899
ありがとうございます!
見てみます!
906デフォルトの名無しさん:2011/02/13(日) 18:47:26
>>903
やだよ
お前見込みねーもん
お前なんかにスキニングを理解するなんてムリムリムリムリかたつむりよ

そもそも普通のワールド座標からスクリーン座標に変換するまでの流れ知ってるのかよ?
ちょっと書いてみろ
907デフォルトの名無しさん:2011/02/13(日) 19:22:14
ムリムリムリムリかたつむり(笑)
とーんちーんかーんちーん一休さーんのヤツかおまえ。

答える気がないなら黙ってろよw
908デフォルトの名無しさん:2011/02/13(日) 22:08:58
わからないので初心者用の質問スレ教えてください
909デフォルトの名無しさん:2011/02/13(日) 22:20:48
数学の初心者質問スレとかどうだろ
910デフォルトの名無しさん:2011/02/13(日) 22:32:56
>>908
多分 「DirectXの初心者」 じゃなくて 「3DCG処理の初心者」 にしか見えないから
上で言われてるんだと思うので、その嫌味は嫌味にならない
911デフォルトの名無しさん:2011/02/13(日) 22:36:23
とことん馬鹿だなこいつ
礼儀の勉強から始めた方がいい
912デフォルトの名無しさん:2011/02/14(月) 08:03:10
自分で座標変換に問題があると決めつけてるだけで
実は別のところに問題がありそうな予感
913デフォルトの名無しさん:2011/02/14(月) 09:45:40
ここはDirectXライブラリの初心者スレなんだが、
処理自体の初心者や計算の意味の初心者、あと言語そのものの初心者まで舞い込んでくるスレ
そしてそれらの初心者の多くは、自分が何がわかってないのかすら、わかってない場合があったり
914デフォルトの名無しさん:2011/02/15(火) 00:29:13
DirectX10からXファイルのサポートが打ち切られましたが、
みなさん、どんな形式を使っておられますか or オススメですか??
915デフォルトの名無しさん:2011/02/15(火) 00:48:42
独自形式が鉄板
有名どころだとFBXだろうけど意外と超えなきゃいけない壁が多すぎなので
自分で適当なフォーマット作った方が良いよ
916914:2011/02/15(火) 00:51:47
>>915
やはりそうですか・・・
自分で作ると、勉強になるし、独自情報を組み込んだりしやすいし、最適化し易いしと、
いいことが多いので、ここいらでいっちょやってみます!!
ありがとうございました!
917デフォルトの名無しさん:2011/02/15(火) 01:48:13
某PMD形式って言うメッシュとマテリアルとボーン情報を持ったファイルの
Load/Save IOと構造体データクラスと、あとそれを受け取って時間軸で動かすモジュールなら
個人的にライブラリ化した
918デフォルトの名無しさん:2011/02/15(火) 12:11:00
そんな非公式の解析データしか情報がなくてソフトの仕様変更に怯えなくてはならず
不要な情報が多すぎる/必要な情報が少なすぎるローカルフォーマットをお勧めされましても…
919デフォルトの名無しさん:2011/02/15(火) 12:58:18
馬鹿なんだろ。
920デフォルトの名無しさん:2011/02/15(火) 13:07:36
>>915
FBXのアニメーションは絶対座標で出力されてるので使い物にならない
改善されねぇかなアレ
921デフォルトの名無しさん:2011/02/15(火) 14:06:54
wavefrontが簡単で最初ならお勧め
922デフォルトの名無しさん:2011/02/15(火) 18:32:21
DirectSoundで、波形データを毎フレーム作成してストリーム再生したいんですけど
音階とか音色は望みどおり鳴ったんですけど、バッファの末尾から頭に戻る一瞬途切れるんです。
バッファ量を長くしても短くしても、必ずループの瞬間に途切れます。
どうやって回避したらいいんですか?

ストリームするにはバッファをループ再生させて、再生にかぶらない部分を書き換えるだけですよね?
流れは合ってるつもりなんですが、バッファが1秒なら1秒毎、バッファが2秒なら2秒毎に規則的に無音が入ります。
公式リファレンスを見たら「ループ再生は巻きもどす処理に時間がかかるので不向き」みたく書いてありますし
なのに「ストリームで途切れなく再生させるにはループ再生をONにしてください」とも書いてあります。

他人が作ったゲームでは大丈夫なので作り方の問題だと思うんですけど、
上の流れをくんでも直らないのは、何が悪いのかわからないんで教えてください。
923デフォルトの名無しさん:2011/02/15(火) 18:52:35
そりゃあ、なんかまちがってるんだろう(笑)
924デフォルトの名無しさん:2011/02/15(火) 18:53:33
最初にヘッダの一部まで再生してるとかは?
925デフォルトの名無しさん:2011/02/15(火) 18:54:57
ソフトウェア音源の実装ならマルチメディアAPIでもいいんじゃないかな
926デフォルトの名無しさん:2011/02/15(火) 19:02:39
最近まじめにこたえもしないカスがいるな
わからないならだまってろよ ヘボ
927デフォルトの名無しさん:2011/02/15(火) 19:05:48
そうはいうがなヘボ2
どう考えてもトレースしながら攻めていくしかない場面で質問されてもよw

やり方としては正常に動いてるサンプルがあるなら自分のと
両方同時に動かしてデバッグトレースしてみたらどうだ?
928デフォルトの名無しさん:2011/02/15(火) 19:08:04
>>926
おまえが一番いらない子な件
929デフォルトの名無しさん:2011/02/15(火) 19:13:02
どう考えても
>>923=>>927=>>928でありコイツが一番いらない子なのは間違いない。
930デフォルトの名無しさん:2011/02/15(火) 19:13:57
適当にこたえるけど、
最後のフレームの尻尾はちゃんと埋めてるのかねー。
バッファの半分位でソースが途切れたらちゃんと残り半分をループ頭で埋めてる?
931デフォルトの名無しさん:2011/02/15(火) 19:14:03
質問いいですか?

WCHAR wstrFileName[MAX_PATH] = {0};
LPCTSTR _lstr = _src;
MultiByteToWideChar(CP_ACP, 0, _lstr, -1, wstrFileName, MAX_PATH);

if( FAILED( this->_pMediaControl->RenderFile(wstrFileName)))
{
   return -1;
}

というかんじでMediaControlにファイルをロードしているのですが
XPでは上手くいくのですが、7(x64)ではエラーになります。
原因が分からず困っています。

分かる方がいましたら、教えていただけないでしょうか?
932デフォルトの名無しさん:2011/02/15(火) 19:24:26
>>929
そんな短気でこの仕事続けるのは無理じゃね?
933デフォルトの名無しさん:2011/02/15(火) 19:29:24
>>931
>LPCTSTR _lstr = _src;
LPCSTRの間違いでは?
エラーってのがコンパイルエラーなら、
おそらく_srcがxpではCHARで7ではWCHARになってると思われ
934デフォルトの名無しさん:2011/02/15(火) 19:33:33
>>933
御返事ありがとうございます。

コンパイルは通るのですがXPではサウンドが流れているのにもかかわらずに
7のほうでは、流れないので、 FAILEDでエラーがでた場合にはMessageBoxを表示するようにしたら表示されたので
ロードの問題だとおもうのですが

あと書き忘れてしまいましたが、プロジェクトの設定はマルチバイト文字を使用にしています。

とりあえず、↑のようになおしてやってみます
935デフォルトの名無しさん:2011/02/15(火) 19:48:11
>>933

LPCSTRに直してみてやってみたのですが、やはり再生がされません。
936デフォルトの名無しさん:2011/02/15(火) 19:58:55
>>924
ファイル読み込みじゃなくて自作波形なので、当然ヘッダは含んでないです。

>>925
既知のバグかなにかでDirectSoundでは常に起こるってことですか?
個人的に解決しないまま投げ捨てて、なんとなく乗り換えるってやり方が好きじゃないんで。

>>930
データ量が不足して無音部分がある、と言うのでしたらそれは一切ありません。
試験的にバッファをあらかじめ波形データを満たしてから鳴らしても、2〜3ms程度の無音が挿入されます。
なぜか440Hz、880Hzとかの基本音に限り、途切れは一切はないんです。
937デフォルトの名無しさん:2011/02/15(火) 20:42:53
>なぜか440Hz、880Hzとかの基本音に限り、途切れは一切はないんです。

それは興味深い現象だなぁ、ソースを晒す勇気はないですかね
938デフォルトの名無しさん:2011/02/15(火) 21:08:40
>>936
波形がちゃんと満たされてるなら、波形の急激な変化によってギャップを聞き手が感じてるって感じにならんかなー?
うまいことMIXしたらどうだろう??
939デフォルトの名無しさん:2011/02/15(火) 21:15:25
うまくいってるソースがあるんだろ?
だったらさっさとトレースでもしろよ
940デフォルトの名無しさん:2011/02/15(火) 21:21:08
>>938
波形の周波数によってはバッファにキレイに収まらないから、末尾の半端な山の部分が
頭に戻って形状がリセットされた時に無音に感じる、という事でしょうか?
でもそれだと無音というよりプチノイズが出る気がしますが・・・

とはいえアドバイスはありがとうございます。
波形の合成はなんとか考えてやってみるようにします・・・が
みんなそうやって波形のつなぎ目のタイミングを高度に考慮してストリームをやってるんでしょうか?
ネット見る限り、イベンで通過信号受け取ったりタイマーで書き込んだりする程度のことに思えたんですが。
もっと簡単に出来ると考えていたので肩透かしをくらった気分です。
941デフォルトの名無しさん:2011/02/15(火) 21:23:47
>>939
うまくいってるソースなんて知りません。他人のゲームは大丈夫ってだけです。
他人の作ったオープンソースなんて持ってませんから。
1つだけありますけど、セカンダリバッファを使わずにプライマリバッファ使ってたので参考にしてません。
942デフォルトの名無しさん:2011/02/15(火) 21:34:33
>>941
google「DirectSound ストリーミング再生」あたりで調べてみればいいんじゃね?

こんな感じでやってくしかないんじゃね?
http://marupeke296.com/cgi-bin/cbbs/cbbs.cgi?mode=res&namber=2954&page=10&no=0&P=R
943デフォルトの名無しさん:2011/02/15(火) 21:53:26
お気遣いはうれしいですが、とっくに何百回と検索しまくってこのザマです。
そのワードもそのサイトもさんざん見ましたw
みんなプチノイズの話がメインで、無音についてはヘッダの読み間違いとか、データサイズ間違い、
メモリスワップが発生しているとか、フォーマットがおかしいんじゃないかとか・・・
上のほうで誰か言ってくれた事象と解決法ばっかりしか見つからないんです。
ソースを晒す勇気はありませんが、コード的におかしい事はしてない自信はあるんです。
こんだけ探して見つからないってことは、自分のサウンドカードだけの固有バグなのかとも・・・
DirectSoundはカードによっては不具合だらけとも見つかったので。
Vista以降はHALが廃止されたから他のAPIを推奨とも確かに書いてあるし

まあとりあえず波形の合成に工夫がいる、との方法を信じてやっていきます。時間がかかりますが。
だからこのハナシは忘れてください。作ってみてダメだったらまた来ます。
失礼しました。
944914:2011/02/15(火) 22:49:38
>>917
>>921
ありがとうございます!
参考にさせていただきます。
945デフォルトの名無しさん:2011/02/15(火) 23:28:42
>>943
意味わかんね
再生時のデータを全部ファイルで吐き出してみるとかしたらいいんじゃないの?
っていってるんだけど
946デフォルトの名無しさん:2011/02/16(水) 01:49:30
>>945
解決しました。
えっとファイルで出力してというか、PC上で録音して波形の確認をしたら、やはり無音になっていたのですが
矩形波なのにその前後で波形が小さく丸くなっていたことから、何かでフィルタされてると考えて
PCの設定を見直したら、デバイス側で自動ノイズフィルタがかかっていました。
それをOFFにして、再度聴いてみたらノイズが走っていました・・・

やはり繋ぎ目の波形の整合がとれていませんでした。
それがノイズになって、うちのカードが律儀にフィルタリングして無音になってただけでした。
んで基本音の場合はたまたま波形の形状がバッファサイズぴったりで継ぎ目の整合がとれていたので
フィルタされずにキレイに鳴ってたみたいです。いろいろすいませんでした。
947デフォルトの名無しさん:2011/02/16(水) 11:57:51
D3D9でデバイスを作るとき、D3DCREATE_SOFTWARE_VERTEXPROCESSINGで作るとウインドウがすぐに閉じてしまいます。
よく調べると、HLSLエフェクトファイルを読み込むときにヒープ領域が...というメッセージでブレークポイントが作られていました。
D3DCREATE_HARDWARE_VERTEXPROCESSINGだと問題ありません。どうしてでしょう?
948デフォルトの名無しさん:2011/02/16(水) 14:12:04
SOFTWAREかHARDWAREはカードによって異なるので
HARD+HARD → HARD+SOFT → SOFT+SOFT の順番でエラーキャッチして作成し
全て失敗したらエラーメッセージを出す処理を行うのが一般的。
ウィンドウがすぐ閉じるのは強制終了されているから。自分で正しくエラーメッセージ処理しないとそうなる。
949デフォルトの名無しさん:2011/02/16(水) 21:14:48
それは既にやってます。各クラスを個別にSOFTWAREで作って、作動していたのですが、
今回スケルトンとして(SOFTWAREで)まとめた後に、どれくらいの負荷がかかるのかテストしてみようとHARDWAREからSOFTWAREに切り替えたら動かなくなりました。
950949:2011/02/16(水) 21:16:02
× 今回スケルトンとして(SOFTWAREで)まとめた後に
○ 今回スケルトンとして(HARDWAREで)まとめた後に
951デフォルトの名無しさん:2011/02/16(水) 22:14:39
ウィンドウがすぐに閉じるとか表現が曖昧だなあ
メソッドの戻り値をちゃんと調べてるのかどうか
その文面からは判断できないわ
952デフォルトの名無しさん:2011/02/16(水) 22:24:30
CreateDeviceはS_OKを返しています。
その下の行で「この行まで実行」でエフェクトファイルの読み込みで止まります。
そこまでのプロセスは全て正常な戻り値です。
953デフォルトの名無しさん:2011/02/16(水) 22:34:27
おおかたスキニングに頂点テクスチャでも使ってんじゃねーの
デバッグランタイムでも何も言わずしぬの?
954デフォルトの名無しさん:2011/02/16(水) 23:18:06
いえ、個別に作ったクラスと同じものをまとめただけなのでその部分に問題は無いはずです。
デバッグでやってます。
955デフォルトの名無しさん:2011/02/16(水) 23:23:49
CreateDevice が D3DCREATE_SOFTWARE_VERTEXPROCESSING を使う場合、CreateVertexBuffer は 0 または D3DUSAGE_SOFTWAREPROCESSING を使う必要がある。

これは大丈夫?
956デフォルトの名無しさん:2011/02/16(水) 23:39:51
すみません。マウスのクリックで地面(メッシュ)の座標を得たいのですが、
D3DXVec3Unprojectの結果の第一引数をレイにして、D3DXIntersectで距離やHitポリゴンの頂点から計算できないかと
あれこれやってるのですが、上手く行かない上に意味がよく解らず・・。
SDKやWeb上に、このサンプルって有ったりするでしょうか?   ※DirectX9です
957デフォルトの名無しさん:2011/02/16(水) 23:55:13
958デフォルトの名無しさん:2011/02/16(水) 23:55:41
Pick サンプル
959デフォルトの名無しさん:2011/02/17(木) 00:20:15
>>949
リファレンスモードと勘違いしてるのかな。
HARDWAREはもちろん、SOFTWAREだって全部の機能を持ってるわけじゃないよ?
本来は持っているべきなんだけどメーカ次第だし、そのために混在モードもあるよね。
とりあえず使用する機能がSOFTWAREモードできっちり対応しているか、CAPS見たらいんじゃないかな。
「ヒープ領域が・・・」の続きも知りたいけど、重要なヒントは省略しなくていいと思うよ。
てか、そのメッセージにそのまま答えが書いてあるんじゃないのかな。
960956:2011/02/17(木) 01:03:16
>>957 ありがとうございます。読んで仕組みを勉強します。
>>958 やはりサンプルが有ったのですね。いじって色々と知識を増やそうと思います。
ありがとうございました。
961949:2011/02/17(木) 09:23:34
スレ違いですが、ウインドウの初期化と作成に問題があったようです。
タイトルを変えると上手く行ったり行かなかったり・・・原因はよくわかりません。

ちなみに>>955はD3DUSAGE_WRITEONLYでも作動しました。やはりどこかおかしいのでしょうか・・・?
962デフォルトの名無しさん:2011/02/17(木) 09:42:13
lerp、slerpって何て発音するんですか
963デフォルトの名無しさん:2011/02/17(木) 12:17:33
>>961
君って虚言癖があるよね。
964デフォルトの名無しさん:2011/02/17(木) 19:36:35
D3D9の質問です。

D3DRS_FOGENABLE でフォグを有効にしたら
D3DFVF_XYZRHW で描いてる2Dスプライトが真っ黒になるんですけど
これは仕様ですか?

だとするとスプライト描く時だけ D3DRS_FOGENABLE をFALSEにして
終わったら復元するのが定石という事ですか?
965964:2011/02/17(木) 19:53:47
ID3DXSpriteがD3DRS_FOGENABLEをFALSEにしてるのをみると
仕様っぽいですね。
レス消費すまそ。

余談ですが、真っ黒と書きましたが正確にはフォグ色でした。
966デフォルトの名無しさん:2011/02/17(木) 21:31:44
>>965
こんなとこで質問する前に、フォグの設定に関係する要素を全部調べるんだ。
D3DFVF_XYZRHWでもフォグは使えるから、そのための設定をちゃんとしないから
そんなことになってるだけだよ。
967デフォルトの名無しさん:2011/02/17(木) 22:35:28
directxってインプロセスサーバーなの?
968デフォルトの名無しさん:2011/02/17(木) 22:49:17
そうだよ
969デフォルトの名無しさん:2011/02/17(木) 22:53:19
>>968
ありがとうございます
てっきり他にプロセス動いてるのかと思っていました
970デフォルトの名無しさん:2011/02/17(木) 22:59:06
どう見てもただの関数群です
971964:2011/02/18(金) 00:52:47
>>966
ピクセルフォグにしたら出来た。
ありがとー

972デフォルトの名無しさん:2011/02/18(金) 08:12:02
すみません。
モーションを上半身(行動)と下半身(移動)を別々に動かしたいのですが、
これは普通どう実現するものなのでしょうか?  ※モーション再生はSDKサンプルの加工品です。

現在「下半身と上半身それぞれに対して、アニメーションのセットとミックス完了後、
   それぞれの不要部分のマトリクス更新をカットしあってみよう。」
と思って試行錯誤しているのですが、これは正しいor間違っているでしょうか?

また、何か読めば勉強になりそうな書籍やサイトが有れば教えて頂けますと助かります;
973デフォルトの名無しさん:2011/02/18(金) 08:17:34
下半身と上半身を別ファイルにすれば解決
1つのファイルから複数のインスタンスを生成するでもいいけど
974972:2011/02/18(金) 08:23:27
>>973
(゚Д゚) ・・・そんな手が・・。
元が同じモデルで同じモーションで再生時刻が同じなら綺麗にくっ付いて見えるんですよね;
ありがとうございます! orz
975デフォルトの名無しさん:2011/02/18(金) 08:24:17
>>972
普通、どう実現するかって言い方があれだけど >>973 も言う方法か、
あるいは予め指定してある頂点のグループ部分だけを動かせるような管理構造で、
単純に自前で持つように俺はしてるってか、全部書いてる
976972:2011/02/18(金) 08:25:04
あ、あれ?でも何か論理破綻している予感も・・? orz
977デフォルトの名無しさん:2011/02/18(金) 08:28:15
頂点つながってなかったらキレ目は見えるよ
当たり前だけど
978972:2011/02/18(金) 09:24:20
>>975
ありがとうございます。実現方法は色々有るんですね。頂点変換に至りさえすれば。

>>977
プログラム以前の話でしたね; 綺麗にくっつけるには何かしら頂点を触らないとですし、手間が増えそうですね;
あまり複雑な事をしたい訳でもないですし、
いっそ全て全身モーションで作り、移行タイミングで誤魔化すのも手かな・・と。
色々勉強になりました。 ありがとうございました。
979デフォルトの名無しさん:2011/02/18(金) 10:39:53
980972:2011/02/19(土) 02:12:58
>>979
ありがとうございます。そういう手も有るんですね。

そこで、早速その方法に合わせてモデルを分割し、下半身の上に上半身を上に乗せようとしたのですが、
「乗せるボーンの合成済みマトリクス」を取ってきて描画すると
上半身が「形状は綺麗に保ちアニメーションも正常」「ただしやたら離れた位置で、下半身(腰)の回転と同期して大きく振り回されている」
という症状になってしまいました。

何となく、拡大縮小→回転→移動 の順番を間違えた時のような症状にも見えるのですが・・。
乗せる位置のマトリクスをどうにか分解し、順番に合成しなおせば正常になると思えますでしょうか?(分解方法を模索中です;)
981972:2011/02/19(土) 07:03:54
すみません、上は何とか解決できそうです。
マトリクスの掛け合わせの理解が根本的に間違っている様で。
先にボーンのマトリクスを掛け合わせ、胴の境目の2ボーンの結果で上半身下半身を描画したら、ほぼズレずに上手く行きました。
お騒がせしました; 
982デフォルトの名無しさん:2011/02/19(土) 08:47:25
次スレ建ててみました。

【C++】 DirectX初心者質問スレ Part34 【C】
http://hibari.2ch.net/test/read.cgi/tech/1298067098/
983デフォルトの名無しさん:2011/02/19(土) 17:38:08
埋め
984デフォルトの名無しさん
test