5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2009/02/27(金) 21:03:32
※回答する人も、質問する人も必ず読んでください

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

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

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

【C++】 DirectX初心者質問スレ Part21 【C】
http://pc11.2ch.net/test/read.cgi/tech/1229078397/

2 :デフォルトの名無しさん:2009/02/28(土) 01:42:24
ttp://www1.axfc.net/uploader/File/so/18984.zip

ポリゴンを表示したのですが、
実際に画像を読み込んだサイズで表示できません。
(画像が256x256なら表示も256x256)
どこの設定が悪いのでしょうか?

それと上下左右のキーで1ピクセル単位で動かそうと
しているのですが、こちらも上手くいきません。
どういう風にすれば良いのでしょうか?

3 :デフォルトの名無しさん:2009/02/28(土) 02:31:15
頂点フォーマットはD3DFVF_XYZRHWってことでいいのかい?

4 :デフォルトの名無しさん:2009/02/28(土) 07:51:47
ttp://www1.axfc.net/uploader/File/so/18996.zip

>>3
頂点フォーマットはD3DFVF_XYZではダメなのでしょうか?

z の指定がおかしい事に気づき、1ピクセル単位で動かすのは可能になりました。
ただ未だに実際のサイズでの表示が上手くいきません。
現状では256x256の場合は231x231で表示されてしまっています。

5 :デフォルトの名無しさん:2009/02/28(土) 11:44:28
directx9.0bがインストールされているPCって何年前くらいのですか?
学校のパソコンが全部9.0bなのでD3DX関数を使ったアプリを起動すると
d3dx_xx.dllがありませんと出ます

6 :デフォルトの名無しさん:2009/02/28(土) 11:50:05
>>4
ポリゴンの位置座標をワールド空間で扱うなら、サイズもワールド空間に変換しないとだめね。
(スクリーン上での幅が、ワールドではいくつになるか計算。)
元々のポリゴンの幅が2.0(-1.0〜1.0)だから、(ワールド幅 / 2.0)倍ね。
D3DXMATRIXA16 matMod;
D3DXVECTOR3 p1, p2;
CalcScreenToWorld(&p1, 0, 0, 0, 640, 480, &matView, &matProj);
CalcScreenToWorld(&p2, 256, 256, 0, 640, 480, &matView, &matProj);
float worldWidth = p2.x - p1.x;
float worldHeight = -(p2.y - p1.y);
D3DXMatrixScaling(&matMod, worldWidth / 2.0f, worldHeight / 2.0f, 1.0f);
matScale = matMod * matScale;
単に等倍表示しただけなら、正射影にすれば、CalcScreenToWorld とかいらなくなるわよ。
D3DXMatrixOrthoOffCenterLH( &matProj, 0, vp.Width, vp.Height, 0, 5.0f, 100.0f );
D3DFVF_XYZRHW でもできるけど、SetTransform とか使えないモードだから注意ね。


7 :デフォルトの名無しさん:2009/02/28(土) 11:54:19
d3dx9_37.dll
に入っている代表的な関数は何がありますか?

8 :デフォルトの名無しさん:2009/02/28(土) 12:23:38
関係ない
D3DX関数を使っていると
November2007でコンパイルしている場合d3dx9_37.dllが必要
August2007でコンパイルしている場合
それより後にでているd3dx9_37.dllがあったとしてもダメでd3dx9_35.dllが必要



9 :デフォルトの名無しさん:2009/02/28(土) 12:43:31
D3DXがスタティックライブラリだった最後のバージョンってOctober2004くらいだっけ?
どうしても気になるならそっち使えばいいんじゃね

10 :デフォルトの名無しさん:2009/02/28(土) 13:16:10
>>6
拡大率の方にも必要だったのですね、この方法で出来ました。
ありがとうございます。
拡大回転もやりたいので正射影ではダメなんです。

それでもう一点気づいたのですが、
CalcScreenToWorld使ってるとX軸やY軸の回転で、
見えない所が出てしまうんですね…。
スクリーン座標や拡大率を保ったまま回転させて、
画像の全範囲を表示する方法はあるのでしょうか?

11 :デフォルトの名無しさん:2009/02/28(土) 13:16:59
>>9
December2004もスタティックでいけました。

12 :デフォルトの名無しさん:2009/02/28(土) 13:55:21
>>10
ポリゴンが欠けるのは、回転した部分がニア平面より手前に来るからね。
CalcScreenToWorld の引数 fZ を それぞれ 0.5f にすればとりあえず直るわよ。

13 :デフォルトの名無しさん:2009/02/28(土) 14:25:00
>>12
なるほど、0か1かでしか考えてなかったのがダメだったのですね。
本当に何から何まで本当にありがとうございます。
おかげさまで思い通りの挙動をさせる事が出来ました。

14 :デフォルトの名無しさん:2009/02/28(土) 16:17:58
Y軸回転のみするモデルに穴があり、そこだけヒットを無くし
穴から落ちるような処理を作りたいのですが
当然、穴も回転するのですが
回転後の穴の座標を取得するにはどうすれば良いのでしょうか?


15 :デフォルトの名無しさん:2009/02/28(土) 16:20:15
すみません、Hitの方法は

16 :デフォルトの名無しさん:2009/02/28(土) 16:22:56
また間違えて書きこんでしまった……。すいません。

Hitの方法は、Y軸回転のみするモデルはAABBであたり判定を行い
穴の部分は球でのあたり判定を行うつもりです。
2重の当たり判定を行い、穴から落ちるような処理を作ろうとしています。

17 :デフォルトの名無しさん:2009/02/28(土) 17:37:10
球の中心座標をモデルのローカル座標に直して
モデルと同じ回転行列を掛けるだけじゃ?

18 :13:2009/02/28(土) 22:20:37
度々すみません。
回転や拡大の中心座標を変えたいのですが、
ポリゴンの場合どの部分がそれに当たるのでしょうか?

19 :デフォルトの名無しさん:2009/02/28(土) 22:29:32
>>16は解決したわけ?

20 :13:2009/02/28(土) 22:40:39
>>19
一応念の為、>>16は私ではないです。

21 :デフォルトの名無しさん:2009/02/28(土) 23:30:05
0が中心位置

22 :デフォルトの名無しさん:2009/03/01(日) 09:52:34
>>19
返事が遅れました。申し訳ありません。

>モデルのローカル座標に直して
という意味がわかりません……。
しかし回転、移動の変換行列をかけてみたら解決できました。
ありがとうございます!


もうひとつ質問なのですが、
この場合って、モデルのローカル座標の実際の数値を調べて、
中心位置を出さなければなりませんが、
他にスマートな方法はあるのでしょうか?
あたり判定用のモデルを読み込むとかですかね?

23 :デフォルトの名無しさん:2009/03/01(日) 10:10:35
データの中身をみないで結果が割り出せるとは、どんな魔法のことだ?

24 :デフォルトの名無しさん:2009/03/01(日) 11:53:16
モデルを作った人間ならどこが中心かなんか分かるだろう
もしくは、この位置に穴を開けてくれとプログラマーがデザイナーに頼むもの

25 :デフォルトの名無しさん:2009/03/01(日) 14:53:06
二つあるマトリクスから、その二つの回転角度を得るのってどういう計算すれば取る事出来ますか?
スケールはないものと考えます。
宜しくお願い致します。

26 :デフォルトの名無しさん:2009/03/01(日) 14:57:16
二つのベクトルが成す角度の求め方なら昔高校でやったような気がするけど思い出せない……

27 :デフォルトの名無しさん:2009/03/01(日) 15:56:10
>>25
// 行列が2つあるとしたら
D3DXMATRIX m, n;
D3DXMatrixRotationY(&m, D3DXToRadian(20));
D3DXMatrixRotationY(&n, D3DXToRadian(50));
// m から n への回転行列 ( inv(m)*n ) を作って、
D3DXMATRIX im, imn;
D3DXMatrixInverse(&im, NULL, &m);
imn = im * n;
// それをクォータニオンに変換して
D3DXQUATERNION q;
D3DXQuaternionRotationMatrix(&q, &imn);
// 回転角を求めれば終わり。
D3DXVECTOR3 axis;
float angle;
D3DXQuaternionToAxisAngle(&q, &axis, &angle);

angle = D3DXToDegree(angle); // ほぼ30ね。


28 :27:2009/03/01(日) 17:27:43
というか、m,nをそれぞれクォータニオンにした方が速いわね。
D3DXMATRIX m, n;
D3DXMatrixRotationY(&m, D3DXToRadian(20));
D3DXMatrixRotationY(&n, D3DXToRadian(50));

D3DXQUATERNION qm, qim, qn;
D3DXQuaternionRotationMatrix(&qm, &m);
D3DXQuaternionRotationMatrix(&qn, &n);
D3DXQuaternionInverse(&qim, &qm);
D3DXQuaternionMultiply(&q, &qim, &qn);

D3DXVECTOR3 axis;
float angle;
D3DXQuaternionToAxisAngle(&q, &axis, &angle);
angle = D3DXToDegree(angle);

29 :25:2009/03/01(日) 21:24:13
>>27
有難う御座います。

30 :デフォルトの名無しさん:2009/03/01(日) 22:56:49
DirectMusicでBGMを流すと同時に効果音を鳴らすってできますか?
今やっているのですがどうも片方しかできなくて。。。

31 :デフォルトの名無しさん:2009/03/01(日) 23:03:18
HRESULT CDXMusic::PlayMusic(DWORD index)
{
// 演奏中であれば戻る
if(m_performance->IsPlaying(m_segment[index], NULL) == S_OK) {
return E_FAIL;
}

m_performance->PlaySegmentEx(m_segment[index], NULL, NULL, 0, 0, NULL, NULL, NULL);

return S_OK;
}

楽曲を3つ読み込ませて再生させているのですが
1を再生中に2を再生すると1が消えてしまいます

原因エスパーしてもらえませんか;;

32 :デフォルトの名無しさん:2009/03/01(日) 23:16:13
何故まずヘルプを読まない?
使い方を確認しない?

33 :デフォルトの名無しさん:2009/03/01(日) 23:42:15
すみませんヘルプ読みました

要するにDirectMusicは

プライマリ セグメントは、一度に 1 つだけ演奏できる。再生のためにプライマリ セグメントを挿入するときは、演奏中のセグメントが終わった後でそのセグメントを演奏するように指定したり、現在のプライマリ セグメントを置き換えたりすることができる。

一方、セカンダリ セグメントは現在のプライマリ セグメント上で演奏され、任意の数のセカンダリ セグメントを同時に演奏できる。

DirectSoundはDirectMusicみたいにしなくても普通に同時に再生できるってことでしょうか?
(入力フォーカスが移動する際に、アプリケーションはバッファの再生と停止を繰り返す必要はない。)

34 :デフォルトの名無しさん:2009/03/02(月) 06:50:45
>>33
DirectSoundは波形を直截保持しているからDierectMusicのように面倒なことをしなくても
同時に再生できるよ。

35 :デフォルトの名無しさん:2009/03/02(月) 11:17:18
HLSLでシェーダを書いているのですが、このポリゴンを「加算合成」するのか「半透明描画するのか」はシェーダ側では決められないのでしょうか?

