トップページgamedev
1001コメント376KB

DirectX総合スレ (Part6)

■ このスレッドは過去ログ倉庫に格納されています
0001DirectX62006/11/17(金) 00:38:52ID:lRjOsWKq
言語はC++
他の言語使ってる奴はいますぐ消えろ

■過去スレ

DirectX総合スレ
Part 1: http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
Part 2: http://pc5.2ch.net/test/read.cgi/gamedev/1095863432/
Part 3: http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/
Part 4: http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
Part 5: http://pc8.2ch.net/test/read.cgi/gamedev/1157727402/
0262名前は開発中のものです。2007/02/19(月) 10:30:13ID:psiCwyAw
Cの本とか暗唱できるくらい覚えてからプログラム始めたのだろうか・・・
0263名前は開発中のものです。2007/02/19(月) 14:24:42ID:bKmqCNxd
始めたばかりの自分でも演算子の種類くらいは暗礁できるよ!(誤字)
0264名前は開発中のものです。2007/02/19(月) 16:10:28ID:3WdCgCoJ
じゃーとりあえず20個くらいヨロ
0265名前は開発中のものです。2007/02/19(月) 20:03:04ID:guzBUV+n
(1)->
(2)<<
(3)? :
(4)わからん…
0266名前は開発中のものです。2007/02/19(月) 20:15:29ID:st8FL8zK
問題の解決に当たって、

 必要な知識を洗い出せるのが理系

 必要な知識を洗い出せないのが文系
0267名前は開発中のものです。2007/02/19(月) 20:33:25ID:ELrN9bkj
理系とか文系とか言ってるやつが文系
0268名前は開発中のものです。2007/02/19(月) 20:51:52ID:mNw18ix4
ちなみに理系とか文系なんて存在しない
血液型とか星座占いと同レベルな話
>>266みたいなのは簡単に宗教の手におちるタイプ
02692632007/02/19(月) 20:58:29ID:VwGyTHgo
>264
ボケ殺しイクナイ
0270名前は開発中のものです。2007/02/19(月) 21:09:47ID:m25nDkLZ
理系文系なんて、ただの所属グループ名にすぎない。
重要なのは、数学ができるかできないかだ。
0271名前は開発中のものです。2007/02/19(月) 21:27:20ID:st8FL8zK
>>267-268
いや、俺は芸術系だよw
0272名前は開発中のものです。2007/02/19(月) 22:23:23ID:3WdCgCoJ
それは多分世間的には文系と呼ばれる
0273名前は開発中のものです。2007/02/19(月) 22:40:59ID:st8FL8zK
じゃぁ体育系は理系か?w
0274名前は開発中のものです。2007/02/19(月) 23:11:02ID:m25nDkLZ
しょうがないなぁ。

