■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

鬱だ氏のう DirectX (Part 11)
1 名前: ◆4/ZtI/qiqk :03/11/21 10:09
DirectXについて、にいさま達がマターリと
技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

ちなみに、言語はC++がメイン。
C# / VB.NET 使いは、専用スレの方が話がスムーズに進むと思われ。

2 名前: ◆4/ZtI/qiqk :03/11/21 10:11
// 過去スレ
Part 1 : http://piza2.2ch.net/tech/kako/966/966655286.html
Part 2 : http://pc2.2ch.net/tech/kako/997/997101556.html
Part 3 : http://game.2ch.net/gamedev/kako/1005/10051/1005119775.html (ゲ)
Part 4 : http://game.2ch.net/gamedev/kako/1016/10162/1016276254.html (ゲ)
Part 5 : http://game.2ch.net/test/read.cgi/gamedev/1027351925/ (ゲ:迷子)
Part 6 : http://game.2ch.net/test/read.cgi/gamedev/1033920036/ (ゲ:迷子)
Part 7 : http://pc2.2ch.net/gamedev/kako/1039/10395/1039509250.html (ゲ)
Part 8 : http://pc2.2ch.net/gamedev/kako/1046/10466/1046676308.html (ゲ)
Part 9 : http://pc2.2ch.net/test/read.cgi/tech/1054553472/
Part 10 : http://pc2.2ch.net/test/read.cgi/tech/1061420660/


3 名前: ◆4/ZtI/qiqk :03/11/21 10:12
// 外部
- DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.asp
- MSDN > DirectX
http://www.microsoft.com/japan/msdn/directx/default.asp

- DirectX Info Lib (デバイス情報のデータベース。すばらしい!)
http://www.netsphere.jp/dxinfo/
- BBX(掲示板)
http://isweb8.infoseek.co.jp/computer/bbx/
- spin
http://spin.s2c.ne.jp/
- 宇治社中改(3D基礎講座) のミラー
http://web.archive.org/web/20020607052151/http://www.cc.rim.or.jp/~devilman/

// 関連
- Managed DirectX vol.2
http://pc2.2ch.net/test/read.cgi/tech/1061285378/

- ★初心者にVisual C++を教えるスレ★ Part9
http://pc2.2ch.net/test/read.cgi/tech/1068983609/
- Win32API質問箱 Build15
http://pc2.2ch.net/test/read.cgi/tech/1069339866/

4 名前: ◆4/ZtI/qiqk :03/11/21 10:24
過去ログの Part1 は発見できたんだが、
Part 5, 6 が、どうも見つからない…

消えちまったかねぇ?

5 名前: ◆RyJENULLoQ :03/11/21 12:47
>>4
Part5
http://pc2.2ch.net/gamedev/kako/1027/10273/1027351925.html
Part6
http://pc2.2ch.net/gamedev/kako/1033/10339/1033920036.html

6 名前:デフォルトの名無しさん :03/11/21 20:49
>>955
>フィルターがかからないオーバーレイが…
フィルターがかからないオーバーレイの実装なんて見たことありませんが?
だいたいこの人、「こうしてみたら」みたいな解決策をひとつも提示しないで、他人の発言の
あら捜しばかりしてて、すごく気分悪い。そもそもの質問が bltfast でパフォーマンスでないよ!
ってことなんだから、bltfast 以外でパフォーマンスの出る方法を提案しないと意味無いじゃん。

あんたが頭いいのはよくわかったから、次からは何か具体的な解決策を思いつけないときは
黙ってなよ。

7 名前:デフォルトの名無しさん :03/11/21 20:53
スレ汚してすみませんでした>その辺の人たち
この後 955 が勝利宣言するんでしょうから、先に敗北宣言しときます。
負けた負けた〜。

8 名前:デフォルトの名無しさん :03/11/21 21:23
>フィルターがかからないオーバーレイの実装なんて見たことありませんが?
オーバーレイでジャギーをとるフィルターなんて無いが、
今度は色調補正の話でもするつもりなの?
それともフィルターを自作すればあるとか言い出すの?

>bltfast 以外でパフォーマンスの出る方法を提案しないと意味無いじゃん。
前提条件を自分で勝手に変えて、原形をとどめていない条件で提案することに意味があるの?
DirectDraw使用時の話をしているのに、突然テクスチャの話をし出すし、
パフォーマンス的に劣ると言っても認めようとしないで、さらに勝手な条件を付ける。

>具体的な解決策
処理が追いつかなければフレームスキップと既に書いているが、
本当に自分の都合のいいようにしか読み取らない人だな。

>負けた負けた〜。
あきれ果てたよ。

9 名前:デフォルトの名無しさん :03/11/21 23:47
何の話か分からないので前スレの955を見てみたが、やっぱり分からなかった

10 名前:デフォルトの名無しさん :03/11/22 00:09
最初に質問した人間がトンズラこいたので、既にどうでもいい話。

11 名前:デフォルトの名無しさん :03/11/23 01:53
[質問]
デスマも終わり時間ができたのでDirectXを少し勉強しようと思うのですが
皆さんが参考になった書籍やお勧めの本がありましたらお教えください

12 名前:デフォルトの名無しさん :03/11/23 02:49
本当に初心者なら工学社の本
初心者じゃないならSDKヘルプ&サンプルプログラム

らしい…オレはヘタレなんで前者+たまにSDK日本語ヘルプ読むぐらい。

13 名前:デフォルトの名無しさん :03/11/23 02:52
って本の名前書くの忘れてたな
「I/O別冊DirectX7.0実践プログラミング」
「I/O別冊DirectX8.0実践プログラミング」
「I/O別冊DirectX9.0実践プログラミング」
これ以外の本も一通り目を通してみたけどどうも分かりづらかった



14 名前:デフォルトの名無しさん :03/11/23 03:37
VooDoo3でDirectX9.0コンポーネントで3Dゲーム開発してるんだけど(今だ初期化しかできない)、
なんかアダプターの使用できるサーフェイスフォーマットが変
これはVooDoo3の仕様?


15 名前:デフォルトの名無しさん :03/11/23 03:38
I/Oの本は出るのは早いけど間違いや勘違いが多いと思う。
とりあえず分からなくてもいいからSDKのヘルプには全て目を通しておいた
方がいいかと。

16 名前:デフォルトの名無しさん :03/11/23 03:51
俺みたいに古いビデオカード使ってるとサンプルプログラムが動かないから、
何処からか落ちてるソースを拾ってきて日本語ドキュメント見ながら適当にソースの編集・追加していけばいいんじゃないか

17 名前:デフォルトの名無しさん :03/11/23 04:19
>>11
お疲れさんです。お茶ドゾドゾドゾー。
     旦~
 旦~     旦~
     ヽ )ノ
旦~ ⌒(゚д゚)ノ 旦~
    /. ( ヽ
 旦~     旦~
     旦~

まずは工学者の本片手にチュートリアルを読むのが手っ取り早いと思う。
あとはSDKのサンプルの中から興味湧いたのを摘んでいく。
工学者の本は教科書ではなく参考書みたいな位置付けだと思う。
初心者を脱したら3Dグラフィックス数学(出版社は忘れたスマソ)なんかも見てみるといいかも。

18 名前:デフォルトの名無しさん :03/11/23 09:19
工学者の本はDirectXのヘルプの丸写しが多々見られるが
それがなかなかいいという現実。

19 名前:デフォルトの名無しさん :03/11/23 11:26
ヘルプだと、初心者が必要なところを探すのはなかなか大変だからな。

20 名前:デフォルトの名無しさん :03/11/23 11:39
>3Dグラフィックス数学
ボーンデジタル社だね。
Game Programming Gemsなんかも出してる所。
あそこの本はウルトラ高くて・・・(涙

21 名前:デフォルトの名無しさん :03/11/23 13:13
I/Oの本はヘルプ丸写しっちゃ丸写しなのだが、
必要なところだけ抜粋して読みやすくしてあるので、
実は入門には大変良いと思ってる。

22 名前:デフォルトの名無しさん :03/11/23 13:14
たまにえらいケチョンケチョンに叩く人いるよね、
「最近はあぁいう詐欺本ばかりだ」とか云って、
まぁヘルプが楽に読める人にとってはそうなのかな。

23 名前:デフォルトの名無しさん :03/11/23 14:03
工学社本は、ライターによって当たり外れが大きい。

24 名前:デフォルトの名無しさん :03/11/23 14:13
8のアクションなんとかは外れだった

25 名前:デフォルトの名無しさん :03/11/23 15:19
>>22
ヘルプ写して金もらってるのが許せないんだろうね。
だけど>>19がいうように初心者が自分の必要なことを
ヘルプから探すのは結構大変だよね。
だからああいう本っていつまでも需要あると思うんだよね。
それがわからないのかなぁ。

26 名前:デフォルトの名無しさん :03/11/23 18:49
http://yaneurao.zive.net/yanebbs/dobbsr.cgi?a=view&topic_id=1049667816
77 78 234
とか、まぁ云いたいことは分かるけど…

27 名前:デフォルトの名無しさん :03/11/25 17:21
やね本ってどうなんだ。読んだこと無いから知らんが、
DirectX系の話じゃなくてゲーム開発一般の話なんかね。

28 名前:デフォルトの名無しさん :03/11/25 17:29
>>27
一般の話らしい。

29 名前:デフォルトの名無しさん :03/11/26 00:20
そういやこのスレ見てるおまいらのPCスペックてどんなもんなんだ?

30 名前:デフォルトの名無しさん :03/11/26 01:21
自分は
Ath2500+
512MB
Gefo5600


31 名前:デフォルトの名無しさん :03/11/26 10:40
漏れは
P4 2.4CGHz
1GB
Radeon9600Pro

32 名前:デフォルトの名無しさん :03/11/26 12:56
P4 2.4BG、512MB、RADEON 9500Pro
まあDX9世代なわけだがPixelShader2とかをソフトに導入したことは一度もない
単発ネタで遊んだことはあるけど
結局今の世間的スペックで作るとするとDX8くらいが限界なんだな

33 名前:デフォルトの名無しさん :03/11/26 17:51
今の情勢だと
VertexShaderが使えるかどうかってところかな…ソフト処理もまぁ実用になるし。
Ys6とかも使ってたみたいだし。

最近のあたらしいビデオチップではHardwareT&Lがサポートされてないって聞いたけど本当?
まぁVertexShaderがあればHWTLがあんま意味がないってのは分かるけど…

34 名前:デフォルトの名無しさん :03/11/26 21:56
Pentium4 2.4CGHz
1GBRAM
GeForce4Ti4200

>>31と近いけど、
これだけあれば3Dゲーム作るのに不自由しないよね。

35 名前:デフォルトの名無しさん :03/11/26 22:36
DirectX9対応と未対応の差は大きい

36 名前:デフォルトの名無しさん :03/11/26 22:56
Duron750 512MB GF2MX
みんないいスペックやな〜

37 名前:デフォルトの名無しさん :03/11/27 01:20
2500+
512MB
GF4Ti4200

いくら金がないからってFX5200なんぞ買う必要はないよ・・・な?

38 名前:デフォルトの名無しさん :03/11/27 02:53
最新ゲームをプレイするのに高性能VGA持っててもいいとは思うが
開発に使うにはマジでDX8ベースのVGAでちょうどいいね

39 名前:デフォルトの名無しさん :03/11/27 03:07
>>38
まあ、2Dの話にもなるから全て当てはまる訳じゃないが、
それってDX9時代にDX7の開発してるレベルになるよ?
次世代DXが出ても、DX9はおろかDX8でしか組めませんって。

開発だからこそ、変わり目、節目で最新のグラボで最新の機能、処理をやるのでは?
例えば、shader ver2が一般的になっても
ver1.4の機能しか知らない使えないじゃ環境普及と開発レベルが合わないでしょ?

自分は今、2年位前のPCだけどグラボだけradeon9700pro載せてるよ?
CPUでスキニングアニメーション処理とかを大量にやるとキツイが
グラボの性能、機能、DX9の機能等は問題なく動いてる。
勉強でなく、開発と言うなら金銭面はある程度無視して、最新を使うべきかと…

40 名前:デフォルトの名無しさん :03/11/27 03:19
>>39
すまん、俺の中では開発用と勉強用は別物なんで。
そらもちろん勉強用にはDX9ベースのほうがいい、
シェーダはVer2になると途端にやれること増えるしなー。
だけど開発用には動作環境に近い(と思われる)DX8ベース。

41 名前:デフォルトの名無しさん :03/11/27 08:53
そこそこ新しい環境で開発を始めれば、
プロジェクトが終了したころにはかなり普及している

という法則があるのをご存知か

42 名前:デフォルトの名無しさん :03/11/27 09:17
開発には最新の環境と型落ち環境の両方が必要になる。

43 名前:デフォルトの名無しさん :03/11/27 21:52
どう見たって、DX9はDX10でフルにプログラマブルシェーダ化するまでの
繋ぎなんだから、実働するロジックが書けたら
スペックオタみたいな環境構築なんかどうでもいいよ。

44 名前:デフォルトの名無しさん :03/11/27 23:35
俺は.NETでまともにDirectXを扱えるようになったんで
C# + DX9で開発をしてるが、DX9の新機能は使ってない・・・。

45 名前:デフォルトの名無しさん :03/11/28 00:13
繋ぎはDX8で、DX9はしばらくスタンダードとして続くと思うよ。
Intelの次のチップセットもShader2.0対応だし。
WindowsFXは標準でDX9に対応しているし。

そもそもMSが、次のOS出すまでDirectXのコアには手をつけないって言ってる
くらいだから、DX10なんて当分出ないかと。

46 名前:デフォルトの名無しさん :03/11/28 00:30
シェーダの醍醐味は2.0からだと思うので
2.0に触れるためにもDX9世代のボードはあるといいかもしれない
ホントに色んなことが出来て面白い

47 名前:デフォルトの名無しさん :03/11/28 01:45
>>46
具体的にはどんなことができるの?
俺がシェーダをやりはじめたころ、
バンプマップや環境マップで受けた衝撃ぐらいのものはある?

48 名前:デフォルトの名無しさん :03/11/28 09:12
秋葉原にソフマップの店舗がいたる所にあっる衝撃ぐらいのものはある?

49 名前:デフォルトの名無しさん :03/11/28 12:23

サンプルコード(チュートリアル1〜6)のコードで
メッシュ読み込みの奴にライティングのコードを足すと、とたんにモデルが真っ黒になるんですが、
これはなぜでしょーか。



50 名前:デフォルトの名無しさん :03/11/28 13:30
法線がどうなっているのか述べよ。

51 名前:デフォルトの名無しさん :03/11/28 16:40

>>50
ハァハァ やっと分かりました。
ヒントThxです。

52 名前:デフォルトの名無しさん :03/11/28 20:43
DirectPlay Voiceを使ったソフトを作っているのですが、
ある日突然DirectPlayVoiceClientの取得ができなくなりました。
サウンドハードウェアテストウィザードを実行すると
エラーコード: 0x80004005
を返して来てうまくいきません。

ソフトを作る前はテストがうまくいったので何か原因があると思うのですがよくわかりません。

ソフトの開発環境は
VC.NET 2003(MFC使用) + DirectX 9.0 SDK
です。

それから工学社の本についてくるサンプルプログラムPeerVoiceを実行しても同じようなエラーがでます。

53 名前:デフォルトの名無しさん :03/11/29 14:37
パイプ上の絵のテクスチャの上を沿って光のラインが走る表現
(PS2のアヌビスの機体みたいな物)
これを行う方法をご存じの方おられませんか?
シェーダ無しでも可能な物だとは思うのですが・・・。

54 名前:デフォルトの名無しさん :03/11/29 15:03
>>53
テクスチャアニメだったりして・・・。(勘だけど)
すまん、よくわからない。

55 名前:デフォルトの名無しさん :03/11/29 19:24
if (!filename.EndsWith(@"\"))

今Xファイルのアニメーションのサンプルいじってるんですが、ユーリティクラス内にある
ファイル読み込みのところにこんな奴があるんですが。

"\"とfilenameの語尾が同じかどうか判断するのは分かるんですが、@はなんなんでしょうか。
C#にこんなのあったっけと思ってリファレンスの演算子とか調べたんですが載ってません。

どなたか教えてください。お願いします。


56 名前:デフォルトの名無しさん :03/11/29 22:22
"c:\\windows\\system\\" == @"c:\windows\system\"
\nや\tなどのエスケープシーケンスを無効にしてそのまま文字として扱う。

DirectXと関係ないが。

57 名前:デフォルトの名無しさん :03/11/30 11:32
ありがd

58 名前:デフォルトの名無しさん :03/11/30 15:23
そんなの、しらなかった・・・

59 名前:デフォルトの名無しさん :03/11/30 20:46
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/csref/html/vclrfString.htm

ここに載ってるやん。

60 名前:デフォルトの名無しさん :03/11/30 21:40
DirectPlay Voiceについて詳しい人はいませんかね?
聞きたいことがあるのですが

61 名前:デフォルトの名無しさん :03/11/30 23:09
漏れは全然知らないけどとりあえず書いてみたらいいんでないか?

62 名前:デフォルトの名無しさん :03/11/30 23:42
>>54
ランダムの十数本の溝を光が走る演出なんですが、
ただのテクスチャアニメだと結構な枚数が要りそうで・・・。

あらかじめ溝の位置を調べて、
テクスチャでそこを移動させる
原始的な方法しか思い付かない・・・。

こんなの
ttp://www.mainichi.co.jp/life/hobby/game/sinsaku/2003/p/02-1.html

63 名前:デフォルトの名無しさん :03/12/01 01:46
実物見てないけど、ZOEはテクスチャαチャンネルを透過光指定ということにして
ポストプロセスで透過光処理してるらしいから
そこらへんにパレットアニメーション的なテク絡めてるんちゃう?

64 名前:デフォルトの名無しさん :03/12/01 02:47
>>62
溝が一方向なら、
1.縞になってるテクスチャ(光用)
2.モデルのテクスチャにα値0で溝を描いたもの
を用意して、1をずらしつつ合成するとか。

65 名前:60 :03/12/01 21:59
DirectPlay Voiceを使って音声通信をするときに録音をしたいのですが
DirectX9 開発者向けFAQを読んでも詳しくわからなかったので教えて欲しいです。

サンプルプログラムがあればうれしいです。

66 名前:デフォルトの名無しさん :03/12/02 18:26
宇治社中改 web.archive.org に無い講座があるんですが、
誰か保存とかしてませんか?保存してたらどっかにageてください。

67 名前:デフォルトの名無しさん :03/12/04 01:43
iyada

68 名前:デフォルトの名無しさん :03/12/04 22:25
9.0sumerを使っています。
基礎的な(C言語的な)問題かと思われますが、どなたか
分かる方がいらしたら教えてください。

Xファイルからメッシュをロードした時、頂点情報にディフューズ色が
ない場合は追加しようと思っています。
それでGetFVF()を使えば、「D3DFVF_DIFFUSE」があるかどうか分かると
思ったのですが、GetFVFの返り血はDWORDです。
そのDWORDからどのように情報を得ればD3DFVF_DIFFUSEを含むかどうか
判断がつくのでしょうか?

69 名前:デフォルトの名無しさん :03/12/04 22:28
返り血は病気がうつるかもしれないから、すぐに洗い流した方がいいよ。
&洗剤とか付ければ汚い部分は落とせるから。

70 名前:デフォルトの名無しさん :03/12/04 22:29
勉強もかねて、ドロー系のソフトをDirectXで組みたいけど、
そこそこ人に使ってもらうためには、7くらいにしといた方がよさそう、
でも、9でスキル投資した方がいい気もする。
1つのソフトを両方で組んでるヤツとかいる?さすがにいないかな。

71 名前:デフォルトの名無しさん :03/12/04 22:37
3DSMAXはDirectX8.1と9、OpenGLに対応してますが何か?

72 名前:ぬるぽ :03/12/04 22:42
konetadaisuki@hotmail.com
jodpsds@hotmail.com
udaebvd@hotmail.com

俺の携帯に毎日5〜10通以上来るエロサイト業者の宣伝。

うざい。ウイルスとかでも送ってやってくれ。まあ普通のメール何万通でもいいから送ってくれ。

73 名前:デフォルトの名無しさん :03/12/04 22:58
>>72
そこに送っても業者は困らずhotmailのサーバーが困ると思うがどうか。

74 名前:デフォルトの名無しさん :03/12/04 23:13
スレ違いの>>72がウザイ

75 名前:70 :03/12/04 23:13
>>71
いえ何も。

9で組んで、GDI互換でリリースというのはどうだろう。
自前でソフトエミュ用意するのと同じ労力だが、
勉強できて、多数に使ってもらえる。最強。

どうでもいいや。
もう、めんどくさいから全部やめる。
まんまとひっかかるとこだったよ。

76 名前:デフォルトの名無しさん :03/12/05 01:45
DirectX8.1から9.0bにアップデートしようと、DirectX 9.0b End-User Runtimeを落として
実行してみたんですが、d3d9.libなどのファイルが入ってませんでした。
これって一体なんでなんでしょう…(;´Д`)

77 名前:デフォルトの名無しさん :03/12/05 01:46
>>68
D3DFVF_DIFFUSEとANDを取れ

78 名前:デフォルトの名無しさん :03/12/05 02:04
>>76
End-User Runtimeだから。
SDKが必要。

79 名前:デフォルトの名無しさん :03/12/05 03:10
たった3語の英語くらい読めっつうの。

80 名前:68 :03/12/05 11:08
>>69
>>77
ありがとうございました。お陰さまで出来ました。
はじめ、69が解答だと気がつきませんでした(汗。

81 名前:デフォルトの名無しさん :03/12/05 13:53
おお、>>69は解答だったのか。俺も気づかなかった。

82 名前:デフォルトの名無しさん :03/12/05 14:53
初心者の質問ですみませんが
DirectXを使っての3Dプログラムをやってます。質問ですが
体と腕を階層構造でつなげてアニメーションさせてるんですが
体を移動したときの腕の座標ってどうやって求めるんですか?

83 名前:デフォルトの名無しさん :03/12/05 15:59
>>82
別スレで(けっこー不親切な)回答を貰ってるのに無視するのか…

84 名前:デフォルトの名無しさん :03/12/05 16:09
>>83
煽りは無視します。相手するとつけあがりますから。

85 名前:デフォルトの名無しさん :03/12/05 17:21
>>84
あれを質問と全く関係ないことだと思っているなら、答えてくれた人に失礼。
少なくとも回答にはなってる。

っていうか、俺はその質問を読んで、アニメーションは既にできていると
思っていたんだけど……だったらそんな質問しないか。

86 名前:デフォルトの名無しさん :03/12/05 17:22
つけあがってるのはだれかと



漏れは釣り上げられたようだが(鬱

87 名前:デフォルトの名無しさん :03/12/06 00:08
>>82
行列スタックを使うといいと思いますよ

88 名前:デフォルトの名無しさん :03/12/06 12:12
DirectXのゲームプログラミングキター(工学社)1・2
これにそれ系統のネタかかれているようだよ。
2冊で5千円とリーズナブル。

例のいんたぶーに答えてた人が書いた奴読みたいが和訳した奴ってないんすよね?


89 名前:デフォルトの名無しさん :03/12/06 22:41
DirectX9.のスプライト機能ってただ単に3D機能を応用した擬似スプライト機能だ、
と日本語ドキュメントに書いてたと思うんだけど、
これってスプライト機能のついてた下位のバージョンだとどうなるの?
スプライト機能を無視して3Dでの擬似スプライト機能つかうの?

90 名前:デフォルトの名無しさん :03/12/06 22:55
>>これってスプライト機能のついてた下位のバージョンだとどうなるの?
これってスプライト機能のついてたDirectXの下位のバージョンだとどうなるの?

91 名前:デフォルトの名無しさん :03/12/06 23:00
下位のDirectXってスプライト機能ついてたっけ?

ついてたとしても、関係ないよ。
上位バージョンで定義したデバイスでの新しい機能を使うには、新しいバージョンの
DirectXが必要になるし。
上位バージョンのDirectXに対応しているけども、使っているのが下位バージョンの
スプライトなら、下位バージョンでもその方式で実装されるけど。

要するに、DirectX5でDirectX9の機能を使ったらどうなるかって話でしょ?
そういうこと。使えません。

92 名前:デフォルトの名無しさん :03/12/06 23:41
>これってスプライト機能のついてた下位のバージョンだとどうなるの?
その下位バージョンとはMSXとかX68Kとかのことか?
そういえば付いてたなスプライト。

93 名前:デフォルトの名無しさん :03/12/07 00:51
あれ?
directXの下位バージョンに2D描画関連載ってなかったっけ?
とりあえず、directX9.で開発したものはver9.以上じゃないと正しく動かないっと
さんくす、デフォルテの名無しさん達

94 名前:デフォルトの名無しさん :03/12/07 05:47
本物のスプライトを体験した世代は、単なるブロック転送をスプライトと
呼ぶのはなんか許せないよね。

95 名前:デフォルトの名無しさん :03/12/07 08:32
DirectDrawのことかな?
あれはスプライトというか、単なるBit転送だし・・・

96 名前:デフォルトの名無しさん :03/12/07 09:35
>>94
それはオヤジになってる証拠。
本物本物というが、セガなんかはかなり早い時期からフレームバッファ方式だったし。

97 名前:デフォルトの名無しさん :03/12/07 10:51
デフォルト形状のマウスは、大概の場合スプライトで描かれている。

98 名前:デフォルトの名無しさん :03/12/07 11:52
オーバーレイサーフェイスのことだろか?

99 名前:デフォルトの名無しさん :03/12/07 22:16
今日初めてDirectXをさわってみたのですが、MSのサンプルプログラムをコンパイルして実行しようとすると
CreateDeviceで失敗してしまいます。これは何がいけないんでしょうか?
ディスプレイ、それともビデオカードでしょうか?

100 名前:デフォルトの名無しさん :03/12/07 22:27
おまえの頭

101 名前:99 :03/12/07 22:41
D3DERR_INVALIDCALLが返ってきてました。もうちょっと勉強してきます。
スレ汚しすみません。

102 名前:デフォルトの名無しさん :03/12/08 04:39
視点の移動と目の前のキャラクターの移動を同時にしたい
のですが微妙にラグがあってキャラクターの残影が残ります。
普通はどうやってるのでしょうか?
以下は描画部分のソースです。

D3DXVECTOR3 vEyePt( eye_x, eye_y , eye_z );
D3DXVECTOR3 vLookatPt( 0.0f, 0.0f, 1000.0f );
D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
D3DXMatrixLookAtLH( &matView, &vEyePt, &vLookatPt, &vUpVec );
D3DXMatrixIdentity( &matW );

cx_char->DrawMesh(m_pd3dDevice, &matWsol);

スムーズに視点とキャラクターの移動を行うには根本的
に違う方法があるのではないだろうかと思っています。

SDKはDirectX9です。

103 名前:デフォルトの名無しさん :03/12/08 04:51
1ループ内で
A キャラクターの位置にもとづいて、カメラの位置を決定
B キャラクターが移動する。
C Aのときに求めたカメラで、Bのキャラクターを表示

とか?

104 名前:デフォルトの名無しさん :03/12/08 04:59
>>103
> 1ループ内で
> A キャラクターの位置にもとづいて、カメラの位置を決定
> B キャラクターが移動する。
> C Aのときに求めたカメラで、Bのキャラクターを表示
> とか?

なるほどちょっと試してみます。

105 名前:デフォルトの名無しさん :03/12/08 07:00
>>103のようにやったから微妙なラグがでてしまったのでは?
ということで、>>103のようにやってみろという事ではありません。



106 名前:デフォルトの名無しさん :03/12/08 17:20
描画の処理と移動とかゲームシステムとかの処理って分けてた方がいいと思いますよ
とりあえず移動関連の処理が終わってから描画に移るようにした方が無難だと思ふ。

レンダリングは垂れ流し。移動処理等は時間毎に決めれた量の処理しかしないように
するってーのは結構でふぉるとなパターンではないの?

カメラ・キャラ移動処理ー>レンダリング

107 名前:デフォルトの名無しさん :03/12/08 17:21
普通は計算と描画はしっかり分ける。
ループ始め、計算1、描画1、計算2、描画2、戻る、みたいなのはダメ中のダメ。

108 名前:デフォルトの名無しさん :03/12/08 20:13
行列というものを勉強したにも関わらず
struct{
D3DXVECTOR3 position;
CUSTUM_VERTEX vertex[4];
};とまでしておいて
行列にpositionをぶちこまず、
SetPos()とかで頂点構造体の座標を毎回ずらしてた漏れはアフォですか?

109 名前:デフォルトの名無しさん :03/12/08 20:27
移動しかしないのなら、行列を使うより計算量が減るので、それもまたよし。

110 名前:102 :03/12/08 20:40
トランスフォームの設定を視点の移動と描画の間に入れたら
スムーズに描画されるようになりました。たくさんのご意見ありがとうございました。

111 名前:デフォルトの名無しさん :03/12/08 20:41
>>109
移動しかしなくても行列使ったほうが計算量すくないだろ。

112 名前:デフォルトの名無しさん :03/12/08 21:56
C++6.0でDirectXの勉強してるのですがwin32APIみたいに(←をつけると引数が全部表示される方法ってありませんか?


113 名前:デフォルトの名無しさん :03/12/08 21:59
一頂点辺り
単純移動 加算3回
行列 乗算9回、加算6回

114 名前:デフォルトの名無しさん :03/12/08 22:03
ヘッダファイル加えりゃいいじゃん

115 名前:デフォルトの名無しさん :03/12/09 00:05
ちょっと詰まってしまってヘルプをお願いします。

質問:プログラマブル頂点シェーダから頂点ブレンド用のマトリックスパレットっ
   て使えるんですか?

説明とかは固定機能頂点シェーダの場合だけで、もし使えるとするとどんな感じの
データがVertexShaderに渡されるのか教えてください。

116 名前:115 :03/12/09 00:08
すみません補足です。

やりたいことは
「重み付頂点ブレンドをプログラマブル頂点シェーダでやりたい」
です。

117 名前:デフォルトの名無しさん :03/12/09 00:21
定数にカキコしとくんじゃなかったっけ?

118 名前:115 :03/12/09 00:33
>>117 定数にカキコしとくんじゃなかったっけ?

回答どうもです。

どの定数を使うかをアドレスすることはできるんですか?
各頂点毎に影響する変換行列は最大でも2つ程度なんですが、
関節がいっぱい有るので、変換行列自体は50個ぐらい有って
マトリックスパレットからインデックスで選択したいのです。

119 名前:デフォルトの名無しさん :03/12/09 01:19
>>115
ここで聞くよりt-potあたりのサンプル見るのが早いと思うが。

どの行列を使うかは頂点データの中に入っている。
行列を定数に設定したらシェーダーで頂点から行列のインデックスをゲットして、
それをアドレスレジスタに突っ込んで行列を引っ張ってくる。

120 名前:115 :03/12/09 01:32
>>119 レスどうもです。

試してみたら D3DRS_INDEXEDVERTEXBLENDENABLE が最新のGeforceでも使えないみた
いなのでインデックス付頂点ブレンディングは未だ使えるものではないみたいです。

t-pot のサンプル見てみます。

121 名前:デフォルトの名無しさん :03/12/09 01:35
>>113
>一頂点辺り
>単純移動 加算3回
>行列 乗算9回、加算6回
いやだから行列のみの方が加算3回分計算量すくないでしょ。
未トランスフォーム頂点はどっちみち行列かけるわけだし。

122 名前:115 :03/12/09 02:06
t-pot では見つけられませんでしたが
http://www.twin-tail.jp/contents/vsdx8/d3d/029/
に 119 さんが言っているようなサンプルがありました、多謝!

123 名前:デフォルトの名無しさん :03/12/10 08:09
UPnPの機能を使いたいが為(楽もしたい)にDirectPlayでP2Pなファイル転送が出来れば嬉しいのですが
可能でしょうか?

ちなみに当方C#で開発してます、念のため・・・

124 名前:デフォルトの名無しさん :03/12/11 08:16
3D機能を使って2D描画をしようと思っています
元絵を1枚のテクスチャとして読み込みその1部をテクスチャ座標を指定して
描画させているのですが浮動少数の所為なのか1ドットずれてしまう場合があります。
回転、拡大縮小などの機能を使いたいのですが
この問題を解決する方法はありませんでしょうか?

125 名前:デフォルトの名無しさん :03/12/11 08:25
まずヘルプをよく読みます。

126 名前:デフォルトの名無しさん :03/12/11 09:10
>>124
「三角形ラスタ化ルール」でヘルプを検索

127 名前:デフォルトの名無しさん :03/12/11 22:44
>>120
それを使ったサンプルがFX5600でちゃんと動作しているが?
ttp://monsho.hp.infoseek.co.jp/dx/dx29.html

>>122
t-potでCg使って丁寧に説明してあるだろ…


128 名前:デフォルトの名無しさん :03/12/12 00:57
深度バッファだけ描画する方法ってどうやるんですか?

129 名前:デフォルトの名無しさん :03/12/12 03:05
完全透明にして描画

130 名前:デフォルトの名無しさん :03/12/12 03:32
D3DRS_COLORWRITEENABLE

131 名前:デフォルトの名無しさん :03/12/12 04:07
>>130
それ調べたら結構サポートやばいね…
ちょっとマイナーカードになるとアウトだ。
例えばMatroxMilleniumG450,Geforce2Pro,Geforce2GTX,TNT2
このへんでダメってのはちょっと厳しいかもしれないな
ALPHABLENDでSRC_ZEROとかDSET_ONEとかそんな感じの設定にするほうが安全だろうね。
遅そうでやだけど

132 名前:デフォルトの名無しさん :03/12/12 04:44
漏れはいつもALPHABLENDでSRC_ZEROとかDSET_ONEで透明化
してるがやばいんすか?
SDKでも使われてるみたいだけど、、、

133 名前:デフォルトの名無しさん :03/12/12 05:14
そっちは問題ないゆーとるやん。

134 名前:デフォルトの名無しさん :03/12/12 11:03
やばくはないけど遅くなる可能性が高い。アルファブレンドは完全に透明でも
描画しないわけじゃなくて、計算の結果描画前とピクセルの値が変わっていない
だけで、描画はしているからね。
アルファテストにD3DCMP_NEVERを指定した方が速くなる可能性は高い。
ただ、最近のATIのビデオカードなんかは、完全に透明に近いピクセルは描画
しないなんていう小細工をしているから変わらないかもしれないが。

135 名前:デフォルトの名無しさん :03/12/12 13:18
アルファテストが不可なら深度バッファにも書き込みがなされませぬが…
それを分かっていってるのかな、いや俺が思い込みしてるだけという説もあるが。

136 名前:デフォルトの名無しさん :03/12/13 16:53
DirectX9.0を導入していたんですが8.1に戻す必要が出てきたので、
DirectX Eradicator 1.09を使用してアンインスコしました。
で、8.1のパッケージをインストールして再起動、
dxdiagでちゃんと8.1になってるかどうか確認したところ、「見つかりません」の表記が
どうやらインスコに失敗していたみたいで、何度かインスコして再起動かけてみたけど無駄。
DirectX 8.1 Software Development Kitもインスコしてみたけど相変わらず「見つかりません」
誰かタスケテください(つA`)
OSはwinXP homeです。
↓がdxdiagの情報をコピペしてみたやつです
Time of this report: 12/13/2003, 16:50:14
Machine name: B08H10AMDLI5XPP
Operating System: Microsoft Windows XP Home Edition (5.1, Build 2600) Service Pack 1 (2600.xpsp2.030422-1633)
Language: Japanese (Regional Setting: Japanese)
System Manufacturer: GBT___
System Model: GA-7VAXP
BIOS: GBT - 42302e31
Processor: AMD Athlon(tm) XP 2600+, MMX, 3DNow, ~2088MHz
Memory: 512MB RAM
Page File: 239MB used, 1010MB available
Primary File System: n/a
DirectX Version: DX Setup Parameters: Not found
DxDiag Version: 5.01.2600.1106 32bit Unicode

137 名前:デフォルトの名無しさん :03/12/13 17:31
DirectX9.のスプライト機能の事なんだけど、
当たり判定等のメソッドって無いのでしょうか?
つーかこのスプライト機能自体メリットってあるの?

138 名前:デフォルトの名無しさん :03/12/13 17:38
>当たり判定等のメソッドって無いのでしょうか?
当たり判定と言っても判定基準が目的とする物によって異なるわけだが、
その程度のことも考えられないのか?
どうしようもないから、プログラムはすっぱりと諦めた方がいい。


139 名前:デフォルトの名無しさん :03/12/13 17:44
>>136
ネットで答えを待つより、OSごとクリーンインストールしたほうが早い

140 名前:デフォルトの名無しさん :03/12/13 17:48
ON SPRITE GOSUBだっけ
んなもんあるか!


141 名前:デフォルトの名無しさん :03/12/13 18:36
>>138
俺の聞きたいのはそういう基本的な事じゃなくて、
なんのためにスプライト機能がついてるのかって事なんだけど

142 名前:デフォルトの名無しさん :03/12/13 18:44
>俺の聞きたいのはそういう基本的な事じゃなくて、
って 137 で思いっきり聞いてるだろ。
>当たり判定等のメソッドって無いのでしょうか?

>つーかこのスプライト機能自体メリットってあるの?
メリットを感じられなければ使わなければいいだけ。


143 名前:デフォルトの名無しさん :03/12/13 18:45
>>141
オマエみたいな能無しの馬鹿でも扱えるように、お情けで用意されているだけ。

144 名前:デフォルトの名無しさん :03/12/13 18:45
>141
2Dのスプライトが必要な時。
Summner Update後なら、ビルボードにも使える。

145 名前:デフォルトの名無しさん :03/12/13 18:46
Summnerってなんだ、Summerだろ。

146 名前:デフォルトの名無しさん :03/12/13 19:18
Microsoft DirectX 9.0 SDK Update (Summer 2003)をインストールしたのですが
VS.netでプロジェクト->参照の追加としてもMicrosoft.DirectX.dllなどが見つかりません

やったこと
・まず最初はdx90updatesdk.exeをダウンロード、インストールしましたがだめでした
・つぎに元からあったSDKが邪魔をしてるのだと思い、コントロールパネル->プログラムの追加と削除で
 アンインストールしてからもう一度dx90updatesdk.exeでインストールしましたがだめでした

dx90updatesdk.exeは Date: October 3, 2003 のものをダウンロードしました
VS.netは2002です

よろしくおねがいします


147 名前:デフォルトの名無しさん :03/12/13 19:31
>>Summner
おまえメガテン信者だろ

148 名前:146 :03/12/13 19:40
146です
追加で申し訳ないのですがGotDotNetの掲示板に
「開発者ランタイムをダウンロードしてDebug\mdxredist.msi を実行しインストールする。
dxsetup.exe ではインストールできないことがあるようです」
とあったので手動でmdxredist.msiを実行しましたがだめでした

149 名前:デフォルトの名無しさん :03/12/13 20:01
ttp://rob-rob.hp.infoseek.co.jp/mmo/pix/d02112701.jpg
みたいな3D上に線を表示したいのですが、どうしたらよいでしょうか?

点を並べて線みたいに表示したらよいのでしょうか?

150 名前:デフォルトの名無しさん :03/12/13 20:21
DrawPrimitiveで普通に描けるだろ。
なんでそんな分かりきったことをいちいち聞くんだ?

151 名前:デフォルトの名無しさん :03/12/13 20:39
HelpのID3DXLineでも見れ。
ただ線引きたいなら>>150でOKだが。

152 名前:149 :03/12/13 20:56
ほうほう。
それは知らんかった!
どもです!

153 名前:デフォルトの名無しさん :03/12/13 21:43
すいません。

DirectX5までDirectDrawは使っていたのですが
DirectX8.0や9.0になってDirectXGraphicsになって
3Dを勉強している物ですが・・・

DirectXが書いてあるHPを初期化と2D(スプライト)までは
理解出来たのですが・・

ワールド座標、ビュー座標の所で躓いてます。

2Dの時は座標は(0,0)〜(640,480)でドット単位で指定すれば
良かったと思うのですが

3Dの時は-0.1〜1.0までを指定する所までは理解してのですが
物体やワールド座標の値はなんなんでしょうか?

値はドット単位じゃなく何の単位なんでしょうか。

意味不明な事を言ってるかもしれませんが
どうも単ワールド座標の単位(サンプルでは0.5とかの数値が入ってます)
が解りません。

どうか宜しくお願いします。




154 名前:デフォルトの名無しさん :03/12/13 21:54
>153
μでもmでもAUでも、表示したいモデルに合わせて、
好きな単位を選べばいいのでは?

155 名前:デフォルトの名無しさん :03/12/13 22:15
>>153
-1〜1 世界の端から端まで

156 名前:デフォルトの名無しさん :03/12/13 22:15
>2Dの時は座標は(0,0)〜(640,480)でドット単位で指定すれば
そもそも2Dでさえ、そんな限定的なサイズはない。

157 名前:デフォルトの名無しさん :03/12/13 22:36
>>154
>>155
>>156

レスありがとうございます。

>>154
単位が自由ですか・・・
基準の単位という物がないのでしょうか?

>>153
-1〜1の間ということでしょうか?
その範囲しか指定できないと言うことですね。
つまり広大なマップを想定しようが小さなマップを
想定しようが全て-1〜1の範囲ということですか・・・?
大きさの違いはどうなるんでしょか・・

>>156
すいません。。これは例えで800,600や1024,768等もありますね。


158 名前:デフォルトの名無しさん :03/12/13 22:49
>>157
大きさなんて相対的なもの。
与えられた空間を自分の好きなように使える。
ある人体モデルが人間か巨人かは、座標ではなく、
他のオブジェクトの相対的な大きさで決まる。

159 名前:デフォルトの名無しさん :03/12/13 23:44
>-1〜1の間ということでしょうか?
そんな間はない。
行列で変換する計算が入るだけで、計算結果の座標は2Dと同じ。
計算に用いる行列が自由に変えられるから、変換規則を自分で作るだけの話。

160 名前:デフォルトの名無しさん :03/12/14 00:07
どうせどんな単位を使っていようと、拡大縮小をかければ同じになるんだから。
1mmも百万倍の拡大をかければ1kmになるのだよ。
オングストロームから光年まで好きな単位を使えばいい。

161 名前:デフォルトの名無しさん :03/12/14 00:07
暗号化したX-Fileを読み込みたいと思っています。現状はバイナリではなく
テキスト形式で読み込んでいます。
 どなたか暗号化をご存知の方はおられますでしょうか?よろしくお願いします。



162 名前:デフォルトの名無しさん :03/12/14 00:31
スレ違いだしそんくらい自分で考えろよ……

163 名前:デフォルトの名無しさん :03/12/14 00:32
暗号化したけりゃすりゃいいだろ。
そんなものXに限った話ではない。
何を聞きたいのかさっぱり分からん。

164 名前:デフォルトの名無しさん :03/12/14 00:32
>>160
Zバッファ薄いな。

165 名前:デフォルトの名無しさん :03/12/14 00:44
>>163
> 暗号化したけりゃすりゃいいだろ。
> そんなものXに限った話ではない。
> 何を聞きたいのかさっぱり分からん。

 復号処理の結果をファイルとしてではなくプログラム内で処理したい
のです。LoadXfileは既に復号されたファイルを読み込むメソッドなので
完全な暗号化ができないのです。LoadXfileメソッド内で復号処理が
可能なら問題ないのですが...

166 名前:デフォルトの名無しさん :03/12/14 01:18
>>165
メモリ上に復号してそっから読めばいいじゃん。
ほんとに考えてる?

167 名前:デフォルトの名無しさん :03/12/14 01:26
>>166
ヘルプすら見てないんじゃね?

てかすれ違いって言われてんのにまだ質問してるし

168 名前:デフォルトの名無しさん :03/12/14 02:09
>>166
 やはりその方法なのですね。メモリダンプも想定していたので
少し極端な例だったかもしれません。

>>167
 Xファイルを復号と同時に読み込む機能があるのではないかと
思っているからこのスレに投稿しているわけで特にスレ違いでは
ないかと思いますね。そんなケンカごしになる理由が理解でき
ないです。

169 名前:デフォルトの名無しさん :03/12/14 02:10
質問です。
色々な参考文献よんでも、DirectPlayの
ロビーサーバーと普通のホストに多数の蔵が接続する形態との差がわからないのですが・・・・

ロビーサーバーとは、通常のホストと何が違うんでしょうか?

170 名前:デフォルトの名無しさん :03/12/14 02:23
>>168
マイクロソフトのXfileに公式な暗号化処理があるならばともかく
どんな暗号化をプログラマがするか分らないのに
>Xファイルを復号と同時に読み込む機能があるのではないかと
DirectX以前にプログラム分る?ってレベルかと…

171 名前:167 :03/12/14 02:29
>>168
あのな、>>161読んだら誰だってスレ違いと思うし
そもそもヘルプみたらすぐ真下に載ってるじゃん。

叩かれて当たり前なのに
>ケンカごしになる理由が理解でき ないです。
とはいかに。

172 名前:デフォルトの名無しさん :03/12/14 02:35
>>168
> やはりその方法なのですね。メモリダンプも想定していたので
>少し極端な例だったかもしれません。
やはりその方法?? メモリダンプ?? 極端な例??
わけわからん。

173 名前:デフォルトの名無しさん :03/12/14 02:40
>メモリダンプも想定
結局漏れら全員釣られていたわけだが……

174 名前:デフォルトの名無しさん :03/12/14 02:42
スレ違いなんで放置推奨

175 名前:デフォルトの名無しさん :03/12/14 02:52
>>169
MMO RPGが普通のサーバーで
PSOや対戦格闘みたいにユーザーが集まって
ゲームの準備をするだけでゲーム中は関係ないのが
ロビーサーバーっていうんじゃない?

176 名前:デフォルトの名無しさん :03/12/14 09:25
DirectX9日本語ヘルプのmsiを実行しインストールしたのですが
開発環境から参照できません(ヘルプ→目次の中に英語ヘルプしかなくF1を押してもダメ)
なにかコツとかあれば教えてください

177 名前:デフォルトの名無しさん :03/12/14 11:28
>>176
VS.NET2003の話をしてるんだったら
ttp://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=1634

178 名前:デフォルトの名無しさん :03/12/14 15:03
DX9SDKのupdate を入れようと思ったんだが、
旧DX9SDKがアンインストール中に致命的なエラーとやらで
実行できずに、困っています。

旧SDKの Modify -> X
旧SDKの Remove -> X
新SDKの Install-> X

いずれもダメなのですが、こりゃあもしかして
OS再インスコせねばならんのですか?

179 名前:デフォルトの名無しさん :03/12/14 16:07
>>177
解決しました
MSDN再インストール後、教えてもらった通りにしてうまくいきました
ありがとうございます

180 名前:デフォルトの名無しさん :03/12/14 22:52
D3DXLoadMeshFromXで読み込んでLPD3DXMESHに格納したメッシュから
各面ごとの頂点を取り出し、その面と
直線との当たり判定をとったりしたいんですが、どうしたらよいのでしょうか。
サンプルのPICKとか見ても難しくてよくわからないです。

むかしWinAPIで立方体を描画して遊んでた時は
各頂点のXYZを入れた配列と、頂点番号を三つ並べて面定義した配列を
弄ってただけなので分りやすく簡単にいろいろできたんですけど、
DirectXはどうも難しい・・・

ちなみにVC++6とDX8.1です。

181 名前:デフォルトの名無しさん :03/12/14 23:49
CMyD3DApplication::Pick()はちゃんと見た?

182 名前:デフォルトの名無しさん :03/12/15 03:31
四角形と三角形のポリゴンが混在しているオブジェクトを表示するにはどうしたらいいんでしょうか。
ファイルから読み込んだデータを表示しようと思ってるんですが、どこ探しても三角ポリゴンが
前提の表示しかしてないので詰まってます・・・・。


183 名前:デフォルトの名無しさん :03/12/15 04:02
なんか良く分かんないけど四角形も三角形×2じゃん。
DXは三角形しか扱わないし

184 名前:デフォルトの名無しさん :03/12/15 12:01
内田 死のう

185 名前:デフォルトの名無しさん :03/12/15 13:24
>>183
△しか扱わないって記述は自分も見たんですが、Xファイルにも□面の
データが入ってるんです。だからもしかして4頂点の面を処理する方法が
あるのかなと。

186 名前:デフォルトの名無しさん :03/12/15 14:18
そんな方法はない。

187 名前:デフォルトの名無しさん :03/12/15 20:32
VisualStdio.net2002+DirectX9.0Summerを使っています。
プログラミング初心者です。

デバッグに関して質問させてください。
アプリケーション終了後出力ウインドウに、
Direct3D9: (ERROR) :Memory still allocated! Alloc count = 169
Direct3D9: (ERROR) :Current Process (pid) = 00000d30
Direct3D9: (ERROR) :Memory Address: 003c6014 lAllocID=1 dwSize=000047f8, ReturnAddr=040b3796 (pid=00000d30)
Direct3D9: (ERROR) :Memory Address: 003cc644 lAllocID=9 dwSize=00000f9c, ReturnAddr=040ae1e9 (pid=00000d30)
以下続く・・
Direct3D9: (ERROR) :Total Memory Unfreed From Current Process = 48524 bytes

というように表示されます。
メモリリークだと思うのですが、ここからどのよに情報を読み取って
デバッグすれば良いのでしょうか?



188 名前:デフォルトの名無しさん :03/12/15 21:07
>>187
とりあえず情報は読み取らずにテクスチャ等を
ちゃんとリリースしてるかソースを確認してみては?

189 名前:デフォルトの名無しさん :03/12/15 21:30
>>185
多角形は三角形に分解してTRIANGLELISTで一回で描画。

190 名前:デフォルトの名無しさん :03/12/15 22:54
>>188
慣れないC++を使ってプログラムをしています(Cも慣れていないけど)。
プログラムがぐちゃぐちゃになりすぎていて、コードの流れが追いにくい
のは、まだいいんですが、問題なのは、コードの流れが追えていてもそれが
意味することが良く分からないということです。
例えば、ポインタやオブジェクトのコピー時にどのような事が起こるのか・・
等です。
こういうことを理解するには、文法の本を読むというのも一つの手段かと
思いますが、できれば今問題となっているメモリリークの原因を突き止める
ことで、実習的に勉強して行きたいと考えています。(自分が何が
分かっていて何が分からないのかも怪しいので。)

しかし思うに・・あのエラー出力から分かるのは
アセンブラのようなアドレスだけであり、それをVisialStdioで追って
行くのは・・・無理ですか?
デバッガで「混合モード」とか眺めていても一生分かる気がしないのですが・・。

191 名前:146 :03/12/15 23:17
146です
OSもVS.netも再インストールしましたがDirectX 9.0 SDK Update (Summer 2003)を
インストールできません。
ダウンロードするファイルはttp://www.microsoft.com/japan/msdn/directx/downloads.asp
ソフトウェア開発キットというのでまちがいないでしょうか?

192 名前:デフォルトの名無しさん :03/12/15 23:18
>>190
おそらく君はポインタを何も理解していないな
まずはポインタを勉強汁!!

193 名前:デフォルトの名無しさん :03/12/15 23:20
>>191
ああそうだよ。
http://download.microsoft.com/download/d/5/d/d5dd3f5e-9d8e-4f6f-914d-98e2fb34629d/dx90updatesdk.exe
↑これね

194 名前:188 :03/12/15 23:59
>>190
>アセンブラのようなアドレスだけであり、それをVisialStdioで追って
>行くのは・・・無理ですか?
普通のメモリリークならデバッガで追っかけたほうが早いけど
DirectXリソースのリークをこのアドレスを元にデバッガで
追っかけるのは無理じゃないけど大変だよ。
リリースしてる部分のソースを見て追っかけたほうが早いと思うけど
自分の書いたソースの意味がわからないとなると...
DirectX やるまえに C++ の勉強したほうがいいと思うよ。

195 名前:190 :03/12/16 01:07
>>194
貴重な意見をありがとうございます。

しかしデバッガを使うかどうかは、もう少し検討したいと思います。
つきましてはアドレスを元にデバッガでおいかける場合の一般的な手順の
ようなものを説明して下さると有難いです。
(あつかましいかとは思いますが、簡単にでもいいので
よろしくお願いします。m(..)m)


196 名前:デフォルトの名無しさん :03/12/16 02:52
>>187
おお!俺もそっくりさんな場面に出くわしたことあるぞ。
そのときはなあ、

LPDIRECT3DBASETEXTURE9 temp_tex = NULL;
device->GetTexture(i,&temp_tex);

って取得したあと

temp_tex->Release();

をやってなかったためにメモリリークになってた。
はじめは「なんでtemp_texをRelease()せなあかんの?」って思ったんだけど。
どうやらGetTextureをしたときになにやら小細工をしているらしい。
ヘルプみたら

注 このメソッドを呼び出すと、IDirect3DTexture8 インターフェイスについての内部参照カウントが増加する。
この IDirect3DTexture8 インターフェイスの使用を終了したときに IUnknown::Release の呼び出しが失敗すると、
メモリ リークが発生する。

って書いてあった。
要はGetした回数分だけきっちりRelease()を呼ばないといけないとかいうオチだった。
なのでよくわからないメモリリークに当たったらGet系の関数のまわりを疑ってみるといいかも。

197 名前:188 :03/12/16 03:13
>>195
あれはメモリアドレスにしろリターンアドレスにしろ
DirectX内部で使用しているアドレスなんで
普通はあの情報を元にデバッグなんぞしない。
だからソース見たほうがはやいって!

198 名前:190 :03/12/16 09:17
>>197
なるほど。良く分かりました。ありがとうございます。
どう考えても私には無理なようですねw。
おっしゃるように自分のソースを見ながら改めることにします。


>>192
勉強します。

>>196
詳細な説明ありがとうございました。


199 名前:デフォルトの名無しさん :03/12/16 09:33
そりゃCOMの仕様だな。
Get関数とか使うと参照カウンタが上昇するようになってる。
まあ、俺もDirectXから入って、そういうこと知ったんだけどな。

200 名前:デフォルトの名無しさん :03/12/18 11:55
DirectX9で、ライトの数っていくつまで使えるんでしょうか…?

201 名前:デフォルトの名無しさん :03/12/18 12:06
デバイス依存だから、その都度問い合わせろ。

202 名前:デフォルトの名無しさん :03/12/18 14:22
>>201
シェーダ使うと一つしか使えないのでしょうか?

203 名前:デフォルトの名無しさん :03/12/18 14:38
シェーダ次第

204 名前:デフォルトの名無しさん :03/12/18 15:46
>>203
命令数が多くなるとエラーが出るので今のところライト一つが限界と
自分なりに予想してみたりしましたがどうでしょうか?

205 名前:デフォルトの名無しさん :03/12/18 16:07
はぁ

206 名前:203 :03/12/18 16:16
>>204
残念、はずれです。

207 名前:デフォルトの名無しさん :03/12/18 17:02
>>206
ではどうしているのでしょうか?

208 名前:デフォルトの名無しさん :03/12/18 17:33
デバイスの能力を一切問い合わせずに3D使ってるのか…?
開発機以外で動かす気が全くないなら好きにすれば、としか。

209 名前:デフォルトの名無しさん :03/12/18 17:45
>>204
シェーダ使っても普通に複数のライト使えるだろ。
1つだけなんてありえない。

210 名前:デフォルトの名無しさん :03/12/18 20:26
おれの場合、全部頂点シェーダだからライトのデバイス能力なんざ調べんよ。
頂点シェーダそれぞれにライトなし版〜4個版まで作ってるよ。
総数150


211 名前:デフォルトの名無しさん :03/12/18 21:38
>>209-210
PS_OUTPUT o = (PS_OUTPUT)0;
//ライトの取得
float3 light = 2.0 * (v.color0.xyz - 0.5);
//法線の取得
float3 normal = 2.0 * (tex2D(s_bumpNormalMap,v.texCoord0) - 0.5);
//色の取得
float3 color = tex2D(s_bumpDiffuseMap,v.texCoord1);
//アンビエント項の計算
float3 ambient = globalAmbient.xyz;
//ディフューズ項の計算
float3 diffuse = lightColor.xyz * saturate(dot(normal,light));
//ハーフベクトルの取得
float3 half_vector = 2.0 * (v.color1.xyz - 0.5);
//スペキュラー
float specular = saturate(dot(normal,half_vector));
float specular2 = specular * specular;
float specular4 = specular2 * specular2;
float specular8 = specular4 * specular4;
//色
o.color.xyz = color * (ambient + diffuse) + lightColor.xyz * specular8;
o.color.w = 1.0;
return o;
ピクセルシェーダでこれ以上命令を増やすとエラーが出るんですけど
みなさんどうやっているのでしょうか?ちなみにバンプマップです。
グラフィックボードはGeForceTi4200です。


212 名前:デフォルトの名無しさん :03/12/18 22:32
みなさんはたぶんバンプマップの時は
ライト1個でスペキュラーの計算もしてないと思うよ。
というかピクセルシェーダーでこんなの走らせたら重過ぎない?
VSとPSそれぞれにうまく処理を割りあてたほうがいいと思う。

重くてもなんとかしたいというなら
アセンブラでカリカリに書いて命令数節約するぐらいしか無いんじゃ。


213 名前:デフォルトの名無しさん :03/12/19 00:24
>>212
これって処理重い方なんですか?
nVidiaのCgBrowserでもっと処理の重めのものがたくさんあったので軽いほうだと思ってました。
バンプマップって処理の軽めなシェーダみたいな印象があったんですけどそうでもないのですね。

214 名前:デフォルトの名無しさん :03/12/19 01:03
>>213
バンプマップは処理軽いです。
重いのはあくまで >>211 のシェーダ。

これ動かしてみました?
このシェーダで普通にモデル表示して
どのくらいの FPS でるのか知りたいです。
それとも今どきのボードはこれくらい
さくさくこなしちゃうんでしょうか?
うちのはVS,PSがやっとハード処理されるように
なった頃のやつなんで。

215 名前:デフォルトの名無しさん :03/12/19 02:53
>>214
調べてみました。
比較の対象として>>211のハーフベクトルの計算とスペキュラーの計算を抜いたものと比べて見ました。
(スペキュラ無しの方では頂点シェーダの方でしているハーフベクトルの計算も抜いています。)

ちなみに環境は
Pentium4 1.8GB
GeForce4Ti4200
です。
ポリ数は672のモデルと176のモデルをそれぞれ表示していて
総数は848個です。(共にバンプマップです)

結果は

スペキュラ有り 180fps
スペキュラ無し 183fps

でした。
スペキュラの計算を抜いても大して差がでませんでした。

216 名前:デフォルトの名無しさん :03/12/19 04:11
スレと関係なくて悪いが、せっかくGeForce4Ti4200使ってるのにPen4の1ギガバイトを使ってるのはもったいないな

217 名前:デフォルトの名無しさん :03/12/19 04:49
>>215
ピクセルシェーダーはかなりの回数呼ばれるので
命令数の差が速度に響くと思っていて
>ハーフベクトルの計算とスペキュラーの計算を抜いたものと比べて見ました。
をやったら算術命令数が半分ぐらいまで減るはずなんですが
FPS の差はほとんど誤差みたいなものですね。
全然重く無かったですね。スンマソン。

コンパイルしてみてみたのですが 211 に少しでも追加すると
エラーが出るということは GeForce4Ti4200 のPSの算術命令スロット数は
8だと思われるのでこれにもう一個ライトついかは無理だと思われ。


218 名前:デフォルトの名無しさん :03/12/20 00:55
>>216
_| ̄|○

>>217
もうしわけございません_| ̄|○
測り方にミスがありました。
D3DXFONTの文字列描画の処理が激重で差を縮めてしまっていました。

文字列描画をはずして再度計測したところ

スペキュラ有り 660fps
スペキュラ無し 700fps

でした。
ちなみに解像度は640x480(32Bit)です。
 ∧||∧
(  ⌒ ヽ 逝ってきまつ
 ∪  ノ 
  ∪∪

219 名前:デフォルトの名無しさん :03/12/20 13:33
C#, DX9, DPlayにて質問。
peer.SendTo((int)PlayerID.AllPlayers, packet, 0, 0);
とした所、'int'にAllPlayersの定義が無いとかいうコンパイルエラーが出ました。
チュートリアルでは普通に使用しているのですが、なぜ...

220 名前:デフォルトの名無しさん :03/12/22 00:52
DrawIndexedPrimitivesでレンダリングする場合法線情報っているんでしょうか?
メッシュに法線つける方法ならぐぐって出てくるんですが、VertexBufferとIndexBufferでレンダリングする場合の
ライティングの方法についての情報が見つかりません。
どなたか教えてください。

221 名前:デフォルトの名無しさん :03/12/22 01:04
・各頂点に法線のっける(頂点データのタイプを法線を含むものにする)
・ライトの設定を行う

でいいんじゃネーノ?つかサンプルに載ってると思うんだけど・・・

222 名前:デフォルトの名無しさん :03/12/22 01:08
>>220の言いたいことはきっと
「三角形の法線の求め方はわかるけど、頂点法線の求め方がわからない」
と勝手に予想してみる。(俺の勝手な予想、違ってたら無視してくれ。)

223 名前:デフォルトの名無しさん :03/12/22 01:13
ああ、C#です・・書き忘れてました。すいません。

ライティングの設定はしてるんですが、モデルが真っ黒なままで・・・。
後は法線の設定なのかなと思ったんですが、どこでそれをやればいいのやら。。と。

カリングは出来てるので法線情報はもうついてると思うんですが、他に思い当たる事もなくて。



224 名前:デフォルトの名無しさん :03/12/22 01:16
> カリングは出来てるので法線情報はもうついてると思うんですが

うーん、法線情報を勘違いしていると思われる。
それらは全然関係ないよ。

225 名前:デフォルトの名無しさん :03/12/22 11:25
面の裏表は頂点ストリームにおける頂点の並びで判別してるのよ。

226 名前:デフォルトの名無しさん :03/12/22 23:06
>>220
頂点の位置座標と頂点インデックスから自分で法線を計算したいってわけか?

そうだとしたら、面ごとに法線を求めてその面が含む頂点に加算していく。単位化してな。
最後に頂点全ての法線を単位化して終了。
ライトの設定してて真っ黒なのは法線が0ベクトルになってるからだろう。
文章からして頂点に法線が含むのにその計算してないのだろうから当たり前だが。

違ってたらスマソ。

227 名前:デフォルトの名無しさん :03/12/23 11:01
>>224
>>225
>>226
レスありがとうございます。
面の法線データを「加算」していけばいいわけですか・・・・
共有してる頂点はどうすりゃいいんだろうとか思ってました。

余談ですがDirectXよりもJava系でぐぐった方が3次元処理の情報は出てきますね。
こっちでも非常に助かりました。


228 名前:デフォルトの名無しさん :03/12/23 15:57
DirectXでGDIのような描画をするにはどうすればいいでしょうか?


229 名前:デフォルトの名無しさん :03/12/23 16:05
意味が分からないんで具体例を示してください。

230 名前:デフォルトの名無しさん :03/12/23 16:08
Roundrectみたいな描画をしたい

231 名前:デフォルトの名無しさん :03/12/23 16:10
やっぱりテクスチャにGDIで書き込んだりという方法になるんでしょうか。
具体的にはどのようなやり方になるんでしょうか。

232 名前:デフォルトの名無しさん :03/12/23 16:13
DirectX7? それとも8か9?

233 名前:デフォルトの名無しさん :03/12/23 16:14
8で宜しくお願いします

234 名前:デフォルトの名無しさん :03/12/23 16:22
8だとHDC取ってこれないからGDIで描画は無理。
どーしてもGDI使いたければDIB作って、そこにRoundRectなり何なりで描画。
んで、テクスチャをロックしてDIBの内容を自力で転送。

235 名前:デフォルトの名無しさん :03/12/23 16:25
ははぁ。やっぱりそうなりますか。
7だとDCが取れるみたいですね。
7でやったほうが良いかなあ。


236 名前:デフォルトの名無しさん :03/12/23 16:33
ありがとうございました

237 名前:デフォルトの名無しさん :03/12/23 18:59
9でやれば?

238 名前:デフォルトの名無しさん :03/12/24 02:41
ペイントで書いた絵(31×31ピクセル)をテクスチャにしてからスプライトのDrawメソッドで描画してみたら、描画範囲を31×31に指定したのに
幅,高さともに3/4くらいの範囲しか出てきませんでした。
原因と解決法分かりますか?

239 名前:デフォルトの名無しさん :03/12/24 04:26
テクスチャ読み込む時にフィルタかけてないか?

240 名前:238 :03/12/24 21:49
描画範囲をNULL(矩形全体)に指定するとビットマップ全部が普通に表示されるのでビットマップ読み込みの問題ではないと思います。
ペイントとDirectXGraphicsの1ピクセルの大きさが違うのかもしれません。


241 名前:デフォルトの名無しさん :03/12/24 22:02
>描画範囲をNULL(矩形全体)に指定するとビットマップ全部が普通に表示されるので
それじゃ明らかにフィルターのせいじゃん。
効果も分からないでD3DX系のライブラリを使うくらいなら、
テクスチャの読み込みと表示くらい自前で作れ。

242 名前:デフォルトの名無しさん :03/12/24 22:44
>>238
3/4 くらい、というのはもしかすると 31/52 くらいの範囲?

243 名前:デフォルトの名無しさん :03/12/25 08:09
まあ、ヘルプをきちんと読んで普通に実装すれば
何の問題も起こらないわけだが、このあたりは。

244 名前:238 :03/12/25 09:52
ttp://www.microsoft.com/japan/msdn/directx/techart/directx9devfaq.asp
Drawする範囲を(このページの下のほうに書かれている)スケーリング係数倍したらうまくいきました。
>>239>>241さんどうもです。

このとき
31*desc.Height/info.Heightなら上手くいったのですが
31*(desc.Height/info.Height)では駄目だったのですが
上と下の式は意味に違いがあるのですか?

245 名前:デフォルトの名無しさん :03/12/25 10:11
だから引き伸ばされたくなければフィルターを切れよ

246 名前:デフォルトの名無しさん :03/12/25 12:15
>>244
32 * 32 / 64 = 1024 / 64 = 16
32 * (32 / 64) = 32 * 0 = 0

247 名前:デフォルトの名無しさん :03/12/25 12:52
デバッグくらいしろよって話だな

248 名前:デフォルトの名無しさん :03/12/25 13:47
StretchRectではアルファブレンド(透過処理)できないって事実
なんでしょうか?

249 名前:238=244 :03/12/26 09:38
>>246どうもです。
やはりそういうことでしたか。
ちなみに今試しに31*(float)(desc.Height/info.Height)とやってみましたが
(float)無しと変わらないようです。
どうでもいいけど。

250 名前:デフォルトの名無しさん :03/12/26 10:16
(float)(0)が0以外の意味を持つのなら教えて欲しいところだ。


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.