ついで
>>9>>11
スタティックな頃には、Xファイル周りで致命的なバグがあるのでやめたほうがいいです
でかいXファイルを読むとメモリー破壊されます(DirectX付属のサンプルソースですら)

36 :デフォルトの名無しさん:2009/03/02(月) 12:04:45
>>35
頂点単位で?それともテクニック単位で?

37 :デフォルトの名無しさん:2009/03/02(月) 13:26:09
>>36
お返事ありがとうございます。
どちらでも構いません。
できれば双方教えていただいてよいでしょうか?

38 :デフォルトの名無しさん:2009/03/03(火) 08:50:33
s

39 :デフォルトの名無しさん:2009/03/03(火) 09:03:47
DirectMusicでoggファイルを複数同時再生する所まで成功しました
テストでDirectMusicクラス(oggをwaveに変換してDirectMusicで再生)を
統括しているクラスをコンストラクタ・デストラクタを繰り返していたのですが、
20回に1度くらいの割合でデストラクタ時に落ちてしまいます
デバックしたのですが
http://appleloader.bbsnow.net/pic_loader/nomal/html/1_12.html
のような結果が出て調べたのですがお手上げです・・・

ソース上げたのでよろしければ見ていただけませんか
http://www7.uploader.jp/dl/inoguma/inoguma_uljp00003.zip.html
GameLib.h
_Lib_DXMusic.cpp
GameTitle.cpp
に書いてあると思います

よろしくお願いします

40 :35:2009/03/03(火) 11:57:44
昨日から>>35の件について探し回っているのですが、それっぽいものが一向に見つかりません。
どなたかわかる方いらっしゃいましたら、アドバイスお願いいたします

41 :デフォルトの名無しさん:2009/03/03(火) 12:52:25
テクニック内でレンダリングステートを変更して
半透明用テクニック、加算合成用テクニックを作るとかじゃだめなの?

42 :デフォルトの名無しさん:2009/03/03(火) 13:20:39
>>41
お返事ありがとうございます。

HLSLのテクニック定義の部分でレンダリングステートが変更できるのですか?
その方法が、まさに知りたかったものだと思われます。

technique Test
{
pass P0
{
VertexShader = (vsTexture);
PixelShader = (psTexture);
}
pass P1
{
VertexShader = (vsNoTexture);
PixelShader = (psNoTexture);
}
}

現状こんな書き方なのですが、レンダリングステートを書き換える記述法(が書いてあるMSDNのページとかでもいいです)を教えていただけないでしょうか。
よろしくお願いします

43 :デフォルトの名無しさん:2009/03/03(火) 13:23:26
失礼しました。>>42です。

テクニック内でやればいいんじゃないか?というのをヒントにしてMSDNを
探し回ったところ、即座に
http://msdn.microsoft.com/ja-jp/library/cc373171.aspx#
こういうページを発見することができました。

ありがとうございました。

44 :デフォルトの名無しさん:2009/03/03(火) 14:06:19
http://msdn.microsoft.com/ja-jp/library/cc372280.aspx

自分もその辺やろうとしてたんで探してみたけど、これとか?

45 :デフォルトの名無しさん:2009/03/03(火) 15:41:42
>>44
素晴らしい、それでそれです。
一覧表がないなーと思いながら、C#版とかで「どうやらC#版の設定プロパティと名前が一緒らしいな」とか推測しながらいじってましたw

これで、描画周りが完全にプログラムから切り離せました。
嬉しい。

46 :デフォルトの名無しさん:2009/03/03(火) 16:24:45
(MDXとXNAは過疎化が酷いのでこちらで質問させてください。)

MDXを勉強中のプログラマ(C++/C#)です。今は土日の趣味でやってます。
MDXは情報が少ないため、UnmanagedかXNAに移行を考えていまが以下の点で悩んでいます。

Unmanage C++がめんどい
XNA フレームワーク導入めんどい

出来ればMDX2.0リリースか、XNAがOS標準搭載にならないかと・・・
Xbox用途以外ではUnmanagedに進むのが妥当なのでしょうか?
同じような経験された方、最終的にどうされましたか?


47 :デフォルトの名無しさん:2009/03/03(火) 16:28:09
いや、Unmanagedの話ばっかりしてるここで聞かれてもw
別によっぽどカリカリにチューンしたゲームを作りたいってことでもなきゃ、XNAでいいんじゃない?

ただ、それを不特定多数に売ったり、配ったりするつもりなら、XNAの実行環境のインスコを促すのは敷居がかなり高いとだけ。

48 :46:2009/03/03(火) 16:37:06
>>47
早々のレスどうもです。
やっぱりXNAは敷居高いですよね。OSというかDirectXに標準搭載されれば敷居が低いのですが・・・

どうもありがとうございます。自分もUnmanaged方針に変えます。

49 :デフォルトの名無しさん:2009/03/03(火) 20:56:10
両方やればいいんだよ
楽しいぞ

50 :46:2009/03/03(火) 21:39:14
>>49
いや〜個人的にはそうなんですよね。C++/CLIでUnmanaged。

ただ、将来的に業務用ツール用にDirectX検討しているんですが、
フレームワーク導入は敷居が・・・(.net or vistaですら厳しい!DirectXって何って感じです。)
元Javaな人にはC#しか・・・

なんでもないです。愚痴ってすいません。



51 :デフォルトの名無しさん:2009/03/03(火) 23:19:32
俺もツール作っててインタフェースはDirectXだけど、C#+MDXでやってる。
MDX自体は情報少ないけど、DirectX/C++からの脳内翻訳が効くし、
メモリリーク云々を考えるとマネージは外せないという結論に至った。

どうしても情報が無くて困った時はグーグルのコードサーチを使うといいよ。
web検索で2件とかしかでてこないような情報でもそれを使用したソースが
ズバリでてくる。ただライセンスには注意な。

52 :46:2009/03/03(火) 23:30:31
>>51
レスサンクスです。
私も苦労の末(?)Unmaged脳内変換が出来るようになりました。
たいていは同じような書き方なのでなんとか。ほんと無駄な技術。
メモリリーク面倒ですよね。やっぱりC#楽ですよね・・・
ありがとうございます。けど10&11を見据えてUnmanagedがんがります。

53 :デフォルトの名無しさん:2009/03/04(水) 00:52:59
そういえば.NETのコードは逆コンパイルできるから気を付けないといけない
ネットで見つけてきたコードは高確率で訴訟用に公開してる。このへんは誰でも気づくんだけど
注意しなきゃいけないのは元コードを自演転用で無料公開してる場合があるということ

54 :デフォルトの名無しさん:2009/03/04(水) 07:56:15
>>52
メモリリークなんて起きるときは大抵どっかがおかしい
おかしいのに無理に進むと余計におかしくなる
別にメモリリークを解決してくれてるわけじゃなくて
単に落ちないだけだろ

55 :デフォルトの名無しさん:2009/03/04(水) 08:11:47
c#はusingで破棄してくれから便利。

56 :デフォルトの名無しさん:2009/03/04(水) 09:17:40
>>52
ちょっとDirectXと離れるかもしれんが
shared_ptr
CComPtr
を使った上でメモリーリークするのか?
この2つを使えば、メモリーリークなんて(循環参照くらいしか)ないだろう。

もし何かミスって出したとしても、DirectXまわりはデバッガがリーク量を丁寧に出してくれるし
通常のメモリーについても
http://marupeke296.com/TIPS_No7_SearchMemoryLeak.html
これで超簡単表示

C++はメモリー管理が〜とかいう人のほとんどは、shared_ptrとかそういうほぼ標準ともいわれているライブラリ群を知らないだけに思える

57 :デフォルトの名無しさん:2009/03/04(水) 09:28:19
>>56
ほぼ標準と標準の間には大きな隔たりがあるんだぜ。
まずboostのインストールをしなきゃならん。

58 :デフォルトの名無しさん:2009/03/04(水) 09:40:03
boostのインスコって、いまや公式いってEXEファイルDLしてきて、ダブルクリックすれば設定含めて全部終わるんだぜ
それが嫌だとしても、shared_ptrもCComPtrもテンプレートだから、単体ヘッダファイルを持ってきてincludeすればおしまい

もちろん標準とほぼ標準には雲泥の差があるが、リークが嫌なら5分くらいの手間はかけようよw

59 :デフォルトの名無しさん:2009/03/04(水) 10:06:08
リークする貧相なプログラム技術を放置したままのほうがよっぽど危ない。
shared_ptrも万能ではないしまずはリークの検出修正が出来るように腕の磨くべき。

主観的にはboostみたいな非標準のものは出来る人間が楽をするために使うべきだと思う。

60 :デフォルトの名無しさん:2009/03/04(水) 11:28:15
>> 39
oggをwaveに変換してセカンダリバッファにデータに渡したあと
一時的なデータを保持していた変数をSAFE_DELETE()してないからメモリがスタックしてるんじゃないか?

61 :デフォルトの名無しさん:2009/03/04(水) 11:48:56
>>59みたいな人間が、C++使いとして恥ずかしいです…。
そんな「C++を使いたいなら、まずは基礎力をもっとつけろやwwww」みたいな排他的な姿勢はアホくさい。

C++自体、メモリーリークするわ、GCないわ、スレッドが言語標準じゃないわと「今どきの言語」に比べたら貧弱。
継承されるクラスのデストラクタにはvirtualをつけるのがお約束!なんていうくだらない「お約束」も大量にある。
それを「使う人間の基礎力が〜」とかに転嫁してどーする

62 :デフォルトの名無しさん:2009/03/04(水) 11:52:15
ここ質スレなのにすぐスレ違いの自己主張を始めるやつが現れるよな

63 :デフォルトの名無しさん:2009/03/04(水) 11:58:48
初心者スレで、初心者に「お前のプログラム技術が貧弱だからだ」とか言っちゃうんだもんな
それともDirectXのみ初心者で、プログラム技術自体は高い人間しか質問しちゃいけないのかっていう

64 :デフォルトの名無しさん:2009/03/04(水) 12:10:35
だったらお前のスタンスで好きに回答しろ。
ただし別のスタンスで回答する奴もいる。
いちいち噛み付いて迷惑するのは質問者なんだよ。

65 :デフォルトの名無しさん:2009/03/04(水) 12:11:36
言語なんか個人の自由
技量が無いなら使い手側に何のメリット無い、より高水準な言語を使っていればいい

66 :デフォルトの名無しさん:2009/03/04(水) 12:27:34
Direct3Dにスプライトなど無い

67 :デフォルトの名無しさん:2009/03/04(水) 12:39:17
つまらん!
お前の話はつまらん!!

68 :デフォルトの名無しさん:2009/03/04(水) 12:54:51
カーソルの移動量を調べたいんだけど
APIの機能でカーソルの位置を調べて前のフレームとの差を取る方法だとカーソルが画面の端に来た時に移動しなくなって困るので
DirectInputを使おうと思ってるんですが、これAPIでは解決できませんか?

69 :デフォルトの名無しさん:2009/03/04(水) 14:13:01
カーソルの絶対座標はどうでもいいのか?
1フレームごとにSetCursorPosで画面の真ん中に移動させれば大体の用は果たすと思うが。

70 :デフォルトの名無しさん:2009/03/04(水) 14:27:34
>>69
ありがとうございます
その方法でやってみます

71 :デフォルトの名無しさん:2009/03/04(水) 14:37:06
http://toruweb.web.fc2.com/dm/2.html

このサイトにあるDirectMusicによるogg再生のプログラムで
oggからwaveに変換した後セカンダリバッファに書き込むのですが

MidiとWaveの再生 / 終了処理と同じ処理をし、確保したメモリを解放します。

/* #define SAFE_RELEASE(p) if(p){p->Release();p=NULL;} */
SAFE_DELETE( lpWaveData );

とあるのですが
waveに変換してセカンダリバッファに書き込んだ後SAFE_DELETE()ではいけないのですか?

実際になってみたら落ちました

72 :デフォルトの名無しさん:2009/03/04(水) 14:38:14
訂正:実際に書き込んだ後すぐにSAFE_DELETE()したら落ちました

73 :デフォルトの名無しさん:2009/03/04(水) 15:41:08
ぶっちゃけストリーミング再生実装しないと
容量多いファイル再生すると落ちるよ・・・

そんなんも知らないの?

74 :デフォルトの名無しさん:2009/03/04(水) 16:10:40
ソース

75 :デフォルトの名無しさん:2009/03/04(水) 16:20:42
GPUを使ってサウンドエンジンを作るってどうやるの?

76 :デフォルトの名無しさん:2009/03/04(水) 20:42:11
fxc.exeを使ってfxファイルをデバッグしてるんですが、コマンドプロンプトが使いにくいです。
このスレの方々はどうやってますか?

77 :デフォルトの名無しさん:2009/03/04(水) 21:03:05
ttp://msdn.microsoft.com/ja-jp/library/dd188551.aspx
このEffectEditに相当するツールが、最新のSDKには入っていない気がするのですが
別名になって存在するのでしょうか?
それとも古いSDKからもってこないとダメでしょうか?

78 :46:2009/03/04(水) 23:09:18
46です。

皆さん色々アドバイスありがとうございます。
Boostとか非標準は会社での導入は難しいですね・・・規約を含めた運用変えるのに年単位でかかります。
個人ならOKでも、チームや部門では色々大変なのです。
9x,NT->2000,XP->2003sとかですでにてんやわんやなんで。
(ある程度の規模の会社はどこも同じとおもいますがw)
もしかして純粋なソフトウェアハウスさんなら違うのかな?
CComPtrは知らなかったので調べてみます。

激しくスレチになるでこれで失礼します!
今日は雪がまた降って大変でした。

79 :デフォルトの名無しさん:2009/03/04(水) 23:35:08
DirectXを使ったゲームを作るのに初心者(BCBで簡単なアプリが作れる程度)にとって最適な開発環境って何ですか?
VCとかVBとかBCBとか。

80 :デフォルトの名無しさん:2009/03/04(水) 23:38:10
VC+イルリヒト

81 :デフォルトの名無しさん:2009/03/04(水) 23:55:52
VC++ですか?>>80

値段的にもランクがあると思うんだけど、なんでも大丈夫かな?
高いのは購入できないので。

82 :デフォルトの名無しさん:2009/03/05(木) 00:01:02
>>21
その 0 が頂点なのだと理解するのに時間がかかりました。
教えて下さりありがとうございます。

http://www1.axfc.net/uploader/File/so/19255.zip

それでまた質問なのですが、
分割した画像をポリゴンで並べたら境目が出来てしまいました。
これを綺麗に表示するにはどうしたら良いのでしょうか?

83 :デフォルトの名無しさん:2009/03/05(木) 00:23:30
>>81
Express editionでぐぐれ。 無料版がある。
つーかBCBは今となっては古いマイナー標準準拠度悪の三重苦なので、
DirectX抜きにしてもさっさとVCに乗り換えた方がいい。

ちなみに言語にこだわらないならたぶんC#とかの.NET系言語から呼び出す方が楽だと思う。

84 :デフォルトの名無しさん:2009/03/05(木) 00:29:49
>>83
.NETって作ったアプリをインストールする環境にもフレームワークのインストールが必要ですよね?
ランタイムは極力不要な状態にしたいんだけどC#も似たような感じかな?

BCBはダメなのか。扱いやすいから気に入ってたんだけど残念。

85 :デフォルトの名無しさん:2009/03/05(木) 00:34:21
>>82
テクスチャフィルタが掛けてあるから縁にアンチエイリアスがかかってる
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT );
としてフィルターを切るか
これだと拡大時に画像が荒くなるののでそれが嫌なら元画像にもよるけど
テクスチャアドレッシングモードを
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP );
とすれば消えるかもしれない
プロジェクトが入ってないからコンパイルしてないので結果は自分で見てね

86 :デフォルトの名無しさん:2009/03/05(木) 00:47:34
>>85
こんな方法があったとは…、まさにビンゴです。
テクスチャの端を使わなかったり色々やってみたのですが、
上手くいかなかったので本当に助かりました。

87 :デフォルトの名無しさん:2009/03/05(木) 03:31:51
プロジェクトを入れないならソースの頭に

#pragma comment( lib, "dxerr.lib" )
#pragma comment( lib, "dxguid.lib" )
#pragma comment( lib, "d3d9.lib" )
#if defined(DEBUG) || defined(_DEBUG)
#pragma comment( lib, "d3dx9d.lib" )
#else
#pragma comment( lib, "d3dx9.lib" )
#endif
#pragma comment( lib, "winmm.lib" )

と入れとくと見てくれる率があがるかもしれない

88 :デフォルトの名無しさん:2009/03/06(金) 00:14:30
DirectX9.0SDKの最新を使ってPixelShader1.1などを使おうとすると、
ps_1_x is no longer supported
というエラーが出てしまいます。

DirectX9.0ではすでにps1.xがサポート外になっているのは知っているのですが、
作っているゲームは古いグラボでも動けるようにしたいものです。

この場合、
PixelShader = compile ps_2_0
と書いたHLSLファイルと
PixelShader = compile ps_1_1
と書いたHLSLファイルを両方用意しておかなければならないのでしょうか?

89 :デフォルトの名無しさん:2009/03/06(金) 00:46:44
古いので動かしたいならシェーダーを使わないのが正解だろう。

90 :デフォルトの名無しさん:2009/03/06(金) 01:10:12
ID3D10EffectPass::GetDesc(pDesc)
でE_FAILが返り、pDescに何も代入されずに返ってきます。
この場合どういう原因が考えられるでしょうか?


91 :デフォルトの名無しさん:2009/03/06(金) 01:17:48
>>88
D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY


92 :90:2009/03/06(金) 01:49:17
D3DX10CreateEffectFromFile()でFXファイルを読み込んで、ID3D10Effectを作りました。ここではS_OKが
返ってます。その後D3D10_EFFECT_DESCを取得して中身をみてみると全てのメンバーが0でした。FXファイルを
fxc.exeでコンパイルしてみると、mainエントリーがないといわれます。なので文法的には問題ないと
おもっているのですが、、
こういう場合どうすればよいでしょうか?


93 :デフォルトの名無しさん:2009/03/06(金) 01:52:12
なんか.xのアニメーションってやけにむずかしくね?

94 :90:2009/03/06(金) 02:36:10
一応解決したようです。
FXファイルのエンコーディングに原因があったようなのですが、よくわかりませんでした。
同じ内容のFXファイルを用意して、日本語のコメントを全部消してセーブして読み込ませたところ
問題なく動作しました。それまでは日本語のコメントが山ほど入っており、それをセーブする際には
ユニコードでセーブするか?と聞かれてYESを選択してました。
これからはFXファイルに日本語コメントを使わないようにしようと思いますが、いったんFXファイルを
ユニコードでセーブした後変更する方法が分からないのと、いまいちなにが問題なのか良く分からないので、
どなたか理由がわかる方いらっしゃったら教えてください。
ありがとうございました。


95 :デフォルトの名無しさん:2009/03/06(金) 10:01:27
日本語コメントなんて普通に使ってるが・・・

96 :デフォルトの名無しさん:2009/03/06(金) 11:57:28
全角空白じゃね?

97 :デフォルトの名無しさん:2009/03/06(金) 14:16:20
>>91

98 :デフォルトの名無しさん:2009/03/06(金) 14:18:41
97の誤爆失礼しました。

>>91
ありがとうございました。
情報があまりになく、英語MSDNまで調べにいくことになりました。日本語MSDNにすらのってないですね。

これを考えると、常に「なるべく最新のPS、VSとしてコンパイルしたい」という気がしますね。
同じコードでも、ps11としてコンパイルするのと、ps20としてコンパイルするのでは吐かれたコードの効率が違いましたし。
そういうオプションもないかな?と思い探してみましたが、無いようです。

みなさんはVS20, PS20の決め打ちでHLSLを書いているのでしょうか?

99 :デフォルトの名無しさん:2009/03/07(土) 02:22:42
DirectX10のコードを書いているのですが、ウィンドウのクライアント領域を全く
なくしてしまうと
Device->ClearDepthStencilView()
というコードが例外を出します。ID3D10DepthStencilViewをReleaseしようとしても
だめなようです。ID3D10DepthStencilViewをReleaseする前にチェックしないとだめなことって
どんなことがあるでしょうか?




100 :デフォルトの名無しさん:2009/03/07(土) 02:28:10
ものすごく簡単な事だったらすいません。
家のパソコンはネットにつながっていないのですが、
買ってきたゲームがDirectX9以上が必要と書いてありました。
漫画喫茶で落としてインストールしようと思ったんですができません。
何か方法ありますか?

101 :デフォルトの名無しさん:2009/03/07(土) 02:46:13
>>100
スレ違い
通常のインストーラはWebインストーラなので
DirectX End-User Runtimes (November 2008)を漫画喫茶で落として来い
もう二度と来るなよ

102 :デフォルトの名無しさん:2009/03/07(土) 02:46:36
方法あります
本体をおとしてください

103 :デフォルトの名無しさん:2009/03/07(土) 05:41:09
Xファイルのアニメーションについて詳しく書かれてるサイトある?

104 :デフォルトの名無しさん:2009/03/07(土) 09:53:28
MSDNのサイトに書かれています

105 :デフォルトの名無しさん:2009/03/07(土) 10:07:31
理論だけならまるぺけが詳しい
ただしソースは無い(あるけど記事に沿ったものはない)
そこを読みながら
結局SDKのサンプルのSkinnedMeshを1ステップずつデバックしながら
どこで何をやってるのか地道に理解するのが一番の早道

106 :デフォルトの名無しさん:2009/03/07(土) 11:15:44
お手軽に動くソースを欲しがるから難しく感じるんだよ
どの順番でどの変数に何が読み込まれているのかをじっくり追っていけば
そんなに難しいもんじゃない

107 :デフォルトの名無しさん:2009/03/07(土) 12:11:27
HLSLについてなんですが、固定シェーダ機能のアルファ設定を

AlphaBlendEnable = TRUE;
SrcBlend = SRCALPHA;
DestBlend = INVSRCALPHA;

このようにした場合、色成分はアルファ値に応じた混合がなされるのは分かるのですが、
混合結果後のアルファチャンネルの値はどのようになるのでしょうか?

現在のレンダリング結果に対し、過去のレンダリング結果の蓄積をアルファ合成し続ける
フィードバックエフェクト(残像っぽくなるやつで過去のアルファ値は0.5f〜0.9f)をしていると、
もともとがアルファ値1.0fのピクセル同士の混合後のアルファ値が1.0fではなく、少し低くなって
0.8fかそこらへんに下がってしまい、若干暗い絵になってしまいます。

108 :デフォルトの名無しさん:2009/03/07(土) 12:39:48
α値がどうなるかはSetTextureStageState()で設定したとおりになる。

109 :107:2009/03/07(土) 13:11:59
>>108
アプリ側で設定してやるんですね。
ありがとうございました。

110 :デフォルトの名無しさん:2009/03/08(日) 15:36:04
とあるゲーム作成の参考書どおりに設定を行ったところ

1>LINK : fatal error LNK1104: ファイル 'd3dx9.lib' を開くことができません。


といったエラーが表示されます
サブシステムのパスは通しています

・インクルードファイル
C:\Program Files\Microsoft DirectX SDK (April 2007)\Include
C:\Program Files\Microsoft Platform SDK\Include
・ライブラリファイル
C:\Program Files\Microsoft DirectX SDK (April 2007)\Lib
C:\Program Files\Microsoft Platform SDK\Lib

ちなみにApril 2007となっているのは雑誌と同様にしているからです

111 :デフォルトの名無しさん:2009/03/08(日) 15:40:21
>>110
実際にそのフォルダ見てみればいいじゃない。
環境によるかもしれないが、その下にx86って無いか?

112 :デフォルトの名無しさん:2009/03/08(日) 16:09:55
ちょっと質問です。

Microsoft DirectX SDK (November 2008)、DirectX9 を使って開発を行っています。
ところで、作ったアプリを動かすための必要環境を、「9.0c 以上」 ではなく 「9.0 以上」 まで下げたいのです。
どうすればこのアプリは、確実に 「必要環境: 9.0 以上」 と言えるようになるのでしょうか?

たとえば、ピクセルシェーダ 3.0 を使ってしまうと 9.0c が必須になりそうなので 2.0 を使ったり、などはしています。
ですが、他の機能となると、どこまで使っていいのかが分かりません…。
SDK のバージョンを落とせばいいのかな?とも思ったのですが、どこまで落とせばいいのかも分からないし、
古すぎる SDK は簡単には手に入らないので、これも何か違っている気がします。

よろしくお願いします。

113 :デフォルトの名無しさん:2009/03/08(日) 16:12:34
PS2.0でも9.0cが必須なんだが・・・。

114 :デフォルトの名無しさん:2009/03/08(日) 16:58:27
ぶっちゃけ、古いSDKで開発するしかない
探せば簡単に見つかる

115 :デフォルトの名無しさん:2009/03/08(日) 16:59:45
DirectX7お勧め。

116 :デフォルトの名無しさん:2009/03/08(日) 17:21:49
古い SDK しかないですか…それっぽいのが見つかったので試してみます。
ありがとうございました。

117 :デフォルトの名無しさん:2009/03/08(日) 17:33:12
みんな、Microsoft DirectX SDK (November 2008)のNovember 2008の部分が違うものを
3つも4つもインストールしてるんだぜ・・・

118 :デフォルトの名無しさん:2009/03/08(日) 17:34:55
それ以前にどのOSとSPが、DirectXの下限バージョンなのかきちんと調べたのか?
ターゲットOSを明確にした上での選択なのか甚だ疑問。

119 :デフォルトの名無しさん:2009/03/08(日) 17:44:06
つーかDirectX9世代なら気にせずwebインストーラー添付して「入れてね☆」とか出しとけばいい。
下のサポートを考慮するならDirectX7やDirectX8を考慮するべし。

120 :デフォルトの名無しさん:2009/03/08(日) 18:02:25
DirectX9cならインストーラなど付けなくても、
WindowsXPのSP2以降と明記しておけばいいだけ。
それ以前なら既にセキュリティパッチが打ち止めになっていて、
SPすら入れない奴をそもそもサポートする必要性もない。

121 :デフォルトの名無しさん:2009/03/08(日) 18:31:22
こんにちは、識者の方々、哀れな初心者をお助けください。
<聞きたいこと>
環境によって、表示される画像が1ドット多く表示される32ピクセル表示する命令なのに、33ピクセル表示される感じ。
なぜ、これがおこるのか?
この現象の回避方法は?

<詳細>
Vistaで2Dゲームを作成しています。
512×512のビットマップのうち、座標(0,0)から32×32のサイズの部分が画面の背景で、その32×32のサイズを画面に繰り返し描画しています。
開発マシン(Vista:解像度1280×800)では正常に表示されますがテストマシン(XP:解像度1024×768)で表示すると1ピクセル余計に画像が表示されていてしまいます。

開発はDiretX9で、表示はID3DXSprite::Drawでおこなっています。
下みたいな感じ
g_pSprite->Begin();
g_pSprite->Draw(pTexture,
&rect, //表示範囲
&D3DXVECTOR2(scale_x,scale_y), //拡大率
NULL,g_rotation, //回転
&D3DXVECTOR2(F(x),F(y)),
D3DCOLOR_XRGB(255,255,255)
);
g_pSprite->End();
変数とかは察してください(笑)
もし、なにかお分かりの方がいらっしゃれば、ぜひ、ご教授願います。よろしくお願います m(..)m

122 :デフォルトの名無しさん:2009/03/08(日) 18:43:42
まずそれ以前に、SDKのヘルプに乗っているチュートリアルはすべて終わらせたのか?

123 :112:2009/03/08(日) 18:53:21
いろいろとご指摘ありがとうございます。

諸事情で DirectX9 は是非使いたいのです。
Windows2000 以降対応にしたいのですが、2000 には初期状態で 7.0 しか入っていないので、DirectX のインストーラは同梱させる予定です。
ただ、2000 には 9.0c はインストールできないと聞いたことがあるので、9.0 で動くようにしたかったのです。
このあたりの情報は検索してもなかなか見つからなくて…正直自信ないです。

124 :121:2009/03/08(日) 19:02:06
>112
一応みました。
ぐぐったりもしましたが、原因が分からず
質問させていただきました

125 :デフォルトの名無しさん:2009/03/08(日) 19:16:47
>>123
9.0cは2000どころかD3DXのバージョンによっては98SEとかでも動くんだが。

126 :デフォルトの名無しさん:2009/03/08(日) 20:52:46
2000でインストールできないってそれ割れOSなんじゃないの?
2kのは大分出回ったみたいだし

127 :デフォルトの名無しさん:2009/03/08(日) 20:56:59
>>124
見るんじゃなく、一つ一つ動かして動作を確認しろ。
話はそれからだ。

128 :121:2009/03/08(日) 22:07:38
>127
ひとつだけ、教えてください。
わたしが、示したコードはおかしなところがありますか?

わたしはおかしくないつもりだったのですが、
わたしのコードがおかしいから、動作を確認しろと
アドバイスをいただいているのかどうか、気になっています。

129 :デフォルトの名無しさん:2009/03/08(日) 22:44:49
1部じゃなくて全ソース晒して方がはやそう
たぶん描画部分以外の問題の希ガス
あとID3DXSpriteは内部でレンダリングステートや
テクスチャーステージを勝手に変更してたりするから実際に見ないとたぶん分からん

130 :デフォルトの名無しさん:2009/03/09(月) 00:50:29
>>111
ありがとう

131 :デフォルトの名無しさん:2009/03/09(月) 01:21:33
>>128
スクリーンショットとって大きさ計ってみた?

132 :121:2009/03/09(月) 10:12:40
みなさんアドレスありがとうございます。

>129
勝手にサイズを変えるんですか、なるほどです。
今出先でソース晒せないので家に帰ったら晒します

>131
いいえ、計っていません。こちらも家に帰ってから計ってみます!

133 :121:2009/03/09(月) 11:33:40
>>132
一言もサイズとは書いてないですね
勘違いしました
すみません。

134 :デフォルトの名無しさん:2009/03/09(月) 11:42:40
なんつーか、FILTERをLINEARにしてましたとかいうオチじゃなかろうな・・・?

135 :デフォルトの名無しさん:2009/03/09(月) 11:51:02
ブレンドステートってどういうときに使いますか?
いまいち用途がわかりません。

136 :デフォルトの名無しさん:2009/03/09(月) 11:52:59
αブレンドするときに使います。

137 :デフォルトの名無しさん:2009/03/09(月) 11:54:55
ありがとうございます。
αブレンドと言われても全然わからない自分は、まだまた勉強不足ということですね。


138 :デフォルトの名無しさん:2009/03/09(月) 12:01:01
まだまだというより、これから勉強始めるところじゃないの?

139 :デフォルトの名無しさん:2009/03/09(月) 17:23:53
2Dのゲームプログラムを組んでます。

画面全体を揺らすプログラムを組みたいんですが、そういうサンプル無いでしょうか。
このAPI使えるよとかでも構いません。

表示してるテクスチャをすべて同時に動かすぐらいしか思い付かなかったんですが、
皆さんどんな感じで実装してるんでしょうか。
ドラクエでダメージを受けると画面が揺れますが、あんなかんじの演出を考えてます。

よろしくお願いしますm(__)mペコ

140 :デフォルトの名無しさん:2009/03/09(月) 17:29:39
>>139
ウィンドー全体を揺らしちゃえよ
フルスクリーンでは無理だが

141 :デフォルトの名無しさん:2009/03/09(月) 18:30:36
>>140

回答ありがとうございます。なるほど!参考になります。
フルスクリーンは、、、そうっすね。

142 :デフォルトの名無しさん:2009/03/09(月) 21:10:29
>>140
バックバッファの内容全体を揺らせばいいんじゃないの?フルスクリーンとかも関係ないじゃん。


143 :デフォルトの名無しさん:2009/03/09(月) 21:16:24
2D系でしょ
表示してるテクスチャをすべて同時に動かすでいいんじゃね?

144 :デフォルトの名無しさん:2009/03/09(月) 22:23:06
いちばん簡単なのはテクスチャに描画してテクスチャを動かす方法だろ
他のエフェクトと兼用できるし

145 :デフォルトの名無しさん:2009/03/09(月) 22:27:24
テクスチャーに描画するとき、サンプリングが利かなくなるからしょぼくなる

146 :デフォルトの名無しさん:2009/03/09(月) 23:55:19
いや普通に利くだろ・・・

147 :デフォルトの名無しさん:2009/03/09(月) 23:59:28
ドラクエでダメージ受けて画面揺れるのってステータスや文字表示部分だけだろ
そういう処理やりたいなら全体をまとめて揺らすよりも、個別で表示位置変える方が融通効くんじゃないの?
逆に文字だけは揺らしたくないとかってケースもあると思うけど

148 :121:2009/03/10(火) 00:12:18
とりあえず、先にスクリーンショットの報告です。

スクリーンショット撮ってサイズを測ってみました。
結果、サイズ自体はただしかったです。

つまり、正しく32ピクセル表示しているのに
画像のサイズが少し小さくなって、33ピクセル分
表示されている感じでした。

テクスチャをロードした時に、すこし小さくなっているのでしょうか・・??

149 :デフォルトの名無しさん:2009/03/10(火) 00:15:53
フィルタリングの設定見直せ

150 :デフォルトの名無しさん:2009/03/10(火) 00:16:54
>>148
>>82,85

151 :139:2009/03/10(火) 00:40:06
みんあーありがと!いろいろ参考になったよ。
揺らしたことないからテクスチャに描画して動かす方法で感じ掴んでみるー。

152 :デフォルトの名無しさん:2009/03/10(火) 01:20:40
>>148
ID3DXSpriteはBigenで現在設定してるレンダリングステートを保存して
スプライト用に書き換えてから描画し
Endで保存したステートを復元している
たしか自動でフィルターもONになってたはず
スプライト->Beginのパラメーターで変更しないように出来たはずだが
ID3DXSpriteはあんまり使ったこと無いので嘘かも
ソース上げてくれたらチェックするが

153 :121:2009/03/10(火) 01:47:31
みなさま、アドバイスありがとうございます。

やはり、フィルターの設定だったようです。
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT );
を付け加えることで、正しく表示ができました。

正直、まだ、半分くらいしか理解できていないので
これから、もっと精進して勉強していきます!

ちなみにみなさんは、どうやって知識を蓄えて行かれたのですか?

やっぱり地道にMSDNとかでしょうか?

ずばっと答えて下さるみなさんにあこがれちゃいます

154 :デフォルトの名無しさん:2009/03/10(火) 05:14:53
ぶっちゃけ、こればっかりは長く続けて経験値を上げていくしかない
これだけ見ればOKみたいなサイトや書籍は存在しないので
基本は色んな場所から良いと取りすることになるんだけど
なにが「良い」のかを判断できるようになるにはやっぱり経験が必要
結局はいろいろ失敗しつつも自分であれこれいじっていくしない

155 :デフォルトの名無しさん:2009/03/10(火) 11:09:52
>>153>>134

156 :デフォルトの名無しさん:2009/03/10(火) 20:22:35
サンプルフレームワークで質問があります
ウインドウモードで起動し、ウインドウサイズを拡大していくと、フォントやGUI部分は同じ大きさなのに
モデルやスプライト等のサイズのみ大きくなっていくのですが、これはフレームバッファのサイズ自体が変化していくということでしょうか?

157 :デフォルトの名無しさん:2009/03/10(火) 22:15:44
座標変換済み頂点を使ってるものは画面サイズに関わらず変化しない
頂点変換掛けてるものは射影行列が同じな限り
画面に対しての比率は常に一定、つまり画面が大きくなれば大きくなる

158 :デフォルトの名無しさん:2009/03/10(火) 22:39:56
スキンメッシュアニメーションの読み込みと表示のサンプルきぼん

159 :デフォルトの名無しさん:2009/03/10(火) 22:48:07
あのサンプルは解像度も変わってるよ

160 :デフォルトの名無しさん:2009/03/10(火) 22:55:48
いま現在の自分のDirectX技術のレポートと
想定しているシステムのスケルトンプログラムを提出してくれたら
それにあった奴を書いてやるよ
使用目的も分からないとSDKのサンプルみたいな煩雑なコードになるから

161 :デフォルトの名無しさん:2009/03/10(火) 23:01:15
>158
いいサンプルがSDKにはいってんべ

162 :デフォルトの名無しさん:2009/03/10(火) 23:07:43
struct CUSTOMVERTEX
{
D3DXVECTOR3 position; // 頂点の 3D 位置。
D3DXVECTOR3 normal; // 頂点のサーフェイス法線。
};
の頂点のサーフェイス法線の意味がわかりません。
お願いします

163 :デフォルトの名無しさん:2009/03/11(水) 00:17:44
複数ウィンドウ(親ウィンドウと子ウインドウ)のとき、
描画ループの順番はどうしたらよいでしょうか?
while(true) {
pParent->Clear(ARGB);
pParent->Begin();
...
pParent->End();
pParent->Present();

pChild->Clear(ARGB);
pChild->Begin();
...
pChild->End();
pChild->Present();
}
上記のようにするべきなのか、それとも
pParent->Clear();
pChild->Clear();
pParent->Begin();
pChild->Begin();
このようにするべきでしょうか?

164 :デフォルトの名無しさん:2009/03/11(水) 00:45:40
ぶっちゃけどっちでもいいと思う

165 :デフォルトの名無しさん:2009/03/11(水) 00:47:34
>>157
>>159
フレームバッファサイズが変わってそれに合わせて頂点変換されてるものの表示サイズも変わるってことでしょうか?

フレームバッファサイズを固定したままウィンドウサイズを変えることってできないでしょうか?
例えば、DXUTCreateDevice()で640x480のフレームバッファ、ウィンドウサイズを持つアプリを作り
それをマウス操作でウィンドウサイズを拡大、このときにフレームバッファサイズを固定したまま引き伸ばして
ウィンドウの形状の拡大させたいのです

166 :デフォルトの名無しさん:2009/03/11(水) 00:58:22
伸ばした部分は黒枠でいいの?

167 :デフォルトの名無しさん:2009/03/11(水) 01:46:03
サンプルフレームワークのBasicHLSLを使ったのですが、

640x480で起動直後はこのようになります
http://nagamochi.info/src/up30411.jpg

これのウィンドウサイズを拡大すると、こんな感じに
http://nagamochi.info/src/up30412.jpg

これをこのような形で拡大させたいのです
http://nagamochi.info/src/up30413.jpg

拙い説明ですみません。

168 :デフォルトの名無しさん:2009/03/11(水) 02:02:38
それはたぶん無理
DXUTの中身をいじれば出来るけどそれが出来たらこんな質問でないよね
荒業としてはUI部分だけ別のレンダリングターゲットに描画して後から合成とか

169 :デフォルトの名無しさん:2009/03/11(水) 02:16:44
DXUT.cpp 3643行周辺でバックバッファ領域をクライアントサイズに変更してその後にデバイスをリセット
BassicHLSLからコールバックで登録したOnResetDeviceが呼ばれて
そこでGUI部分の表示位置、サイズを修正してる感じかでしょうか?

ここのバックバッファサイズをクライアントサイズに変更する箇所を無くすと
画面自体はhttp://nagamochi.info/src/up30413.jpgになったのですが、
GUIコントロールの位置が表示されてる場所からずれてしまいました(ずれたのは表示位置の方なのですが)

170 :デフォルトの名無しさん:2009/03/11(水) 02:36:39
ずれたのは
OnResetDevice内でバックサーフェイスのサイズにあわせて
SetLocationしなおしてるから
そこを消せばOKなんじゃない?

171 :デフォルトの名無しさん:2009/03/11(水) 02:54:36
DirectX9で
ID3DXFont::DrawText
すると、文字の下と右っかわに
変なわくみたいな線がとぎれとぎれに出ます?

なぜ〜〜〜????

172 :デフォルトの名無しさん:2009/03/11(水) 11:07:34
>>158
煽りでもなんでもなく、ほんとにサンプルに入ってるやつをぶっこぬくのが一番いい。
腐ってもマイクソといった感じの、すごいいいソースだった

173 :デフォルトの名無しさん:2009/03/11(水) 12:32:16
質問です

Direct3D9のボリュームテクスチャに、GPUで直接レンダリングする方法が分かりません

ボリュームから特定の軸で分割したサーフェイスが取得できると思っていたのですが
マニュアルを見てもサーフェイスを取得する方法が分かりません

Direct3D10でのやり方は分かるのですが、もしかしてDirect3D9では出来ないのでしょうか?

174 :デフォルトの名無しさん:2009/03/11(水) 12:42:41
ヘルプに書いてある通り。

175 :デフォルトの名無しさん:2009/03/11(水) 12:58:47
お前こっちまで来てんのかww
ワロタwww

176 :デフォルトの名無しさん:2009/03/11(水) 13:04:34
つまりヘルプを読めば解決

177 :デフォルトの名無しさん:2009/03/11(水) 13:09:22
困ってるんだ!頼む教えてくれ!

178 :デフォルトの名無しさん:2009/03/11(水) 13:10:16
それが人にものを教えてもらうときの態度かね

179 :デフォルトの名無しさん:2009/03/11(水) 13:11:25
猿!草履を用意せい!

180 :デフォルトの名無しさん:2009/03/11(水) 13:14:15
いい加減にしろよ粘着
http://pc11.2ch.net/test/read.cgi/gamedev/1234296058/

181 :デフォルトの名無しさん:2009/03/11(水) 13:30:40
お昼の部の人気に嫉妬

182 :デフォルトの名無しさん:2009/03/11(水) 13:57:06
>>173
ボリュームテクスチャをレンダーターゲットにしたいってこと?

183 :デフォルトの名無しさん:2009/03/11(水) 14:44:39
はい

184 :デフォルトの名無しさん:2009/03/11(水) 19:01:21
DirectXのチュートリアルでマウスの状態が I の状態になったり
砂時計になったりするとそのままだよね
これを矢印の状態にするにはどうすればいいでしょうか?

185 :デフォルトの名無しさん:2009/03/11(水) 19:30:30
DirectXと関係ない

186 :デフォルトの名無しさん:2009/03/11(水) 20:08:45
最近良く見る床で反射(?)してる風の見た目を実現しようと思っています。

今はID3DXSpriteを使ってPNGファイルを表示させているんですが
同時に同じ画像を反転させて元の画像の下に表示させてさらにグラデーションをかけたいです。

イメージとしてはこんな感じ。(サンプルは文字になってますけど)
http://www2.uploda.org/uporg2081830.png

スプライトを反転させて元スプライトの下に表示まではできたんですけど
グラデーションをかけることができません。

どうやったら実現できるか識者の方、知恵を貸してください。。。

187 :デフォルトの名無しさん:2009/03/11(水) 20:10:39
Direct3Dにスプライトなど存z

188 :デフォルトの名無しさん:2009/03/11(水) 20:17:11
DrawPrimitive使え

189 :186:2009/03/11(水) 20:20:45
あ、言葉間違ってましたか?すいません。
基本が全然わかってないです。。。

> 187
スプライトっていうかID3DXSpriteインターフェイスを使って画像を表示させてます。
この表示させてる画像にグラデーションがかけて表示することができるのかなって質問です。

> 188
ID3DXSprite使っちゃできないってことですか?

190 :デフォルトの名無しさん:2009/03/11(水) 20:27:18
できない
少しでも特殊なことしたいならID3DXSpriteはやめるべき

191 :デフォルトの名無しさん:2009/03/11(水) 20:32:13
>190
マジですか、ありがとうございます。


192 :デフォルトの名無しさん:2009/03/11(水) 21:35:44
>>170
SetLocationしなおさないとそれはそれで位置がずれてしまいました
DXUTgui.cpp内で参照されるマウスの位置にフレームバッファサイズとウィンドウサイズの比率分オフセット噛ますって方法で
強引な気はするのですが、対処できそうです、ありがとうございました。

193 :デフォルトの名無しさん:2009/03/11(水) 22:49:29
カメラが理解できないんですが、オブジェクトと同じようにカメラの位置と方向を決めて移動させるようには出来ないんですか?
オブジェクト全てにカメラの設定をしているように見えて理解できないんです
世界中の全てのものを見えてようが見えてなかろうが視点の設定をするのってものすごく無駄じゃないですか?

194 :デフォルトの名無しさん:2009/03/11(水) 22:51:33
DirectXにカメラなど無い

195 :デフォルトの名無しさん:2009/03/11(水) 22:51:52
それは自分で言ってる通り理解が間違ってる

196 :デフォルトの名無しさん:2009/03/11(水) 23:21:13
たぶんビデオカメラみたいに撮影したものが
画面に表示されているイメージなんだろうけど
3Dの世界では
ある位置にカメラがあると仮定したときに
全ての物体に対してそれがカメラに対してどの位置にあるかを計算して
さらにそれを2Dのスクリーンに投影したときにどうみえるかを計算して
初めて画面に描画することができる
ビデオみたいに光学で観測した結果を描画してるわけじゃない

197 :デフォルトの名無しさん:2009/03/11(水) 23:30:24
まじですか
オブジェクトをパッキングしてカメラを移動させるだけに作りかえるようなことは普通しないですか?
もしやめたほうがいいならやめます
オブジェクト毎に視界に入ってるかどうかをを判断させた後に入っているもののみビュー行列変換するであってますか?

198 :デフォルトの名無しさん:2009/03/11(水) 23:33:25
それとも処理落ちが始まるまで全オブジェクトビュー変換するほうがいいんですか?
いつ処理落ちがはじまるかわからないんですが、以外と早くきますか?

199 :デフォルトの名無しさん:2009/03/11(水) 23:37:53
プログラム云々以前に、日本語を何とかするのが先決だ。

200 :デフォルトの名無しさん:2009/03/11(水) 23:43:43
そもそもビュー変換が視界に入ってるかどうかの判定の第一歩なんだが
続く射影変換で視界の外にいるorその位置から見えないと判定されたピクセルは描画されない
この描画が一番重い部分なのでいかに描画するピクセルを減らすかの計算をしていると思えば良い

201 :デフォルトの名無しさん:2009/03/12(木) 00:01:51
・カメラの位置と向きを決める
・すべての物体を、カメラ基準の座標系に変換する
・カメラの範囲から飛び出ているものはごっそり描画を省く(←ここだけ手動)
・描画を行う

202 :デフォルトの名無しさん:2009/03/12(木) 00:08:20
>171
どゆこと?

203 :デフォルトの名無しさん:2009/03/12(木) 00:23:51
>171
どゆこと?

204 :デフォルトの名無しさん:2009/03/12(木) 00:40:10
ハードで計算できる部分を
わざわざCPUで判定するなんて
物体が増えたときに負荷になるだけじゃん

205 :デフォルトの名無しさん:2009/03/12(木) 01:15:12
そのハードに送るデータ量を減らすためにCPUで判定するんだろ
データ送信が一番重いんだから

206 :デフォルトの名無しさん:2009/03/12(木) 01:46:12
普通は全ての物体を変換するだろ
視界内かどうかの判定なんか考えるな
ロードするかしないかで分けろ

207 :デフォルトの名無しさん:2009/03/12(木) 06:29:06
そうなの?

208 :デフォルトの名無しさん:2009/03/12(木) 06:34:36
んにゃ

209 :デフォルトの名無しさん:2009/03/12(木) 07:09:57
地面のでこぼこにあわせて吸着するように物体を置くのはどうやるの?
物体のワールド座標Yに地面のワールド座標Yを影響させるのはわかるんだけど
どう計算すれば出てくるの?

210 :デフォルトの名無しさん:2009/03/12(木) 07:26:35
吸着とか意味わかんない
地面の高さを設定すれば単純にそこに出てくるだろ?
何が不満?

211 :デフォルトの名無しさん:2009/03/12(木) 07:34:06
そもそも地面のxzに対するy座標は取得できてんのかよ

212 :デフォルトの名無しさん:2009/03/12(木) 07:45:54
出来てない
Xファイルをワールド配置したあとのワールド座標xzのyって
ローカル座標をXファイルの原点をワールド座標に変換した値にプラスするの?
ワールド座標XZ上にある点を全て列挙する関数はないの?

213 :デフォルトの名無しさん:2009/03/12(木) 07:56:01
まずはモデルデータの読み込みを自前で作るところから始めた方がいい。
怠けて高レベル関数に頼っていたら何も出来ない。

214 :デフォルトの名無しさん:2009/03/12(木) 08:26:23
>出来てない
ざまぁwwww

215 :デフォルトの名無しさん:2009/03/12(木) 08:31:32
お前ら雪とか雨はどうしてる?

216 :デフォルトの名無しさん:2009/03/12(木) 09:36:20
傘を差します

217 :デフォルトの名無しさん:2009/03/12(木) 09:43:00
オレは家から出ない

218 :デフォルトの名無しさん:2009/03/12(木) 09:47:31
>>206
カメラが決して動かないならそれは正しい意見だ。

219 :デフォルトの名無しさん:2009/03/12(木) 10:03:28
雪とかは地面に近づいたら適当にアルファ値あげて消して、地面は雪シェーダで適当に白くして終わり

220 :デフォルトの名無しさん:2009/03/12(木) 12:15:27
D3DXでも任意の点の上空からレイを飛ばして
衝突までの距離を出せば地面の高さがわかるんでない?
使ったこと無いから速度は知らんけど

221 :デフォルトの名無しさん:2009/03/12(木) 12:49:31
完全に地面のメッシュが独立してるなら
D3DXIntersectでいけるかもね
ただ、その方法だとトンネルとかあったらアウトだけど

222 :デフォルトの名無しさん:2009/03/12(木) 14:53:40
本の目次に書いてあるんですが、高すぎて買えないので教えてください
GPUを使ったサウンドエンジンってどういうことですか?

223 :デフォルトの名無しさん:2009/03/12(木) 15:17:55
使いたい音源だけをデータに含ませて文字列だけでMIDIのように鳴らすのに使う
リアルタイムで音階など全てを単音から作り上げたり、効果音とかを複雑に変形させたりしてる。
これのおかげで大作でも音容量10MBいかなくなった

224 :デフォルトの名無しさん:2009/03/12(木) 15:19:32
だれか >>173 答えてやれよ・・・

225 :デフォルトの名無しさん:2009/03/12(木) 20:42:13
スキンメッシュの日本語訳を開始したぜ

226 :デフォルトの名無しさん:2009/03/12(木) 20:43:28
それはどういった向きの質問で?

227 :デフォルトの名無しさん:2009/03/12(木) 21:42:29
HLSLについて解説している書籍やサイトを見るとSetRenderStateで出来ていることをわざわざ書いていたりしますが、
これからはSetRenderStateを使わずに出来る限りHLSLで処理させる流れなのでしょうか?

228 :デフォルトの名無しさん:2009/03/12(木) 21:44:47
うん

229 :デフォルトの名無しさん:2009/03/12(木) 22:23:49
いまさらだけどボリュームテクスチャにレンダリングって何がしたいんだろうな。

230 :デフォルトの名無しさん:2009/03/12(木) 22:26:52
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /

231 :デフォルトの名無しさん:2009/03/12(木) 22:30:28
まぁ、DirectX10から実装された機能を9で使えますか?
なんて聞いても煽りレスしかつかんだろ
こういうことをやりたいんだけど
9で実現するにはどうすればいいですか?と聞いてくれればいいんだが

232 :デフォルトの名無しさん:2009/03/12(木) 22:51:01
いやマルチだからそこらじゅうに書きこしてる

233 :デフォルトの名無しさん:2009/03/12(木) 23:24:46
スキンメッシュはDXUT.cppは外してもいいの?

234 :デフォルトの名無しさん:2009/03/13(金) 00:21:11
スキンメッシュに関わらずUT使ってないならいらない

235 :デフォルトの名無しさん:2009/03/13(金) 07:15:09
初心者ですが、DXUTって現場で使われるんですか?
9の勉強中で、DXUTの膨大さに圧倒されてます・・・

236 :デフォルトの名無しさん:2009/03/13(金) 07:56:43
仕事ならDXUTなんて豆粒にしか見えないような膨大なライブラリを作ります。

237 :デフォルトの名無しさん:2009/03/13(金) 09:03:37
うちの会社の規模ではWindowsなんてミジンコです。

238 :デフォルトの名無しさん:2009/03/13(金) 09:06:59
>>236-237
レスどうもです。豆粒、Winミジンコなんて凄いですね・・・
本場は1000万ステップ越えるのでしょうか・・・
参考になりました!

239 :デフォルトの名無しさん:2009/03/13(金) 15:38:54
DXUTって何? 本体のライブラリ? 
マイクロソフトの描写ライブラリの分量を超えるプログラム作ってるって事?

240 :デフォルトの名無しさん:2009/03/13(金) 15:53:44
解決
http://msdn.microsoft.com/ja-jp/library/bb173249(VS.85).aspx

241 :デフォルトの名無しさん:2009/03/14(土) 02:43:46
ttp://www1.axfc.net/uploader/He/so/204674

バックバッファーに描画した物をGetDCで取得し、
BitBltで描画しようとおもったのですが上手くいきません。
どこが悪いのでしょうか?

242 :デフォルトの名無しさん:2009/03/14(土) 03:11:09
それよりも
BitBltの遅さを何とかするために開発されたDirectXを使っておいて
なぜそこで先祖がえりを起こすのか問い詰めたい

243 :デフォルトの名無しさん:2009/03/14(土) 03:11:14
d3dpp.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;

244 :デフォルトの名無しさん:2009/03/14(土) 03:49:22
>>243
そこのフラグを入れないとダメだったのですね。
ご教授頂きありがとうございました。

>>242
バックバッファーに描画したピクセルを編集したいと思ったのですが、
VRAM→MEMORY→VRAM という手順を踏んで描画すると物凄く遅くなってしまったのです。
なのでVRAM→MEMORYだけにして、編集後のピクセルをBITBLTでやれば少しはマシになるかなと。

それとも他にもっといい方法があるのですかね?

245 :デフォルトの名無しさん:2009/03/14(土) 04:01:49
バックバッファに描画しないでテクスチャに描いて最後にバックバッファに描くとか

246 :デフォルトの名無しさん:2009/03/14(土) 04:12:02
>>245
テクスチャに描画する為にはレンダーターゲットにしなくてならなくて、
レンダーターゲット指定の物はLockRect出来ないため、
D3DPOOL_SYSTEMMEMなサーフェスにGetRenderTargetDataする事で、
LockRectをして編集可能になる…という事であってますよね?
そこから更にUpdateSurfaceをして…となると遅くなってしまうのです。

もし何か間違いがありましたら指摘して貰えると助かります。

247 :デフォルトの名無しさん:2009/03/14(土) 04:16:05
ピクセルシェーダ使えばいいんじゃね?

248 :デフォルトの名無しさん:2009/03/14(土) 04:40:06
GDIで描くのにくらべたら何やっても速いって気もするけどね

ピクセルをどう編集したいかにもよるけど
俺もテクスチャに描いてシェーダーで加工してレンダリングに1票

249 :デフォルトの名無しさん:2009/03/14(土) 15:28:23
やりたい事に対して
自分の考えた方法の詳細を聞くよりも
やりたい事と条件を出して、どうすれば?っての方が断然早いw

…でも大体は提示された方法を理解出来ない、と
だから自分の考えた方法が頓珍漢なんだがね…

250 :デフォルトの名無しさん:2009/03/14(土) 15:54:22
WindowsXP DX9 2009/04
シェーダー(HLSL)の勉強をしています。
頂点シェーダーを普通のXファイルに使うのは問題ないのですが、(DXの)スキンメッシュでは上手く行きません。
DrawMeshContainer関数内で「g_SkinningMethod」が常に「D3DNONINDEXED」を通るのでそこにBeginPass等を書くと
ボーンかウェイトが正しく反映されず頂点(面)が分離して表示されてしまいます。
少し下を見ると「if (g_SkinningMethod == D3DINDEXEDHSLSVS)」があったのでここを通せばいいのかと思って
「g_SkinningMethod」の値を書き換えると実行中にエラーが出ました(SetSoftwareVertexProcessingにて)。
スキンメッシュそのものは「メタセコイア」から「rok de bone2」を経由して出力したアニメーション付きXファイルです。

そこで2点伺いたいことがあります。
・頂点シェーダーを使いたい場合はD3DINDEXEDHSLSVSの部分を通して使うのは正しい(意図した)方法なのか
・D3DINDEXEDHSLSVSを通すために何かすべき事があるのか(スキンメッシュのコンバートなど)

特異なことをやっていますが、もし分かる方がいればレスをお願いしますorz

251 :デフォルトの名無しさん:2009/03/14(土) 15:55:24
訂正 バージョンは2009/04ではなくて2008/04です

252 :デフォルトの名無しさん:2009/03/14(土) 16:15:11
シェーダ上でウエイトの計算をしていないからだろ

253 :デフォルトの名無しさん:2009/03/14(土) 17:25:12
というか値書き換えてもエラーなんてでないだろ

254 :デフォルトの名無しさん:2009/03/14(土) 20:33:33
>>247>>248
なるほど、そういうものがあるのですね。調べてみます。

ttp://www1.axfc.net/uploader/He/so/204937

もう1つ質問なのですがテクスチャを貼り付けたポリゴンを、
rhwを1.0fにして100%表示させているのですが、元の画像よりぼやけて見えます。
これを回避するにはどうしたら良いのでしょうか?

255 :デフォルトの名無しさん:2009/03/14(土) 20:41:12
ヘルプを読むことだな

256 :250:2009/03/14(土) 21:07:08
>>252
ありがとうございます。
若干前へ進めました。
pMesh->DrawSubsetの上でSetTransform(D3DTS_WORLDMATRIX(i), &matTemp )をやっており、
この値を正しく渡すことが出来れば問題は解決しそうです。
しかし、これを繰り返す回数である「pMeshContainer->NumInfl」に何が入っているのか(常に4?)、
どうやって頂点シェーダーでどの行列を使うのかを指定してやるのかが分かりません。
前者に関しては100とか200の数値が入るとHLSLに配列として保持させるのは現実的ではありませんよね。
後者は前者が4固定だとすれば、頂点情報にフラグがあればそれを取得することで解決しそうです。
そこら辺について詳しい片はいらっしゃらないでしょうか。

257 :デフォルトの名無しさん:2009/03/14(土) 21:14:48
>どうやって頂点シェーダーでどの行列を使うのかを指定してやるのかが分かりません。

なんでそんな基本事項が分からないのかが分からない。

258 :250:2009/03/14(土) 23:18:24
>>257
現在使っている頂点シェーダーは以下の通りです。
float4 TestVS(
float4 Pos : POSITION,
float3 Normal : NORMAL,
float2 TexCoord0 : TEXCOORD0 ) : POSITION
{
float4 a = mul( Pos, gMatrixWVP );
return a;
}

gMatrixWVPはpMesh->DrawSubsetの前にmatWorld * matView * matProjectの結果を入れています。
上記で期待している結果はシェーダーをかけてもかけなくても同じ形状。
matWorld(gMatrixWVP)の値を変えることで解決はするのでしょうが、
pMesh->DrawSubsetで複数の頂点が描画されるのでバラバラに設定できない。
そもそもどの頂点がどの行列を使うのかを知り得ないので躓いています。
頂点シェーダー内で各頂点通常描画と同じワールド座標が取得できればいいのですが無理ですよね・・。

259 :デフォルトの名無しさん:2009/03/14(土) 23:27:17
>そもそもどの頂点がどの行列を使うのかを知り得ないので躓いています。
頂点の情報の中に含まれてるだろ
全然分かっていないんだから、
D3DXを使わずに直接頂点を設定するところからやり直せ

260 :デフォルトの名無しさん:2009/03/14(土) 23:39:11
とりあえず「スキンメッシュ シェーダ」でぐぐるくらいのことはしたのか?
それっぽいのがゴロゴロ出てくるぞ?

261 :デフォルトの名無しさん:2009/03/15(日) 00:27:59
そもそもSDKのサンプルにシェーダーで動くサンプルがそのまま入ってますやん

262 :デフォルトの名無しさん:2009/03/16(月) 16:16:57
規制が解除されてたら
HLSL用スキンメッシュのサンプルをうpする

263 :デフォルトの名無しさん:2009/03/16(月) 16:30:30
おめでとう

264 :デフォルトの名無しさん:2009/03/16(月) 18:02:33
日本語ドキュメント来たな

265 :デフォルトの名無しさん:2009/03/16(月) 18:11:55
金曜に来てたのに誰も気づかなかったのか
ttp://msdn.microsoft.com/ja-jp/library/cc411364.aspx

266 :デフォルトの名無しさん:2009/03/16(月) 18:40:48
>>262
くそう、いつのまにか全規制からVIPのみ規制に切り替わってた
いまコピペの嵐でサンプル作った

・DirectX9
・基本ベースはSDKサンプルのチュートリアル(非DXUT)
・スキンメッシュ部分はSkinnedMeshからの部分コピペ
・HLSLはMultiAnimationからほぼそのまま
・アニメーション制御はまるぺけを参考

・デバイスのリセットに未対応
・キャラクタ(インスタンス)のコピーとか無理
・影響度が一つも設定されてない頂点のあるメッシュは表示しない
・テクスチャの設定されてないマテリアルは真っ黒
全部対応できるけどお手軽最小限ってことでこれらは自分でなんとかしてね


で良くて二人以上希望者がいたらうp

267 :デフォルトの名無しさん:2009/03/16(月) 18:45:12
キボンヌ

268 :デフォルトの名無しさん:2009/03/16(月) 18:45:58
あ、俺もおねがいします

269 :デフォルトの名無しさん:2009/03/16(月) 18:47:44
俺も俺も

270 :デフォルトの名無しさん:2009/03/16(月) 19:09:44
一応うp
あまりデバックしてないから動かなかったら簡便な
あまりに不評なら即削除

ttp://www5b.biglobe.ne.jp/~mya_a/DirectX/Vertices.zip

271 :デフォルトの名無しさん:2009/03/16(月) 19:54:59
これがどうすごいか解説ヨロ

272 :デフォルトの名無しさん:2009/03/16(月) 19:57:27
よくわからないけどいただきました。
よくわからないけどべんきょうにつかわせていただきます。

273 :デフォルトの名無しさん:2009/03/16(月) 20:02:22
別にどうすごくもないただのサンプルでしょ
動作原理を知らなくてもスキンメッシュを再生したい人には良いんでない?
すでにできてる人にはあまり意味ないかと

274 :デフォルトの名無しさん:2009/03/16(月) 20:20:12
>>270
素かワザとか判断に迷う所だが
簡便じゃなく勘弁な、ワザとだったら勘弁な

275 :デフォルトの名無しさん:2009/03/16(月) 20:22:14
さんくす
少ないファイル数でまとめてるとわかりやすいわ

276 :デフォルトの名無しさん:2009/03/16(月) 21:21:53
あんまり甘やかすなよw
ここがDirectXの一つの山場なんだから

277 :デフォルトの名無しさん:2009/03/16(月) 21:29:28
くやしいのうwwwくやしいのうwww

278 :デフォルトの名無しさん:2009/03/16(月) 21:49:17
CDXUTMeshってググってもあまり引っかからないのですが
一般的にはあまり使いませんか?

279 :デフォルトの名無しさん:2009/03/16(月) 22:05:05
最適化とか勝手にやってくれるし
UTベースでCXFileMesh使うならいろいろ手間が省けていいんでない?

280 :デフォルトの名無しさん:2009/03/16(月) 22:07:42
ごめ
×CXFileMesh
○LPD3DXMESH

281 :デフォルトの名無しさん:2009/03/17(火) 09:13:47
>>265
SUGEEEEEEEEEEEE!!!
やっと日本語版の最新がきたのかw
D3DXAnimationControllerが最新対応になっていて感動した!

でもバグも直せ

282 :デフォルトの名無しさん:2009/03/17(火) 13:39:48
>>265
久しぶりの翻訳は(日本法人)新社長の公約のおかげかな。
こういう時期なら翻訳をねじ込めるかもしれないので
翻訳して欲しい資料についてはフィードバックしておくと良いのかも。

ttp://ascii.jp/elem/000/000/165/165823/

>樋口氏は、「ITエンジニアの皆様に対するお約束」として、エンジニアからの
>要望が強かったという「技術資料の不足」「製品の品質」「分かりにくいライセンス」
>などの問題の解決に当たっていることを説明。
>過去6カ月間に、1万ページ強の技術資料を日本語翻訳した経過を報告し、
>「さらに今後10カ月間で1万ページの技術資料を追加翻訳する」と約束した。

283 :デフォルトの名無しさん:2009/03/17(火) 15:57:51
つまり、今後の質問は全てヘルプを見ろってことでおk?

284 :デフォルトの名無しさん:2009/03/17(火) 16:03:16
別に日本語サンプルできたからって全然変わらないだろ

285 :デフォルトの名無しさん:2009/03/18(水) 10:52:39
スキンアニメーションに使うXファイルを作っているのですが
歩行アニメーションを作る場合は3Dソフト上で場所を動かさず歩行モーションだけを作って
ゲームのほうでキー入力によって位置を移動しながらアニメーションを再生させるんでしょうか


286 :デフォルトの名無しさん:2009/03/18(水) 11:00:17
むしろxファイル上で位置を変えようと思ったお前の発想が凄い
そのうちどこかで使おうと思った

287 :デフォルトの名無しさん:2009/03/18(水) 11:09:47
>>285
そう作ってもいいし、
xファイル上で移動するように作っておいて、その移動量を毎フレゲーム内に加算、モーションの方でその移動をなかったことにする
前者だとすべるような動きになりがちだけど後者モーションと移動量をリンクできる

288 :デフォルトの名無しさん:2009/03/18(水) 11:49:55
ありがとうございます

とりあえずはゲームのほうで移動するようにしてみます

289 :デフォルトの名無しさん:2009/03/19(木) 17:03:32
スキンメッシュが1秒くらいの周期で動きが異常に速くなったり戻ったりを繰り返す
エスパーの方どこが問題かわかります?

290 :デフォルトの名無しさん:2009/03/19(木) 17:42:55
時間の進め方が

AdvanceTime ( 1/60) ;
とすべきところを

time += 1/60 ;
AdvanceTime ( time ) ;

そしてるとか

291 :デフォルトの名無しさん:2009/03/20(金) 03:24:49
>>290
かなり良い線行ってましたわ
直接数字入れたら直った
変数timeがあっちこっちでごっちゃになってたみたいだサンクス!
でもクラスに移植する前はマトモに動いてたのになー

292 :デフォルトの名無しさん:2009/03/20(金) 12:50:06
シェーダーを使ったメッシュって元々設定してたライトの影響を受けることはできますか?
シェーダーを使ったメッシュに新しく設定しなきゃ駄目ですか?

293 :デフォルトの名無しさん:2009/03/20(金) 13:47:27
で、新しく設定しないで実行した結果はどうなった?

294 :デフォルトの名無しさん:2009/03/20(金) 13:51:59
光が当たりませんでした。何か方法はありますか?

295 :デフォルトの名無しさん:2009/03/20(金) 14:01:30
描画速度の計測ってtimeGettimeなどで時間計測すればいいんでしょうか?
余りにも短い時間で終了してしまう場合は、その処理を何百回とか繰り返して
負荷をかけるだけで大丈夫ですか?それとも同じ処理だと二回目以降は高速になります?

296 :デフォルトの名無しさん:2009/03/20(金) 14:08:46
>>292
元々へったくれもなく、自分で計算内容を書くのは理解しているのか?

>>295
処理しないなら休ませろ

297 :デフォルトの名無しさん:2009/03/20(金) 14:48:16
物体を回転させるのはわかったんですが
物体の周りで同じ半径で物体を円運動させるにはどうすればいいんですか?

298 :デフォルトの名無しさん:2009/03/20(金) 17:02:56
まず数学から学んだほうが早いんじゃね?とか思うのは俺だけか。
行列計算とか色々関数があるから手軽になってるけど、根本的な内容を理解していないと>>297のような状態に。

299 :デフォルトの名無しさん:2009/03/20(金) 17:07:33
必要なのは三角関数だけだけどな

300 :デフォルトの名無しさん:2009/03/20(金) 17:12:43
月の裏側見えちゃうじゃん!

301 :デフォルトの名無しさん:2009/03/20(金) 17:31:58
>>296
>処理しないなら休ませろ
いや処理にかかる時間をはかりたいのです。

例えば、3つのテクスチャーで作られるモデルがあるとして、それを5箇所に描画する場合って
モデル1つづつ描画していくのと、1つめのテクスチャーをセットして、そのテクスチャが必要な部分だけ5箇所に描画、2つめのセットして描画
って繰り返すのとどっちが速いんでしょうか?

302 :デフォルトの名無しさん:2009/03/20(金) 17:42:04
切り替えなくてすむのなら切り替えない方が速い

303 :デフォルトの名無しさん:2009/03/21(土) 17:53:13
フレーム4個うちボーン2個のスキンメッシュがあって、
頂点バッファをダンプするとDWORDのBlendIndicesの値には
ボーンのインデックスの00か01しか現れないと思ったのですが
3f800000だったり3f7ffb37のような値になっています。
これはどういう計算でこうなるのでしょうか?

描画は正常に表示できています。シェーダ内ではD3DCOLORtoUBYTE4を使ってます。


304 :デフォルトの名無しさん:2009/03/21(土) 18:16:57
プログラム言語なんて所詮コンピュータに人間のやりたいこと伝える通訳でしかねぇんだよ。
通訳なんて自分自身は生涯主役になれない黒子だろ?脇役だろ?奴隷だろ?
伝わりさえすりゃそんなもんの優劣なんてどうでもいいんだよ。

何でも出来る?
そんなもんは「私はただの通訳じゃありません。ヒンタボ語も使えます!」と
自信満々に言ってるようなもんだ。

そんなもん使う側の人間にすりゃ
「はぁそうですか。便利そうですね。…ヒンタボに行く人にとっては。」レベルの
ゴミ自慢だっていい加減気づこうなw


まぁ、これに懲りたら挑発しにくんな。奴隷。

305 :デフォルトの名無しさん:2009/03/21(土) 18:19:26
ヒンタボ語に泣いたw
おまえはたけしかwww

306 :デフォルトの名無しさん:2009/03/22(日) 12:54:13
http://msdn.microsoft.com/ja-jp/library/bb174832(VS.85).aspx
を見るとsThumbLXだけ値の範囲が違うのですが、表記のミスなのでしょうか。
だとするとどちらが正しい値なのですか?

307 :デフォルトの名無しさん:2009/03/22(日) 14:06:59
コリジョンクラスを作ろうと思うのですが
モデル管理クラスはプレイヤーとその他で2つ別のを作るのと同じクラスで管理するのはどちらがいいですか?

アドバイスお願いします

308 :デフォルトの名無しさん:2009/03/22(日) 16:33:52
>>306
表記ミスだね、符号付16bit整数は -32768 〜 32767

309 :デフォルトの名無しさん:2009/03/22(日) 17:44:23
シェーダープログラミングで点光源ってどうやるの?
シェーダーにするとライトの設定異常に面倒じゃない?おれが間違った解釈してるのかな?

310 :デフォルトの名無しさん:2009/03/22(日) 17:57:08
MMORPG作ったけど


311 :デフォルトの名無しさん:2009/03/22(日) 18:13:44
ふむ?

312 :デフォルトの名無しさん:2009/03/22(日) 19:32:50
ゲームパッドのデバイス作成しようと思ったら、ウィンドウハンドル必要だけど、
コンソールアプリではDirectInput使えない?

313 :デフォルトの名無しさん:2009/03/22(日) 21:28:31
使える

314 :デフォルトの名無しさん:2009/03/22(日) 22:18:27
.xのアニメーション(スキンメッシュ)ってもしかしてシェーダー必須?

315 :デフォルトの名無しさん:2009/03/22(日) 22:28:53
いいえ

316 :デフォルトの名無しさん:2009/03/24(火) 15:12:35
Download details: DirectX Redist (March 2009)
ttps://www.microsoft.com/downloads/details.aspx?FamilyID=0cf368e5-5ce1-4032-a207-c693d210f616&DisplayLang=en
Download details: DirectX SDK - (March 2009)
ttps://www.microsoft.com/downloads/details.aspx?FamilyID=24a541d6-0486-4453-8641-1eee9e21b282&DisplayLang=en


317 :デフォルトの名無しさん:2009/03/24(火) 21:43:04
>>312
コンソールでもハンドルは取れるぞ

318 :デフォルトの名無しさん:2009/03/25(水) 00:40:04
ID3DSprite を使ったスプライト表示について教えて下さい。

テクスチャを準備して、ビットマップを表示しているのですが
縦横比をビットマップと同じように表示するにはどうすれば
良いでしょうか?

よろしくお願いします。

319 :318:2009/03/25(水) 00:53:42
すみません、環境は DirectX9 で、表示はWindowです。
Windowサイズを変えるとスプライトの縦横比が変わるのを
防ぎたいです。

宜しくお願いします。

320 :デフォルトの名無しさん:2009/03/25(水) 01:27:58
画面の大きさ変わったらそれに応じた行列作って与えればいいんじゃない?

321 :デフォルトの名無しさん:2009/03/25(水) 01:31:27
>>320
ウィンドウの縦横比とスプライトの縦横比の関係が
どうなっているのか分からないのですが、これを確認する
方法がありますでしょうか?

322 :デフォルトの名無しさん:2009/03/25(水) 07:11:28
そもそもID3DSpriteなど存在しない

323 :デフォルトの名無しさん:2009/03/25(水) 07:22:23
>>319
Windowサイズを変更できないようにしろ

324 :デフォルトの名無しさん:2009/03/25(水) 08:41:13
ウインドウサイズが変更さたら、D3Dデバイスも変更するといいと思う

325 :デフォルトの名無しさん:2009/03/25(水) 15:19:54
Xファイルの再生でアニメーションコントローラーを使って
指定したフレームから指定したフレームまでの再生ってできますか?

1つのXファイルに歩行・ジャンプ・座るなどのモーションを詰め込んでどうすればいいか悩んでます;;

326 :デフォルトの名無しさん:2009/03/25(水) 15:31:43
できるけど
切り替えやモーション移行時の合成のことを考えたら
アニメーションセットを複数持った方が楽

327 :デフォルトの名無しさん:2009/03/25(水) 15:45:36
>> 326
ありがとう
アニメーションセット 複数
でググったら色々出てきたので勉強してみます

328 :デフォルトの名無しさん:2009/03/25(水) 15:48:13
カメラでビュー変換した後のmatrixを、移動したり回転したりするには、どう計算したらいいんですか?

329 :デフォルトの名無しさん:2009/03/25(水) 15:55:21
板違い

330 :デフォルトの名無しさん:2009/03/25(水) 16:01:15
ビュー行列にあらかじめ移動行列やら回転行列やら掛けとけば?

331 :デフォルトの名無しさん:2009/03/25(水) 16:40:54
板違い
??

332 :デフォルトの名無しさん:2009/03/25(水) 16:53:07
>>330
カメラの動きを出力するツールがあり、その出力データを他のツールで読み込み再生したいんです。
しかしその出力データにはビュー変換後のmatrixしか入っておらず、変換前のデータにあらかじめどうこうというのは出来ないんです。

333 :デフォルトの名無しさん:2009/03/25(水) 16:59:43
カメラの位置と向きから逆計算すればよい

334 :デフォルトの名無しさん:2009/03/25(水) 17:11:33
後だし情報多すぎだな
もう回答はつくまい

335 :デフォルトの名無しさん:2009/03/25(水) 17:35:02
できたあああああああああ。
ひゃっっほおおお
カメラですが、みなさんありがとうございました。
上手く行かない原因がわかりました。
ツール側のxyzが逆になっていただけでした。
transrateだけで行けないわけがないのに、それすらできないなんてPG人生終わったな、ぐらい追い詰められてました。
幾何学の基本的な公式から読み直したり(ry
ありがとー!

336 :デフォルトの名無しさん:2009/03/25(水) 17:52:12
どういたしまして^^

337 :デフォルトの名無しさん:2009/03/25(水) 19:01:18
DirectX9に対応してないビデオカード使ってる奴がうざいんだけど
どうすればいいですか

338 :デフォルトの名無しさん:2009/03/25(水) 19:02:21
暗殺しろ

339 :デフォルトの名無しさん:2009/03/25(水) 19:04:05
何作ってるかによるな

340 :デフォルトの名無しさん:2009/03/25(水) 19:08:56
この手のクレームは無視一択じゃね

341 :デフォルトの名無しさん:2009/03/25(水) 19:10:22
必要環境にDirectX9と書いてあるなら対応する必要なし

342 :デフォルトの名無しさん:2009/03/25(水) 19:14:41
必須環境なのに対応しろって苦情が入るのでうぜーとか
下の方の環境も拾おうとしてる所為で全力で戦えなくてイライラしてるのか
両対応でできる限り遜色ない見栄え要求されて大変とか

84 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)