今日から、コメントは、
//DirectGraphics を初期化しマッスル
という方向で行きましょう。
0275名前は開発中のものです。2007/02/19(月) 23:55:27ID:E6YPoGSB
>DirectGraphics
そんな名前の物はDirectXには存在しないのでスレ違い
0276名前は開発中のものです。2007/02/20(火) 00:33:32ID:4q62mV0F
なぜかDirectGraphicsって勘違い多いな
0277名前は開発中のものです。2007/02/20(火) 02:24:40ID:Dv7TWhFd
昔のDirectXのDirectMusic使ってSMFを再生すると
BankSelect(LSB,MSBともに)が無視されちゃうんだけどこれって9にすれば直るのかな・・・
windowsのMCI使うと何故かかなりラグあるしなんとかDirectMusicでやりたいんだけど
0278名前は開発中のものです。2007/02/20(火) 15:03:15ID:Qq4kmJPB
>>275
意味がわかってるし通称としても浸透し始めてるのに知らないフリなんて
剣道部にいた嫌われ者の先輩みたいだ。
0279名前は開発中のものです。2007/02/20(火) 15:49:47ID:LiOVM5p/
そんな通称はないし、浸透もしていない。
0280名前は開発中のものです。2007/02/20(火) 15:54:58ID:Qq4kmJPB
>>279
プゲラ
DirectGraphics の検索結果 約 20,700 件中 1 - 10 件目 (0.09 秒
0281名前は開発中のものです。2007/02/20(火) 15:56:05ID:Qq4kmJPB
スペース入れるとさらに出てくるな。

"Direct Graphics" の検索結果 約 68,600 件中 1 - 10 件目 (0.13 秒)
0282名前は開発中のものです。2007/02/20(火) 16:05:17ID:+OoxkDpq
http://www.google.co.jp/search?num=100&hl=ja&inlang=ja&ie=Shift_JIS&q=DirectX-Graphics&btnG=Google+%8C%9F%8D%F5&lr=
0283名前は開発中のものです。2007/02/20(火) 21:28:51ID:Djc4pHpZ
単なる勘違いの蔓延を通称とか言っちゃうのが痛々しいな・・・
0284名前は開発中のものです。2007/02/20(火) 21:39:44ID:e8d8KgDh
まあ、「間違いは認めるから察してくれよ」という気持ちも十分に理解できるけどなw
0285名前は開発中のものです。2007/02/20(火) 21:49:01ID:sRqaFSkH
化石は死ねば?w

ttp://msdn.microsoft.com/library/ja/directx9_c/directx/intro/dx9whatsnew.asp?frame=true#Graphics
0286名前は開発中のものです。2007/02/20(火) 22:02:53ID:T9oBMriI
今日も☆とかちつくちて☆聞くお
0287名前は開発中のものです。2007/02/20(火) 23:02:57ID:LmVgoIKi
800×600の2Dスクリーン座標から3D座標への変換作業で苦戦してます。
(マウスクリックした所と3D空間の地面の照合)

IDirect3DDevice9* DEV;

※mouseXには0〜800、mouseYには0〜600の数値が入ります

D3DXVECTOR3 vec1(mouseX, mouseY, 0);
D3DXVECTOR3 vec2;

D3DVIEWPORT9 vp;
DEV->GetViewport(&vp);
D3DXMATRIX vmat;
DEV->GetTransform(D3DTS_VIEW, &vmat);
D3DXMATRIX pmat;
DEV->GetTransform(D3DTS_PROJECTION, &pmat);
D3DXMATRIX wmat;
DEV->GetTransform(D3DTS_WORLD, &wmat);
::D3DXVec3Unproject(&vec2, &vec1, &vp, &pmat, &vmat, &wmat);


この様にコードを書いたのですが、返値ベクトル vec2 に
意味不明な数値が返ってきて困ってます。(-1.005, -1.005, 1)とか。
正規化してるとしても数値が小さすぎます。

::D3DXVec3Unproject関数の使い方を間違ってるでしょうか?
0288名前は開発中のものです。2007/02/20(火) 23:31:26ID:ytsjXu3K
D3DXVECTOR3 vec1(mouseX, mouseY, 0);

そもそもこれは何?
奥行きが潰れている状態で、ベクトルも対象物も分からないのに何が出るっていうんだ?
窓ガラスに鼻くそを付けて、ここが地面なんだとのたまうのか?
頭がおかしいんじゃないのか?
0289名前は開発中のものです。2007/02/20(火) 23:43:35ID:Djc4pHpZ
>>288
>D3DXVECTOR3 vec1(mouseX, mouseY, 0);
これは別におかしくはないぞ。
透視変換後のスクリーン座標で指定するから0.0fなら
正しくワールド空間に展開されればニアクリップの値になる。

あぁでもD3DXVec3Unproject()の仕様次第だな。
俺は自前で変換してるからこの関数がどうなってるかわからん。
0290名前は開発中のものです。2007/02/20(火) 23:46:03ID:LmVgoIKi
>>288
・・・・
知らないのなら、無理に答えなくていいです
まず文章を読んでください
0291名前は開発中のものです。2007/02/20(火) 23:46:57ID:Po9VyYTL
D3DXVECTOR3 rayS(mouse.x, mouse.y, 0), rayE(mouse.x, mouse.y, 1.00f);
ClassSprite::GetRay(rayS, rayE, mProj, mView);

void ClassSprite::GetRay(D3DXVECTOR3 &p1, D3DXVECTOR3 &p2, D3DXMATRIX &mProj, D3DXMATRIX &mView)
{
D3DVIEWPORT8 vp;//D3DVIEWPORT8
lpDevice->GetViewport(&vp); // ビューポート パラメータ取得
D3DXMATRIX mat;
D3DXMatrixIdentity(&mat); // 単位行列
D3DXVec3Unproject(&p1, &p1, &vp, &mProj, &mView, &mat);//ベクトル射影
D3DXVec3Unproject(&p2, &p2, &vp, &mProj, &mView, &mat);//ベクトル射影
}
0292名前は開発中のものです。2007/02/20(火) 23:59:40ID:HCF2zwdn
D3DXMATRIX vpmat, tmpmat;
D3DXMatrixIdentity(&vpmat);
vpmat._11 = vp.Width/2;
vpmat._22 = -vp.Height/2;
vpmat._33 = vp.MaxZ - vp.MinZ;
vpmat._41 = vp.X + vp.Width/2;
vpmat._42 = vp.Y + vp.Height/2;
vpmat._43 = vp.MinZ;
vpmat._44 = 1;
tmpmat = vmat * pmat * vpmat;
D3DXMatrixInverse(&tmpmat, NULL, &tmpmat);
D3DXVec3TransformCoord(&vec2, &vec1, &tmpmat);
0293名前は開発中のものです。2007/02/21(水) 00:52:02ID:RUhyvD3+
>>288
確かに
>※mouseXには0〜800、mouseYには0〜600の数値が入ります
>
>D3DXVECTOR3 vec1(mouseX, mouseY, 0);
「これは何?」と思うなw

>>290
鼻くそをつける窓ガラスがz=0だ。
あとは窓ガラス上の鼻くその位置(0〜800、0〜600)から、
ビューポートの範囲に合うように変換すればいいだけだ。
あとはMSDNで「ビューポート矩形」で検索してちょ。
(つか、画面サイズ801×601?
0294名前は開発中のものです。2007/02/21(水) 01:09:11ID:Z1aRLr5I
>>293
誰も思わねーよw
つーか、自分にレスして楽しいか?(IDが変わってもバレバレなんだがw)

何がビューポートだよ。
無知もいい加減にしてくれ。アホか
0295名前は開発中のものです。2007/02/21(水) 01:25:39ID:0W8AtbaN
288は私なんだが。

>>291
レイをとばすなら開始位置と射影からベクトルが求まるから、
わざわざ二点を変換するような回りくどいことをする必用はない。
0296名前は開発中のものです。2007/02/21(水) 05:20:13ID:4yPo1E3x
C# Managed DirectXで2Dの画像をウィンドウに貼り付けるにはどうしたらいいですか?
0297名前は開発中のものです。2007/02/21(水) 09:25:15ID:vsefEIGS
ポリゴンを四角形にして画像をテクスチャにして張り付ける
0298名前は開発中のものです。2007/02/21(水) 12:53:28ID:7M1hg3bU
とかち、、、なぜこのスレにまで
0299名前は開発中のものです。2007/02/21(水) 15:31:22ID:Z1aRLr5I
>>295
レイの(x,y)に置ける差額をZ1単位で知るのが目的だと何故分からない?
288=293=295だろうが
もう、知らないのに回答者を気取るなっての
0300名前は開発中のものです。2007/02/21(水) 16:11:58ID:0W8AtbaN
二点をわざわざ変換しなくても、視野角が決定した時点で起点とスクリーン座標までのベクトルがすぐに出せる。
ディスプレイの手前に四角錐があると考えれば分かるはず。
その四角錐の頂点からディスプレイの特定の座標までが始点におけるベクトルになる。
このときに使われる手前のZ座標は視野角が変化しない限り不定なのであらかじめ計算しておくことができる。
そこからスクリーン上のベクトルを求めるのは引き算だけ。
あとはそれを回転成分だけ処理してワールド上のベクトルに変換する。

二点を逆変換すれば確かに出るが、一回ですむ処理なのになぜ無駄に二回処理するのか理解できない。
ものすごく無駄な計算をしているのが分かっていないのか?
0301名前は開発中のものです。2007/02/21(水) 16:31:39ID:V88+J9Hw
自分の都合がいいように仕様を固定して答えてみました・・・みたいな
0302名前は開発中のものです。2007/02/21(水) 16:44:46ID:0W8AtbaN
射影が動的でも二回変換するよりも遥かに無駄がでないが、
無駄な方法でも結果が出ればいいのなら好きにすればいい。
0303名前は開発中のものです。2007/02/21(水) 18:11:31ID:Z1aRLr5I
レイの正規化されたベクトル差違(x, y)の数値があれば
3D空間内のそれぞれのオブジェの接触判定に使えると、それだけの話なんだが
2点を求める必要性を否定するとは、意地になってませんか?
0304名前は開発中のものです。2007/02/21(水) 19:05:54ID:0W8AtbaN
>>303
それもスクリーン側の二点をわざわざ変換しなくても算出できる。
ワールドへの変換を理解していれば普通に計算方法が思いつくはずなのに、
遠回りして無駄が多い言っているだけ。

逆に、なぜ意地になって二点変換という無駄な方法にこだわるのか分からないが、
どうしてもそれが良いのなら当人の勝手だろう。
しかし他人に無駄な方法を広めるのは思い直した方がいい。

その方法がまともな方法だと本気で思ってるのか?
0305名前は開発中のものです。2007/02/21(水) 19:58:34ID:V88+J9Hw
>思いつくはずなのに、
>分からないが、
>思い直した方がいい。
>思ってるのか?

 ↓

>当人の勝手だろう。
0306名前は開発中のものです。2007/02/21(水) 20:02:52ID:GyskwPUG
1フレームに一回呼ぶかという頻度の処理に何を威張っているの?
0307名前は開発中のものです。2007/02/21(水) 20:15:58ID:RUhyvD3+
愉快なID:Z1aRLr5Iが居ると聞いて再びやってきました!
0308名前は開発中のものです。2007/02/21(水) 20:25:16ID:vF/iMU3T
>>291のコードを例えて言うなら
1+2=3

100-1=99,
100-2=98
99+98=197,100+100=200
200-197=3

にしているのに似ている。
結果が同じなんだから文句を言うな。
0309名前は開発中のものです。2007/02/21(水) 22:32:15ID:VoKMYvWb
こんなのどっちのやり方でもいいじゃねーか。
0310名前は開発中のものです。2007/02/21(水) 22:42:23ID:GtPzG9tK
そもそもの原因はD3DXのせいなんだよな。
実質的な計算方法が分かってい馬鹿でも、ある程度使えてしまうので、
無理矢理へんな使い方で答えを出そうとする。
0311名前は開発中のものです。2007/02/21(水) 23:12:00ID:P5PvKI+V
不便なものは、使いにくいが、人を鍛える。
便利なものは、使いやすいが、人が鈍る。
不便なもので鍛えて便利なものを使うのがベストかもね。
0312名前は開発中のものです。2007/02/21(水) 23:31:38ID:VoKMYvWb
わけがわからずソースだけもってきてなんでか動いてるって状態よりは百倍ましだと思うがな。
0313名前は開発中のものです。2007/02/22(木) 00:46:44ID:fOu/TsWA
D3DXは本当に3Dが初心者の人が扱うにはやはり難しい。
なんだかんだで中級者以上の人間が楽をするための関数群な気がする。

最初はどっかの3D対応のライブラリでも使いつつ、
細かい使い方とかはライブラリの中身を拝借するのがいいかもしれんな。

都合よく3D対応でオープンソースのライブラリがあればだが・・・
確かLampとかいうライブラリが教育的なんちゃらって銘うってた気がするけど。
0314名前は開発中のものです。2007/02/22(木) 01:59:41ID:X+ThW1vu
Lampはソースは山ほどあるしコメントもそこそこ入ってるけど、解説と呼べるドキュメントが皆無で
初心者向けを謳うために一番大事なものがないんだよね。
やっぱD3DX・XNA・Java3Dあたりのサンプルと格闘するのが無難なんじゃね?
0315名前は開発中のものです。2007/02/22(木) 02:42:20ID:hrfQoW++
1点だけの変換だと、
・視点〜前方クリップ面
・後方クリップ面〜無限遠
の表示しない対象にHITしないか?
目からビーム撃つなら問題ないだろうが…

表示した物体をクリックするなら、
前方クリップ面と後方クリップ面上の2点を変換して、
その区間で判定するようにしたほうがいい。
表示していない物をクリックするのは何かと不具合が多い。

だから1点か2点かはケース・バイ・ケースだ。
0316名前は開発中のものです。2007/02/22(木) 08:28:35ID:lmWhwHRR
>前方クリップ面と後方クリップ面上の2点を変換して、
>その区間で判定するようにしたほうがいい。
2点を変換しないとこの程度の計算も出来ない時点で終わっている。
あまりにも頭が悪いんだが、いったい何なんだろう?
不具合って、またろくでもないやり方をして勝手に出来ないと思いこんでいるだけだろ。
0317名前は開発中のものです。2007/02/22(木) 09:45:44ID:fOu/TsWA
>>314
今ならXNAは確かにいいかもなぁ。

初心者向けとしては一番知名度が高いDXライブラリが
3D対応したらって思ってる人は多そうだな。
0318名前は開発中のものです。2007/02/22(木) 13:26:30ID:nYOLwz0F
XNAは固定機能ないんだよね?
初心者にいきなりシェーダから入らせるのは無理があると思う。

それとも、逆に座標変換の流れが曖昧にならずにいいのかなぁ。
0319名前は開発中のものです。2007/02/22(木) 16:03:57ID:pHu3tQ6S
ところで初心者の定義ってなに?
プログラム経験1ヶ月くらい?

3年以上プログラム経験があるくせに、初心者だからと言い訳する奴がいるんだが。
0320名前は開発中のものです。2007/02/22(木) 16:16:55ID:thY6+VX9
DirectXを初めて使うなら初心者だろう
0321名前は開発中のものです。2007/02/22(木) 20:28:45ID:FT4Yh0Rl
>>316
淋しいのか?
生きるのが辛いなら、さっさと来世に旅立ったほうがいいぞ?
0322名前は開発中のものです。2007/02/22(木) 20:41:54ID:1zvpRpEq
とうとうプログラムの話が出なくなり、煽るだけになってしまった悲しい末路。
0323名前は開発中のものです。2007/02/22(木) 21:39:42ID:fOu/TsWA
今の流れで初心者なら3D初心者って意味じゃね?

ライブラリ使って何か作る⇒ライブラリの中を追って動作を知る
⇒ライブラリを使わずに作れるように

ってのが一番無難だと思うけどな。
0324名前は開発中のものです。2007/02/22(木) 21:56:58ID:hwW9EEOj
>319
目安にはなるだろうけど、期間そのものは関係ないと思う。
自分も初めて触れてから5年くらいあるけど、業務や研究に使ってるわけでもなんでもないから初心者の域を出ないだろうし。
0325名前は開発中のものです。2007/02/23(金) 01:00:37ID:SutHQnIi
何年もやってて初心者って、それは初心者ではなくやる気がない人間。
自分は初心者だと名乗るのではなく、自分はやる気がない者だと名乗らないと、
本当に期間の浅い初心者に失礼。
0326名前は開発中のものです。2007/02/23(金) 01:47:23ID:KuG6thw/
初心者、中級者、上級者の定義が技術レベルによって定義されるとすれば
いつまでたっても初心者ってことは十分にありえる。

3ヶ月の経験があるとしても、1日2時間しか勉強できる場合と、1日5時間勉強できる場合とでは単純に考えて、
知識量も技術も違ってくるから、日数で初心者かどうかを切り分けることは適切じゃないだろ。

初心者は、ドキュメントの読み方を知らない人 だと思う。
読み方わかるなら、基本的なものは作れる。

中級とか上級とかは分ける必要ない。
初心者と初心者以外で十分だ。
0327名前は開発中のものです。2007/02/23(金) 12:47:34ID:Gy0TPYfJ
DirectXの名前ぐらいしか知らない。どんな事ができるか知らない→入門者以前の問題
チュートリアルを読んで、実際に作ってみた→入門者
チュートリアルで作った物を改造〜ドキュメント片手に基本的な物を作れる→初心者
他人の書いたコードを追って内容が理解できる→中級者以上

技術レベルに応じて 入門者・初心者・中級者 で分けるとこんな感じ?

>>316
DirectXの名前しか知らないような人が、2週間ほど前からXNA始めたけど
シェーダは日本語情報も多いから、単純な物ならちょっと検索すれば見付かるし、酷く苦戦するような事はないかな。
0328名前は開発中のものです。2007/02/23(金) 13:49:01ID:7ew+jimS
例えばテニスを何年もやっていて、ずっと下手糞だったら、
その人は永久に初心者を名乗ることになるのか?

それは初心者ではなく、才能がないだけ。
初心者と混同すべきではない。
0329名前は開発中のものです。2007/02/23(金) 14:44:43ID:3snTpIS0
まあよほど理解力ない人じゃなければ、ある程度やってればこのくらいはできるようになるだろう
ってのが初心者とそれ以上の線引きなんだろ

それを考慮しての327が結論でいいじゃない、どうでもいい
0330名前は開発中のものです。2007/02/23(金) 16:35:27ID:blVW4BPI
>どうでもいい
 
全くだな。
0331名前は開発中のものです。2007/02/23(金) 19:01:44ID:/wVCCmtp
そうか!

はじめて2年目だけど未だにサンプルとかを切り貼りしないと
プログラム作れない俺でももう既に上級者だったのか!


スマン
0332名前は開発中のものです。2007/02/24(土) 01:09:38ID:hno7fJP6
初心者と中級者の線引きなんかしても意味がない。
どうせ、線引きしたがるような奴は
自分を初心者に入れないように
都合のいい定義を作ってるから。
0333名前は開発中のものです。2007/02/24(土) 01:24:06ID:OubBPOxL
むしろ、自分が初心者に入るように定義する人が一番厄介だと思うんだ。

まぁどこまでが初心者なんてどうでもいいな。
0334名前は開発中のものです。2007/02/24(土) 10:15:15ID:VJWmV67K
自分が初心者だと名乗る奴は学習能力が無く、いくらやってもモノにならない無能者。
永遠の18歳とか恥ずかしいことを言っている奴と同じ。
0335名前は開発中のものです。2007/02/24(土) 10:37:30ID:PdRvuo3P
上級者ってのは俺らには想像もできないようなことができるんだろうな。
DirectXを操って天変地異を起こしたりとかさ。
0336名前は開発中のものです。2007/02/24(土) 14:11:17ID:ei0JLIqx
全然話変わるんだけど、
DirectXってSDKバージョン幾ら増えても
D3DX使わなかったらDirectX9.0cとかで動かせるんか?
0337名前は開発中のものです。2007/02/24(土) 14:14:25ID:CJ1i3pF0
>>336はDirect3D10をD3DXを使わないというだけで、
DirectX9環境で動かせる凄い技術を持っているようです。
どうやったのかぜひ教えてください。
0338名前は開発中のものです。2007/02/24(土) 14:27:26ID:ei0JLIqx
>>337
動くかどうか聞いてるんだから
そんな技術知らねーお( ^ω^)


まあ質問の仕方がおかしかった、すまん
DirectX9の中にもSDKのバージョンってSummerとかAprilとか色々あるけど
D3DXを使わなかったら最新SDKでないDirectX9.0cで動くのかなってことです
0339名前は開発中のものです。2007/02/24(土) 16:55:06ID:T9cZn/FX
みなさんこれが初心者です
そして私も初心者です( ^ω^)
0340名前は開発中のものです。2007/02/24(土) 18:31:34ID:lguCSKHN
>>336のレスは、>>331と同レベルの俺でもおかしいことがわかったw
0341名前は開発中のものです。2007/02/24(土) 19:11:58ID:K+DehrQc
>>336>>338
DX9のプログラムでD3DXをまったく使っていなければ9.0cのDLLだけで動きますよ。
0342名前は開発中のものです。2007/02/24(土) 23:14:39ID:ei0JLIqx
>>341
thx!

>>339
初心忘れず頑張るお( ^ω^)
0343名前は開発中のものです。2007/02/27(火) 18:16:34ID:Lhj5yC+T
>>335
ごめん、こないだのあの地震はオレが出したバグが原因だったんだ
0344名前は開発中のものです。2007/02/27(火) 19:03:14ID:jJXnU/VC
知らなかった
プログラマーとは神様だったのじゃ・・・
0345名前は開発中のものです。2007/02/27(火) 21:07:58ID:Vy4u5vTM
未だにクラスなんてものがわからん俺でもDirectX!
0346名前は開発中のものです。2007/02/27(火) 21:57:45ID:EAl/kt46
ローディング画面で別スレッド立ててアニメをグリグリ動かしてるんだけど
このスレッドでpresentしまくりつつメインのスレッド上のロードのルーチン内で
テクスチャの確保とかをやるとタイミングによって失敗することがあるんだよね
まぁセマフォを通す必要があるわけだけど上級プログラマの方たちはここら辺りを
どんな設計にしてるのか聞いてみたい気がした
0347名前は開発中のものです。2007/02/27(火) 22:33:20ID:S3XRLUkV
デバイス作成時にマルチスレッドにするぞ( ゚Д゚)ドルァ!!
ってフラグたてときゃ内部でクリティカルセクションとりにいくべ
0348名前は開発中のものです。2007/02/28(水) 01:36:50ID:DrwmZf4m
テクスチャにD3DPOOL_MANAGED使うと
FPSが1/3ぐらいになる。
そんなはずはないと思って調べていたら
CPU使用率が100%になってた為だった。
DOOM3とか普通に動かせるレベルのPCなのに
どんだけ重いんだ俺のアプリは

0349名前は開発中のものです。2007/02/28(水) 12:08:21ID:8A+NIslf
D3DPOOL_MANAGED=地雷という記憶しかないなぁ。
DirectX9出た当初に一度試してそれっきり。
 
たしかヘルプはD3DPOOL_MANAGEDの環境依存性(ドライバ依存性)に
言及してないよね。つまり建前上は「依存は無い」と。だから
D3DPOOL_MANAGEDを指定可能かどうかを示すフラグもなかった。
 
色々痛い目にあってD3DPOOL_DEFAULT(自前でリストア)に戻した。
0350名前は開発中のものです。2007/02/28(水) 13:50:11ID:MeniioEH
>>347
素敵なんだけど具体的にどの関数がクリティカルセクション
とおってるかわからないとさすがに使う気にならないなあ
しかしDirectX的にはどれがいちいちスレッドセーフなのか
明示するのはメンドイから黙って使っとけということなんだろうか
0351名前は開発中のものです。2007/02/28(水) 13:58:31ID:F+25q5ON
>>347
IDがS3社
0352名前は開発中のものです。2007/02/28(水) 15:55:51ID:zmywCAy0
>>349
特定環境下でのMANAGEDの地雷性よりも、DEFAULTのデータロストの方が厄介なので
前者を使う方がトラブルが少ない。

MANAGEDの地雷性を危惧して下手な対策する位なら、マニュアルに
「最新のドライバをインストールして下さい」
の一文を乗せた方がいい。
0353名前は開発中のものです。2007/02/28(水) 17:02:10ID:07xD0lOu
>>349
MANAGEDはドライバに任せないというオプションもあるよ。(Direct3Dが管理する)
っていうか、そのオプションの説明でドライバに依存するということは言及して
いることになるんじゃないの?一行で簡単に片付けられているけど。

>>350
当然、マルチスレッドで問題の発生する関数全てだろう。
そのオプションを指定しなくても、一部クリティカルセクションは使用しているようだが。
0354名前は開発中のものです。2007/02/28(水) 20:36:38ID:WA124FUk
AGPメモリを使うためにDEFAULTを使うので、
一度自前でリソース管理する部分を自前で作ったら、MANAGEDが全く不要になった。
結局MANAGEDの使い道が皆無。
0355名前は開発中のものです。2007/02/28(水) 21:47:48ID:DrwmZf4m
しかし例えばテクスチャのミップマップレベル強制など
D3DPOOL_MANAGEDを指定しなければ使えない機能などがある。
(ミップマップ制御が管理下しか有効にならない理由は
制限されたサイズ以下のサーフェイスのみVRAMにロードするって、
ふざけた理由じゃないだろーなー)
0356名前は開発中のものです。2007/02/28(水) 22:44:03ID:MeniioEH
そういえば某イリュージョンのエロゲデモはテクスチャ作成時にsystemmemとdefaultと
2つセットでつくってたなんでこんな馬鹿みたいなことすんのかなと思ったがそういうことなのか
そんなにmanagedの各ドライバでの実装の問題は深刻なのかい?今初めてきいたわけだけれども
0357名前は開発中のものです。2007/03/01(木) 01:31:09ID:60fEaQdj
>>356
それは速度UPが主眼で、ドライバ依存性云々は関係ない。
ある程度PGをやってれば自前でリソース管理する様になるので
自然とMANAGEDを使う事はなくなる。
MANAGEDがドライバによってコケるってのは杞憂に近いな。。。
んな事言うのなら、外にも心配しなきゃいけない事がたくさんあるし

0358名前は開発中のものです。2007/03/01(木) 02:41:58ID:oh2goC46
速度アップが主眼なら自前でやるよりドライバに好きなようにManageさせたほうがいいんじゃねーの?
0359名前は開発中のものです。2007/03/01(木) 08:24:48ID:889GaVxx
なんか仕組みが分かってない>>358が混ざってるな。
0360名前は開発中のものです。2007/03/01(木) 16:35:47ID:FAGMfHtk
ねつ

ダークメタルヘルム
モノトーンガントレット
サイキックキャップ
アーミーグリーヴス
アドミンチュニック
マダムシューズ
ボレアス
ニンバス
トールハンマー
ユダ
ドルフィン
メタルバックラー
0361名前は開発中のものです。2007/03/01(木) 16:36:20ID:FAGMfHtk
すげー誤爆w
0362名前は開発中のものです。2007/03/02(金) 12:33:45ID:DMMPq2kC
すみません質問です。
環境:C++,DirectX9 BCCDeveloperを使用
ID3DXSPrite::Begin()を使用したいのですが、
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/reference/d3dx/interfaces/id3dxsprite/_id3dxsprite.asp
を見る限りはBegin(void)のようですが、コンパイル時に
「パラメータが足りません」とエラーがでます。
又、ID3DXSprite::Draw(引数略)を使用したときに、上のサイトの仕様通りに使用しても
「パラメータが多すぎます」とエラーが出、また、D3DXVECTOR2を要求してるはずの部分が
「D3DVECTOR3に変換できないので2は使えません」とエラーが出ます。
ttp://www.uploda.org/uporg712890.cpp.html
C言語と、VisualBasic6.0+DirectX7は一通り勉強したのですが、C++とDirectX9は勉強開始して間もないので
拙いソースですがよろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています