【C++】 DirectX初心者質問スレ Part21 【C】
at TECH
[前50を表示]
200:デフォルトの名無しさん
09/01/19 00:13:20
もしかして入れても反映しないから悩んでるんじゃね?
光源計算してないときはLightEnableをオフに設定しないと表示されなくてだな
ってそんなこと聞いてない?
201:デフォルトの名無しさん
09/01/19 11:54:28
例を見せてと言ってるんだし、>>198でよさげ・・・
202:デフォルトの名無しさん
09/01/19 11:55:20
失敗してるんなら、自分のとこでどうやったらどうなったくらい書けば早いのにな。
203:デフォルトの名無しさん
09/01/19 17:07:08
test
204:198
09/01/19 17:08:22
D3DCOLORVALUE col = D3DCOLOR_COLORVALUE(, , ,);
でcolを引数で渡そうとしてました・・・
205:デフォルトの名無しさん
09/01/19 17:14:35
やっぱり判らない。 ていうかお前が判ってないから無理。
さっさとCの初心者スレでソース*全部*晒して質問してこい。
206:デフォルトの名無しさん
09/01/19 17:16:02
>> すいません勉強不足でした
ちなみに187さんの例で解決しました
207:デフォルトの名無しさん
09/01/19 17:34:24
初期化したいってことか?
D3DCOLORVALUE colorValue = {0,0,0,0};
ってC/C++の話だな。参照(&が付いてる)の話だったらこれもC++
208:デフォルトの名無しさん
09/01/19 22:29:43
D3DXMATRIXA16
をnewした後にdeleteするとメモリーのバグを引き起こすんだが、解決策はないものか・・
209:デフォルトの名無しさん
09/01/20 12:35:27
D3DXMATRIXを使うとか。
210:デフォルトの名無しさん
09/01/21 00:17:09
そもそもバグがあるとは思えないが、
A16の実装自体たいしたことないし
自前の作れば?
211:デフォルトの名無しさん
09/01/21 08:46:50
>>208
ヘッダファイルを見れば分かるけど、
A16系は16byteアライメントのためにnewをオーバーロードしてる。
ステップ実行でちゃんとこのnew/deleteが呼ばれてるか確かめてみれば?
#define new DEBUG_NEW
とかやってて死亡とかありがち。
212:デフォルトの名無しさん
09/01/21 17:02:37
トゥルータイプ形式のアンチエイリアスがかかったフォントを表示するにはどのようにすればいいのでしょうか。
GetGlyphOutlineのAPI使ってもグレースケールのビットマップデータしか得られませんでした。
213:デフォルトの名無しさん
09/01/21 17:24:46
そのグレースケールのデータを
α値としてテクスチャに書き込んで表示
参考
URLリンク(marupeke296.com)
214:デフォルトの名無しさん
09/01/21 17:29:34
それって結局出力も一色になりませんか?
それとも半透明化するときに、うまい方法があるのでしょうか・・・
215:デフォルトの名無しさん
09/01/21 17:37:19
グレースケールのフォントをα値にして半透明で描画すれば、それでちゃんと
アンチエイリアスかかるが、何を求めているんだ?
216:デフォルトの名無しさん
09/01/21 17:39:45
>>214
言ってる意味が分からん
A8R8G8B8とかA4R4G4B4とかαチャンネル付きテクスチャを作る
RGBは表示したいフォントの色にして
Aの値にグレースケールの値を入れる
αの設定(テクスチャのα値*ポリゴンのα値)
デバイス->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
デバイス->SetTextureStageState(0, D3DTSS_ALPHAOP , D3DTOP_MODULATE );
デバイス->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
217:デフォルトの名無しさん
09/01/21 17:40:38
XPだと、ディスプレイのRGB出力の並びに応じて、ピクセル未満の補間をするために
文字のRGBを設定していると思うのですが、その情報をどのように手にすればいいのかと思いまして・・・
218:デフォルトの名無しさん
09/01/21 17:43:14
ClearTypeをしたいなら、GetGlyphOutlineにはそういう機能はない。
GetGlyphOutlineは単純に大きめに描画して縮小したデータを返すだけ。
219:デフォルトの名無しさん
09/01/21 17:44:59
それ以前にアルファチャンネルを理解してない悪寒
220:デフォルトの名無しさん
09/01/21 17:48:39
端的にいうと、Color=AARRGGBB
↑ここでしょ
普通にフォントを表示することはすでにできています。
221:デフォルトの名無しさん
09/01/21 17:52:57
じゃあ、そこの色(値)がどうRGBに影響するのか言ってみろ
222:デフォルトの名無しさん
09/01/21 18:10:06
描画先 Ad Rd Gd Bd 描画元 As Rs Gs Bsとすれば
As/255=a 1-a=bとおいて
結合後 (Ad) (Rs*a+Rd*b) (Gs*a+Gd*b) (Bs*a+Gd*b)でしょ。
単にかけ合わせの比率じゃないんですか?
223:デフォルトの名無しさん
09/01/21 18:11:48
ClearTypeは、CLEARTYPE_QUALITYかCLEARTYPE_COMPAT_QUALITYを
指定してフォント作って、GDIのテキスト描画機能を使うくらいしかAPIでの
サポートは無いと思う。
224:デフォルトの名無しさん
09/01/21 18:28:05
文字の縁の外にむかって透明度を上げていけば
背景と馴染んでアンチエイリアスがかかるよね?って話
どういう段階で透明度を変えるかの情報としてグレースケールの情報を使う
225:デフォルトの名無しさん
09/01/21 21:58:00
デバイスをリセットする時に、テクスチャとかも一度破棄しないといけない場合があるけど、
その場合って元の画像ファイルを再び最初から読み込むのがいいの?
それとも、アプリケーションの一時ファイルみたいなのに画像のビット列だけ保存してしまうとか、どうしてるの?
226:デフォルトの名無しさん
09/01/21 22:10:18
状況に合わせて自分の好きなようにやれよ。
なんで何でもかんでもお伺いを立てて、逐次指示されないと行動出来ないんだよ?
227:デフォルトの名無しさん
09/01/21 22:12:07
好きにすればいいんじゃない?
その辺の判断がつかないならおとなしくD3DPOOL_MANAGED使っとけ
DirectX10からデバイスロストなくなるみたいだし
いずれは気にしなくてよくなる領分だ
228:デフォルトの名無しさん
09/01/22 00:29:38
>>DirectInputのDIJOYSTATE2のlYって下が+で上が-ですか?
229:デフォルトの名無しさん
09/01/22 05:51:55
LightWaveでボーン仕込んでXファイルのエクスポータで出力した。
そのファイルを読み込んでウエイトの値を調べたらどの頂点も0だったんだけど
これって正常に出力されてないってこと?
230:デフォルトの名無しさん
09/01/22 06:31:05
エクスポータがどこまで対応してるのか調べた方がいいんじゃないかな。
あとたぶんここじゃなくてLightWaveのスレで聞くべきじゃないかなそれは。
231:デフォルトの名無しさん
09/01/22 18:10:03
// DirectInputオブジェクトを作成
if(FAILED(DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (VOID**)&m_pDInput, NULL))) {
return E_FAIL;
}
// DirectInputDeviceオブジェクトを作成
if(FAILED(m_pDInput->CreateDevice(GUID_SysMouse, &m_pKeyDevice, NULL))) {
return E_FAIL;
}
// デバイスをマウスに設定
if(FAILED(m_pKeyDevice->SetDataFormat(&c_dfDIMouse2))) {
return E_FAIL;
}
// 協調レベルの設定
if(FAILED(m_pKeyDevice->SetCooperativeLevel(hWnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND))) {
return E_FAIL;
}
// デバイスを取得する
m_pKeyDevice->Acquire();
この設定で初期化して実行したのですがこのアプリが起動しているときに他のウィンドウをクリック
すると強制終了してしまいます
原因エスパーしてみてもらえませんか
お願いします
232:デフォルトの名無しさん
09/01/22 18:11:51
デバッグしなさい
233:デフォルトの名無しさん
09/01/22 18:56:16
解決しました
return E_FAILで落ちてました
ありがとうございます
234:デフォルトの名無しさん
09/01/22 21:23:31
スレリンク(gamedev板:609-番)
235:デフォルトの名無しさん
09/01/22 21:33:01
すくなくとも公式サイトのはちゃんと出力される
236:デフォルトの名無しさん
09/01/22 22:35:00
229です
もしかして、D3DXLoadMeshFromXで読み込んだメッシュの頂点情報ってウエイトは含まれてないんですか?
237:デフォルトの名無しさん
09/01/22 22:44:34
ファイル自体のウエイトはどうなってるんだ?
238:デフォルトの名無しさん
09/01/22 23:33:50
>>237
ファイル見たら、ちゃんと設定されてました
ってことは読み込みがだめなのか・・・
239:デフォルトの名無しさん
09/01/23 00:18:05
>>238
スキンメッシュは専用の関数が合ったはずだが
240:デフォルトの名無しさん
09/01/23 09:09:25
\(^o^)/ I'm a dreamer! ひそむパワー!
ヘ(^o^)ヘ
|∧ 私の世界
/ /
(^o^)/
/( ) 夢と恋と不安で出来てる
(^o^) 三 / / >
\ (\\ 三
(/o^) < \ 三 でも想像もしないもの
( /
/ く 隠れてるはず!
241:デフォルトの名無しさん
09/01/23 09:10:16
DirectInputでマウスやキーボード使うなよ
てかXInputの時代
242:デフォルトの名無しさん
09/01/23 12:23:34
Direct3Dで複数のウィンドウに同一のテクスチャを表示したいのですが、
この場合、ウィンドウごとにデバイスを作成して、
デバイスごとにわざわざ同じテクスチャを何度も読み込むしかないのでしょうか。
・一つのテクスチャを複数のデバイスで共用する
あるいは
・一つのデバイスで複数のウィンドウに描画する
というようなことは出来ないのでしょうか。どなたがご教示下さい。
243:デフォルトの名無しさん
09/01/23 12:28:45
DirectX3D始めようと思うんですが、なにからすればいいですか?
どのぐらいの期間である程度使えるようになってくるんですか?
244:デフォルトの名無しさん
09/01/23 12:35:54
なにが分かっていないのかも分かってない人間に
ものを教えることは非常に難しい
とりあえず出来る範囲で自分でやって
具体的な質問が出来たときにもう一度おいで
245:デフォルトの名無しさん
09/01/23 13:12:03
>>243
sample動かしてソースを眺めてあきらめろ
246:デフォルトの名無しさん
09/01/23 13:24:42
もう一度おいでとか言われるとつらい
あきらめろとか言われると燃える
しかしthx
247:デフォルトの名無しさん
09/01/23 14:05:04
>>242よく知らんけどデバイスの画素フォーマットが同じなら使い回せんじゃねーの
248:デフォルトの名無しさん
09/01/23 14:14:03
1. 開発環境をダウンロードする。
2. 現在の技量と熱意次第だね。とりあえず、そんなことも判らない君は技量は初学者レベルですぐ飽きると思うので 100年はみておこう。
249:デフォルトの名無しさん
09/01/23 14:19:22
D3DPRESENT_PARAMETERS で hDeviceWindow をとっかえひっかえして reset
すればいけるんじゃねーの?
あ、そうすると、テクスチャいちいち読み直す必要があるのか。だめじゃん。
250:デフォルトの名無しさん
09/01/23 14:25:53
>>242
つCreateAdditionalSwapChain
251:249
09/01/23 14:30:40
なんだ、Present の第三引数を描画したいウィンドウにすれば良さそうじゃん。
252:デフォルトの名無しさん
09/01/23 15:31:21
IDirectXFileから、ID3DXFileに変わって、
保存方法の流れがヘルプにかかれなくなったこともあって、
なんかアホみたいに使いにくくなっている気がするんですけど、
IDirectXFileData::GetData的なものは諦めるとしても、
IDirectXFileSaveObject::SaveTemplatesの様な動作をさせるコトてできないんですか?
253:デフォルトの名無しさん
09/01/23 16:47:47
質問です。
何か手順の間違いの指摘や、避ける方法はないでしょうか?
下記のように、すでにAnimationSetに登録されているAnimationを削除した後、新たにアニメーションを追加するとメモリーリークするようです。
DirectXの初期化と、下記コードのみの最小構成でも起こりました。
下記ですと
D3DX: MEMORY LEAKS DETECTED: 4 allocations unfreed (54 bytes)
54byteということで、"1\0"で2バイト、RSTそれぞれを合計すると20+16+16=52ですから、丁度アニメーションがそのままリークした換算となります。
これは数を増やしてみたり、渡すRSTの量を変えたりしても同様の結果がでました。
削除だけ。追加だけという場合はリークせず、削除&追加をした時のみリークするようです。
察するに、削除といっても内部ではカウンターを減らしているだけで、追加の際「delete せずに上書きしてしまう」ことによるライブラリ側のケアレスミスな気がします。
Microsoft DirectX SDK (March 2008)
Microsoft DirectX SDK (November 2008)
両方で再現しました。
以下コードです。
CComPtr<ID3DXKeyframedAnimationSet> test;
D3DXCreateKeyframedAnimationSet("Test", 4800, D3DXPLAY_LOOP, 2, 0, NULL, &test);
D3DXKEY_QUATERNION r; // 中身を入れていませんが、中身をきちんとした値にしても結果は同じでした
D3DXKEY_VECTOR3 s;
D3DXKEY_VECTOR3 t;
HRESULT hr;
hr = test->RegisterAnimationSRTKeys("1",1, 1, 1, &s, &r, &t, NULL);
hr = test->RegisterAnimationSRTKeys("2",1, 1, 1, &s, &r, &t, NULL);
hr = test->UnregisterAnimation(0);
hr = test->RegisterAnimationSRTKeys("3",1, 1, 1, &s, &r, &t, NULL);
254:デフォルトの名無しさん
09/01/23 16:50:08
追加情報です。
どうやらリークするのは、上書きした側の "3" のアニメーションのようです。
"3AAAA"など、最後のアニメーションの名前を長くしたところ、それにあわせてリーク量が増えました。
つまり「新規登録したアニメーションはちゃんとdeleteするが、上書き登録したアニメーションはdeleteしない」という動きのようです。
255:デフォルトの名無しさん
09/01/23 18:18:34
容易にライブラリのバグだと疑うな。
256:242
09/01/23 18:49:22
>>247 >>249 >>250
いくつも方法があるみたいですね。一つ一つ検討してみることにします。
御回答どうもありがとうございました。
257:デフォルトの名無しさん
09/01/23 20:36:57
勝手に Release されてたら気持ち悪いだろうが。
258:デフォルトの名無しさん
09/01/23 20:42:13
ID3DXFileSaveObject使って、STRINGをXファイルに保存するとき、
何故か2バイト文字が変に変換されて保存されてしまいます。
たとえば、
"田中太郎 -abcd- 鈴木次郎"
なら、
"\223\田\222\中\221\太\230\郎\201\ -abcd- \227\鈴\226\木\216\次\230\郎"
の様な具合です。
\223は、C言語のエスケープシーケンスで8進定数のことらしいと言うことまでは分かったのですが
(田は\0x93,\0x63(\223,\143)なので) '\田'とか出てきたり動作がかなり変です。
始末の悪いことにID3DXFileEnumObjectで読み込んでも元に戻りません。
何か問題の所があるのでしょうか。
char strDxTemplate[] ="xof 0303txt 0032\ntemplate ID { <60F23340-4686-472f-AA91-4D1212D26476> STRING strName; DWORD dwID;} ";
std::vector<char> Buff; DWORD dwBuff = 0xff00;
const char strName[] = "田中太郎 -abcd- 鈴木次郎"; LPCSTR strNameBuff = strName;
LPD3DXFILE pDxf; LPD3DXFILESAVEOBJECT pDxfSaveObj; LPD3DXFILESAVEDATA pDxfIDData;
D3DXFileCreate(&pDxf);
pDxf->RegisterTemplates(strDxTemplate, strlen(strDxTemplate));
pDxf->CreateSaveObject("test.x", D3DXF_FILELOAD_FROMFILE, tc - _T('0'), &pDxfSaveObj);
Buff.resize(Buff.size() + sizeof(strName));
memcpy(&Buff[Buff.size() - sizeof(strName)], strName, sizeof(strName));
Buff.resize(Buff.size() + sizeof(dwBuff));
memcpy(&Buff[Buff.size() - sizeof(dwBuff)], &dwBuff, sizeof(dwBuff));
pDxfSaveObj->AddDataObject(IDID, NULL, NULL, Buff.size(), &Buff[0], &pDxfIDData);
pDxfSaveObj->Save();
pDxfIDData->Release(); pDxfSaveObj->Release(); pDxf->Release();
SDKのバージョンは たぶんMarch 2008
そして、std::vectorの使い方が無茶苦茶なのは気にしないでください。
259:デフォルトの名無しさん
09/01/23 21:04:13
もう1ヶ月やってるのにウィンドウ作ってテクスチャを表示することすらできない・・・
本とか見ても著者が作ったクラスとか構造体のことについて触れてなくて解析するのが大変だ
手取り足取り教えてるサイトとかありますか?
260:デフォルトの名無しさん
09/01/23 21:29:20
本とか読むより、DirectX SDK のチュートリアルやった方がいいぜ?
261:デフォルトの名無しさん
09/01/23 22:01:37
>>258
const char strName[] = "田中太郎 -abcd- 鈴木次郎";
この時点でおかしくね?
262:デフォルトの名無しさん
09/01/23 22:11:38
今時Ansiでビルドなんて天然記念物級だよ
263:デフォルトの名無しさん
09/01/23 22:24:46
でも、XFileのリファレンスをみると
STRINGテンプレートはASCIIのBYTE列ってあるぜ
やっぱ、これが原因じゃね?
264:デフォルトの名無しさん
09/01/24 01:12:43
ウィンドウが作れないならDirectX以前の問題。
DirectXの本なんて読んでもWindows初心者には理解できないのは当然だ。
265:デフォルトの名無しさん
09/01/24 01:16:02
GAME CODINGって本のサンプルは書き写せばそのまま動くから
Windowsプログラミングに不安の残る貴方にもおすすめですよ
266:デフォルトの名無しさん
09/01/24 02:37:03
PIX って便利だね。
初めて知った。
267:デフォルトの名無しさん
09/01/24 03:04:02
まるぺけの最小コードを動かしてみて、猫でもも読んで、MSDNで確かめて、
ウィンドウが作れたのが1年半前
今では立派なサンデーコピペプログラマですw
まー、APIスレの範疇なのかな
268:デフォルトの名無しさん
09/01/24 03:41:14
ビルボードの縮小に、Lanczos フィルタとか使えない?
269:デフォルトの名無しさん
09/01/24 03:43:28
mipmap
270:258
09/01/24 04:11:48
>>261,262
Unicode非サポートなんですわ。
>>263
つまり、2バイト文字非対応ってこと?
仕方がないので、古いIDirectXFile系のインターフェース使ったら、
2バイト文字でも書き込めたけど、
今度は配列に配列いれたら(2次元配列という意味ではない)、
ちゃんと書き込めるのに、
読んだとき外側の配列が全て始めのデータで同じになってしまう…
なんでこんなに挙動変なんだ…
動作確認しないなら、カスタムテンプレートなんか作るなよ…
271:デフォルトの名無しさん
09/01/24 08:49:19
拡張するなら自前のフォーマットを作れって話ですわ。
272:デフォルトの名無しさん
09/01/24 19:35:54
>>271
そらそうですわな…
273:デフォルトの名無しさん
09/01/24 19:38:46
DirectXを最初から勉強するにあたってこれだけは読んどけって本ない?
274:デフォルトの名無しさん
09/01/24 20:38:18
SDKのヘルプ
275:デフォルトの名無しさん
09/01/24 20:59:16
>>273
高額社の本でもよんどけ。
全く使えないというほどひどくもないから。
シェーダーにHLSLを使ってないのが時代遅れだが
インフィニティの本はそれなりの質だと思う。
276:デフォルトの名無しさん
09/01/24 21:49:16
サンクス!
早速注文してくるわ
277:デフォルトの名無しさん
09/01/25 12:17:42
SPRITEでの移動は画面のサイズが単位ですか?
800*600や1024*768など
278:デフォルトの名無しさん
09/01/25 12:19:57
DirectXにSPRITEなど存在しない
279:デフォルトの名無しさん
09/01/25 12:31:21
Spriteです
すいません
280:デフォルトの名無しさん
09/01/25 13:48:27
DirectXにSpriteなど存在しない
281:デフォルトの名無しさん
09/01/25 13:51:33
正直初心者って最初はソース見れるライブラリで何か作ってみて、
そのあとライブラリの中を調べながら学習していくのがベストだと思う。
282:デフォルトの名無しさん
09/01/25 17:58:01
DirectSoundCaptureBuffer8でバッファのロック後データの移動をしたいんですが
これロックしたらデータ書き込めなくないですか?
2つバッファ作って一方に書き込み、一方をデータ移行、で繰り返すならわかるんですが、
もしかして、次の書き込みが来る前にアンロックできないと音飛びする仕組みなんですか?
283:デフォルトの名無しさん
09/01/25 18:04:24
>>282
ストリーム再生なら次の再生位置に来る前の書き込み終わってなきゃ
どう考えても音飛びするだろ。
そもそもストリームのバッファ内でのデータの移動なんて意味不明なことをなんでするんじゃ。
284:デフォルトの名無しさん
09/01/25 18:24:36
ループスタートでキャプチャをしてバッファの一周したら動的メモリに書き込みを繰り返すと
ヘルプに書いてあるんですが、ロックした
あーすいません。lockのパラメータとしてサイズの指定がありました。バッファ全体をロックするのかと思いました
すいませんでした!
285:デフォルトの名無しさん
09/01/25 18:36:55
「タスクシステム」でググって出てきた本全部買っとけ
286:デフォルトの名無しさん
09/01/25 18:53:12
URLリンク(books.google.co.jp)
287:デフォルトの名無しさん
09/01/26 00:14:57
IUnknown派生のAddRef, Release両関数にはアトミック性はありませんか?
代入などコピー時に参照数を加増したいのですが、自前で管理したほうがいいのかな。
288:デフォルトの名無しさん
09/01/26 09:11:44
マルチスレッド下ではInterlock系APIによって保護されている
らしい
てか、そこを疑ったらCOMを使ったプログラムは
全てスレッドセーフではないことになってしまう
289:デフォルトの名無しさん
09/01/26 10:05:55
テクスチャをWrapで繰り返し表示させると負荷が高いって聞いたんですが、これって本当ですか?
290:デフォルトの名無しさん
09/01/26 10:47:09
何と比較しての話なのかも明示せず、本当なのかもへったくれもないだろ。
どれだけ能無しなんだよ?
291:デフォルトの名無しさん
09/01/26 11:02:36
まぁそういう現象の起きるハードウェアは実際に結構あるので
Wrapに頼る設計はWindowsではやらん方がいいね
一応言っとくが、↓でマップチップ使う使わないのケンカは禁止な
292:デフォルトの名無しさん
09/01/26 21:05:58
↑てめーがな
293:デフォルトの名無しさん
09/01/26 23:35:29
PIX for Windowsを使ってフレームの情報をキャプチャしようとしているのですが、
自分で書いたプログラムを起動すると、"PIX Experiment File Version Mismatch" というエラーのようなものが出て、キャプチャが出来ません。
このエラーは何が原因なのでしょうか?
DirectX SDKのバージョンは August 2007 です。
DirectXのサンプルをコンパイルしたものは上記のエラーは出ずに正常に動作して、キャプチャも出来ます。
294:デフォルトの名無しさん
09/01/27 00:08:54
>>293
ファイルパスに全角文字があるとダメな場合があるわよ。
295:デフォルトの名無しさん
09/01/27 00:37:53
>>294
実行ファイルをドライブのルートに置いて試したところ、正常に動作しました
ありがとうございました
296:デフォルトの名無しさん
09/01/27 02:34:41
HLSLを使って描画したいんですが、IDirect3DDevice9::CreateVertexShader メソッドの引数の
const DWORD *pFunction,
[in] 頂点シェーダ機能トークン配列へのポインタ。このパラメータでは、各頂点に適用する処理を定義する。
の意味がよくわからないんですけど、いったい結局何を渡せばいいんでしょう?
297:デフォルトの名無しさん
09/01/27 06:15:44
>>289
めちゃくちゃ重い
uvの値を5,6・・・10,11,
って上げるほど恐ろしく重くなる
っていうかいくつかのPCでやってみろよ
少なくとも自分の環境でやって報告しろ
すぐにわかる
>>290
知らないなら黙ってろよ
ためしたことあるやつならわかる
298:デフォルトの名無しさん
09/01/27 06:43:29
>>296
URLリンク(msdn.microsoft.com)
>>297
試してみたけど別に何も変わらん
GeForce7900GT
GeForce 8600 GT
Quadro FX 3700
てか、別に全ての環境で落ちるわけじゃなくて
落ちる場合もあるのでそれに頼るのは止めようねって流れだろ?
なんか前にも同じ事書いてスルーされて切れてた奴と同じ匂いがする
299:デフォルトの名無しさん
09/01/27 08:28:42
>>288
明らかに古いごみドライバ使ってるとか
いんてるwのオンボードとかの話なら論外だぞ。
自前でソフトレンダラー組んだことあれば分かるが
WRAPのアルゴリズムは&演算1個だからどう考えても重くなりようがない。
300:デフォルトの名無しさん
09/01/27 08:32:22
ソースのピクセル量が増えて負荷が増えるだけなんだから、
それで遅くなるビデオカードならwrapしようが、
パターンを敷き詰めてた大きなテクスチャを使おうが、
同じように遅くなるだけ。
301:デフォルトの名無しさん
09/01/27 08:44:31
>>300
テクスチャキャッシュのキャッシュミスか・・・。
つーかそれならよほどデカイテクスチャ使ってるか
貧相なグラボつかってるかのどっちかだな。
302:デフォルトの名無しさん
09/01/27 10:30:28
描画サイズが変わらないなら
何回wrapしても
ソースのピクセル量は変わらないし
サンプリング回数も変わらないし
フィルレートも変わらないと思うんだけど
もしかして何か別の話してる?
303:デフォルトの名無しさん
09/01/27 12:05:03
wrapするかしないかの話をしているんだろ。
wrapせず描画色が決定して範囲外を単一カラーで塗りつぶす処理と、
何度もパターンを敷き詰める処理、当然前者の方が軽くなるというだけの話。
304:デフォルトの名無しさん
09/01/27 12:10:44
塗りつぶしてる時点でコストは一緒でそ
305:デフォルトの名無しさん
09/01/27 12:38:31
全然違うぞ。
どれだけ頭が悪いんだ?
306:デフォルトの名無しさん
09/01/27 12:42:35
>>304
ミップマップ計算で重くなるという話ならこの辺に出てるね。
URLリンク(forums.microsoft.com)
307:デフォルトの名無しさん
09/01/27 12:44:41
とりあえずWrapの定義をはっきりさせようぜ
1、テクスチャ・アドレッシング・モード
(D3DSAMP_ADDRESSxのD3DTADDRESS_WRAP)
2、テクスチャ・ラッピング・モード
(D3DRS_WRAPxのD3DWRAP_x)
3、それ以外の何か
308:306
09/01/27 12:47:18
さっきの書き方だと語弊があるか。
ミップマップを作っていない場合に極端に遅くなったって話ならここにでてる。
URLリンク(forums.microsoft.com)
309:デフォルトの名無しさん
09/01/27 14:46:26
なんかWrapを
スタンプみたいに敷き詰めてると勘違いしてるお馬鹿さんが混じってない?
単なるテクスチャ座標の扱いの違いだろ
310:デフォルトの名無しさん
09/01/27 14:55:25
↑
一番馬鹿
311:デフォルトの名無しさん
09/01/27 15:08:04
UVが0-1の範囲を超えていたらスタンプのようになるし、
Wrapが設定されていなければ境界色なりで塗りつぶされる。
312:デフォルトの名無しさん
09/01/27 15:13:56
違うだろう
結果的にスタンプになるだけで
やってることは
たとえば(u,v)=(2.5,3.8)を(u,v)=(0.5,0.8)
としてサンプリングしてるだけだ
313:デフォルトの名無しさん
09/01/27 15:18:19
Windows via C/C++みたいなコンセプトがわかる書籍ってありますか?
ここにいる人は詳しそうなのでどういったもので勉強しているのか教えてください。
314:デフォルトの名無しさん
09/01/27 15:42:08
DirectXのコンセプト?
315:デフォルトの名無しさん
09/01/27 15:57:49
>>312
繰り返しにならなければ範囲外の色が決定できるんだから、
そのぶんの読み出しコストが無くなるだろ。
もう頭が悪いのは仕方がないから、せめて自分で塗りつぶし処理を書いてみろよ。
316:デフォルトの名無しさん
09/01/27 16:08:18
話噛み合ってねーーー!!
317:デフォルトの名無しさん
09/01/27 16:38:49
第三者だが噛み合ってなさ過ぎワロタ
318:デフォルトの名無しさん
09/01/27 16:54:24
だれか助けてやれよw
319:デフォルトの名無しさん
09/01/27 18:03:03
たとえばスクリーン上の100x100の領域に描画するとしましょう
この描画はどこで行っているかというとピクセルシェーダです
自分で塗りつぶし処理を書く必要はありませんね
以下が最小のテクスチャ付きピクセルシェーダです
固定機能パイプラインであっても見えていないだけで似たような処理をしています
float4 PixScene( float4 Diffuse : COLOR0,float2 Tex0 : TEXCOORD0 ) : COLOR0
{
return tex2D( g_Texture, Tex0 ) * Diffuse;
}
これは、アドレッシングモードが違ってもまったく同じものが
ピクセルの数だけ、つまり100x100=10000回呼び出されます
たとえ広範囲に同じ色が固まっていっても関係ありません、どのモードでも1フレームあたり10000回です
ここでピクセルシェーダーの中をみてみましょう
tex2Dとはg_Texture(テクスチャです。ここでは256x256のテクスチャを既にセットしてあるとします)
のTex0(uv座標、頂点シェーダで計算済み)の色をサンプリングしてくれる関数と考えてください
例えば、Tex0.x=0.25、Tex0.y=0.5だったときはフィルタリングの状況にもよりますが
テクスチャの(64, 128)ドットの位置の色を返します
この色とDiffuse(ポリゴンの色、頂点シェーダで計算済み)を合成して最終的に塗りつぶす色を決定しています。
アドレッシングモードの違いはTex0の値が0.0〜1.0を超えたときのtex2Dの挙動を決定します
Tex0.x=1.25、Tex0.y=1.5だったとしましょう
CLAMPでは0.0以下であれば0.0、1.0以上であれば1.0として扱います
つまりTex0.x=1.0 Tex0.y=1.0と同じ色、テクスチャの(256, 256)ドットの位置の色を返します
WRAPでははみ出た分は巻き戻って計算します
つまりTex0.x=0.25、Tex0.y=0.5と同じ色、テクスチャの(64, 128)ドットの位置の色を返します
当然では在りますが、PIXで処理時間を計測しても両者に差異は見当たりません
320:デフォルトの名無しさん
09/01/27 18:06:21
そういえば
nVidia系のボードだと
同じ処理を固定機能で書いた場合とシェーダーで書いた場合で
結構処理速度に違いがでるんだけど
ATI系だとほとんど差がでないんだけどこれって何でだろう?
321:デフォルトの名無しさん
09/01/27 18:33:15
>>319
恥の上塗りをしてるだけだからやめとけって……
>>320
どっちの方向に違いが出るのよ?
322:デフォルトの名無しさん
09/01/27 19:23:04
>>306,308
これだ
GeForce8300Gsでも激重になる現象確認
>>306,308の対応をしたら直った
というわけでmipmapに気をつけないと糞重くなります
323:デフォルトの名無しさん
09/01/27 20:39:27
今まで気をつけていなかった方が逆に不思議なんだが。
324:デフォルトの名無しさん
09/01/27 20:43:10
>>323
そこまでいうほどじゃねぇと思うな
俺なんか全く知らなかったしw
325:デフォルトの名無しさん
09/01/27 21:42:40
なんでミップマップ使うと軽くなるか分かってないんだろうな・・・
float4 PixScene( float4 Diffuse : COLOR0,float2 Tex0 : TEXCOORD0 ) : COLOR0
{
return tex2D( g_Texture, Tex0 ) * Diffuse;
}
このソースで速度が上下するのはtex2D()の部分。
テクスチャが大きすぎてキャッシュに乗らない場合は1サンプルごとに
メモリからの読み込みで帯域を食ってしまうが、キャッシュに乗るくらい
小さければキャッシュからの読み出しができるので大変高速に読み出せる。
ミップマップを使うと過剰なサンプリングを回避できる。
命令数と描画ピクセル数だけでは速度は決まらない。
テクスチャサイズが256x256で、-2.5をサンプリングしたら
-640&(256-1)の計算でサンプルピクセルが出る。
この計算がどの程度重いかは考えてくれ。
326:デフォルトの名無しさん
09/01/27 21:50:23
でかいテクスチャを使うと重くなる理由がキャッシュだけしか思いつかない馬鹿が、
知ったかを晒す悲しいスレ。
327:デフォルトの名無しさん
09/01/27 21:59:58
素直に感心した。なるほどな
328:デフォルトの名無しさん
09/01/27 22:12:57
>>325
おおー
俺も理解できた
すごいね
329:デフォルトの名無しさん
09/01/27 23:36:16
なんで、ATI系はおそくならないの?
多少大きいテクスチャを参照したぐらいで
露骨に性能減するって、しょぼい木がするけど
そんなもんなの?
330:デフォルトの名無しさん
09/01/27 23:40:02
>>329
前、Radeon9600proもってたけど
遅くなった気がするけどな
331:デフォルトの名無しさん
09/01/28 00:13:01
ドライバーのバージョンによっても変わるし、
実際のゲームだと描画するたびにテクスチャ切り替えとか
複数のテクスチャを1度の参照したりとかで重くなったりするから、
正確に何が重くなってるか測らないとあかん。
332:デフォルトの名無しさん
09/01/28 05:57:00
>>331
変わるか?
あんまり大差ないよ
333:デフォルトの名無しさん
09/01/28 13:12:45
同次座標(D3DFVF_XYZRHW)での表示はビルボードと同じ効果が得られますか?
334:デフォルトの名無しさん
09/01/28 13:18:27
はい
335:デフォルトの名無しさん
09/01/28 13:29:32
>>334 ありがとうございます
336:デフォルトの名無しさん
09/01/28 16:36:54
まぁそういう現象の起きるハードウェアは実際に結構あるので
Wrapに頼る設計はWindowsではやらん方がいいね
337:デフォルトの名無しさん
09/01/28 21:23:38
XFileでアニメーションを実装するのとObjファイルを書きだしてモーションパスでアニメーションを実装するのはどちらがいいですか?
XFileは簡単だけど処理が重いと聞きました
この2つならどちらがいいかアドバイスお願いします
338:デフォルトの名無しさん
09/01/28 21:41:32
ファイル形式が違うだけで処理の重さは処理を作るやつ次第だと思うが・・・
339:デフォルトの名無しさん
09/01/29 07:15:44
Xファイルは処理が重いって言うより、単純にアニメーション再生させるなら簡単だけど
それ以上のことをやろうとすると難しいっていう感じだな
340:デフォルトの名無しさん
09/01/29 07:19:50
>> 339
なるほど 例えばOBBで衝突判定をしたりとかですか?
341:デフォルトの名無しさん
09/01/29 07:27:22
>>337
objファイルでアニメーションしたほうが何かといいよ
342:デフォルトの名無しさん
09/01/29 15:54:56
URLリンク(up2.viploader.net)
これだろ
343:デフォルトの名無しさん
09/01/29 16:27:31
半透明のポリゴンを持つメッシュを表示したいんですが
普通に描画すると、半透明ポリゴンを先に描画してしまった時に後ろのポリゴンが表示されない場合があると思うんですが
どうすればいいでしょうか?
344:デフォルトの名無しさん
09/01/29 17:02:21
Zバッファ法の限界なのでどうにもならない
半透明ポリゴンは最後に書き込む何らかの仕組みが必要
345:デフォルトの名無しさん
09/01/29 20:37:16
URLリンク(www.hsjp.net)
販促チラシ
346:デフォルトの名無しさん
09/01/29 20:48:17
ここんとこずっと朝から晩まで本見たりネット見たりしているのにいまだに画面に何か出すことすら出来ない
347:デフォルトの名無しさん
09/01/29 20:54:56
Javaでもやれば?手っ取り早いし、それなりに実用的だぞ
348:デフォルトの名無しさん
09/01/29 22:42:13
DirectMusic8で音鳴らしてるんだが
エラーでないのに音が鳴らないときとかあって困る
DirectMusicLoaderは1つしか使うなっていうから
1つしか使わないようにコードかえたが
やっぱり音が鳴らないときがある
349:デフォルトの名無しさん
09/01/29 22:49:49
>>346
だせぇなゆとりにもほどがある
350:デフォルトの名無しさん
09/01/29 23:02:52
>>348MIDI?WAV?そもそもキミのPCは正常に音は再生できてるのかい?
351:デフォルトの名無しさん
09/01/29 23:11:26
>>349
みんなできててすげーな
これでも高校のとき成績は理系でトップクラスだったんだぞ
352:デフォルトの名無しさん
09/01/29 23:18:12
>>351
ケツからだろ
夢みんな
353:デフォルトの名無しさん
09/01/29 23:32:02
そもそも発想がイケてない
画面に何か出てるサンプルからみろよ
っていうかそこまでアフォならちょっとしたゲームを作れる入門書から買ったほうが速いだろ?
VCとかDirectXとかもうダウンロードしてきたのか?
354:デフォルトの名無しさん
09/01/29 23:37:27
VC++もSDKももうある
サンプルを改変して.xを表示することくらいはできた
自分で1から作ることができない。"概念"さえ掴めばパッパといける気はするが
355:デフォルトの名無しさん
09/01/29 23:41:07
>>350
WAV 正常に再生できてるよ
DirectSoundのサンプルはちゃんと再生されるけど
DirectMusicのサンプルは再生されないときがある
ワケワカラン
おとなしくDirectSound使いたいところだが
SDKのVerがアレなので(ry
>>346
WIN32APIプログラムとかの入門をとばして
いきなりDirectXの入門書を見てたりしないか?
356:デフォルトの名無しさん
09/01/29 23:52:36
>>354
なんだできてんじゃん
>自分で1から作ることができない
1からってどういうこと?
なにもみないで書くって意味だったら10年やってる俺でも無理だ
テキトーに必要なもんかき集めてぺたぺた貼って動かすぐらいならできるがな
初期化処理の書き方なんてその時代時代でやることかわるし
大事なのはサンプル理解して応用していける力なので
そういう自分で・・・っていうのは必要ない
まずはなんでもいいからゲームを作ってみろ
それ以外のことは無駄だから考えるな
そうだ、テトリス作れ3Dテトリスな(ゲーム的には2Dの)ハイ決定さっさと作れ
357:デフォルトの名無しさん
09/01/30 00:31:25
頭が悪い奴って勉強頑張れるらしい
358:デフォルトの名無しさん
09/01/30 03:52:30
ID3DXSpriteはIDirect3DDevice9のように2つのテクスチャを合成してから表示させたり出来ないんでしょうか?
359:デフォルトの名無しさん
09/01/30 19:18:22
質問です
Direct3Dで線分を描画したいんですけど、どうすればいいんでしょうか?
360:デフォルトの名無しさん
09/01/30 19:23:30
これはググレカスといわざるを得ない
361:デフォルトの名無しさん
09/01/30 19:31:36
DrawPrimitiveで引数にLINELIST
362:デフォルトの名無しさん
09/01/30 19:58:38
なるほど、DrawPrimitiveでできたんですね
ありがとうございました
363:デフォルトの名無しさん
09/01/30 23:00:59
DirectXのプロジェクトってユニコードビルドにしないとだめなのでしょうか、
単にデフォルトがそうなっているだけなのでしょうか?
チュートリアルのプロジェクトがデフォルトがユニコードになってます。
364:デフォルトの名無しさん
09/01/30 23:15:07
サンプルフレームワークのDXUTがUnicodeビルド前提ってだけだ。
DirectX SDK使う分にはどっちでもいいよ。
365:デフォルトの名無しさん
09/01/31 01:40:58
トンクス!
366:デフォルトの名無しさん
09/01/31 18:19:59
中国人ですらこれ位作れるのにお前らときたら
URLリンク(www.amazon.cn)
367:デフォルトの名無しさん
09/01/31 18:33:34
画面にピクセル単位で指定して描画したのですが
D3DFVF_XYZRHWで描画したポリゴンではできるのですか?
368:デフォルトの名無しさん
09/01/31 18:38:10
画面にピクセル単位で指定して描画したいのですが
D3DFVF_XYZRHWで描画したポリゴンではできるのですか?
訂正ですすいません
369:デフォルトの名無しさん
09/01/31 18:40:31
>>366
ただのBitBltじゃん
370:デフォルトの名無しさん
09/01/31 18:45:50
既に描画したポリゴンでできるのかと聞かれても、よくわからない。
D3DFVF_XYZRHWを使って作った頂点バッファだったら簡単にできると思う。
>>369
どういうこと?話が見えないんだけれども
371:368
09/01/31 18:50:16
>>370
レスありがとうございます
とりあえずやってみます><
372:371
09/01/31 20:13:11
タイトル画面を表示させようと思い試しに作ってみました
URLリンク(appleloader.bbsnow.net)
上の画像は512*512のテクスチャをD3DFVF_XYZRHWを使って作ったポリゴンに貼り付けて
表示させたやつです
下の画像は1024*768のテクスチャを・・・
512*512のほうは正常に描画されるのですが1024*768のほうは変になってしまいます
これはDirectXが2のべき乗の大きさのテクスチャしかサポート?していないからですか?
他に理由あったら指摘お願いします
373:デフォルトの名無しさん
09/01/31 20:17:52
なんで1024×1024で試してみてから質問しないのですか?
374:デフォルトの名無しさん
09/01/31 20:23:01
>>373
1024*1024で貼り付けてUVで調整したら解決しました
お手数掛けて申し訳ありません
375:デフォルトの名無しさん
09/01/31 20:23:34
テクスチャの画像はどうやって作ってるの?
それのために呼び出したAPIを全部調べたの?
376:デフォルトの名無しさん
09/01/31 20:30:33
D3DXCreateTextureFromFileEx です
API調べてませんでした
次から調べてから質問します 申し訳ございません
377:デフォルトの名無しさん
09/01/31 22:02:43
DirectXに、次はねぇ・・・
378:デフォルトの名無しさん
09/01/31 23:09:12
if(diks[DIK_UP] & 0x80) {
m_dir = FOR;
Sleep(500);
}
DirectInputでキーボードから入力値を取得しています
Sleep()を抜くととてつもない速さでカーソルが移動してしまいます
Sleep()を使うとほかの処理も止まってしまうので
他の処理をとめないで同じようなことできる方法ありませんか?
379:デフォルトの名無しさん
09/01/31 23:50:11
押しっ放しじゃなくて
押した瞬間だけ検出するようにしろよ
380:デフォルトの名無しさん
09/02/01 01:24:16
>>378
マルチ
381:デフォルトの名無しさん
09/02/01 02:41:44
D3DPRESENT_PARAMETERSのPresentationIntervalをD3DPRESENT_INTERVAL_ONE
にするとリフレッシュレートに勝手にあわせてPresentが行われまする。
普通1フレーム当たり1/60秒になるので、待たせたい秒数になるように
フレーム数をカウントして、一定数ごとにカーソルを移動とかじゃだめ?
間抜けな回答してたらどうしよう・・・。
382:デフォルトの名無しさん
09/02/01 04:11:24
>>381
SDKのサンプルみろ
それが一番速い
設定選べるようになってるサンプルあるだろ?
383:デフォルトの名無しさん
09/02/01 04:13:23
> 普通1フレーム当たり1/60秒になるので、
とはかぎらない。
384:デフォルトの名無しさん
09/02/01 04:16:10
まあ、だいたい液晶だからなるっちゃなるなw
385:デフォルトの名無しさん
09/02/01 04:17:04
よくいるよね、一般的な例の話をしてるのに特殊な例を持ち出してこれは違う!って言う奴。
そんなことは百も承知だってのに。 そんなに自分が物知りだってひけらかしたいのかね。
386:デフォルトの名無しさん
09/02/01 04:29:04
URLリンク(www-06.ibm.com)
387:デフォルトの名無しさん
09/02/01 04:30:52
>>386
>>385を読めばそれが反論になってないことは理解できるだろ、馬鹿?
388:デフォルトの名無しさん
09/02/01 04:49:27
お前らよくこんなカス共の質問に回答してやれるなw
389:デフォルトの名無しさん
09/02/01 04:52:54
そもそもマルチだしな。
390:デフォルトの名無しさん
09/02/01 07:07:06
60にすると具合悪い事はままある
391:デフォルトの名無しさん
09/02/01 14:17:41
V-Syncって普通自前でやるのかな?
392:デフォルトの名無しさん
09/02/01 16:07:32
>>382の言ってるサンプルがどれかわかんなかったw
よく調べたらうちのはディスプレイモードによってリフレッシュ
レートが56〜75の間で4種類くらいあるから、フレーム数決め打ち
だと環境によって変わっちゃうなあ。>>386は50Hzだったし。
QueryPerformanceCounterとかからミリ秒算出して、前のカーソル
移動時の時間と比べて一定時間たったら再実行とか。だめ?だめ?
393:デフォルトの名無しさん
09/02/01 16:09:49
液晶でも最近のフルHDのTVにつなぐとデフォが24Hzになったりするしな。
394:デフォルトの名無しさん
09/02/01 16:24:32
QueryPerformance系使うくらいならtimeGetTime()の方が制約が少なくてらくだけどね
どうせミリ秒単位を扱うわけだし
395:デフォルトの名無しさん
09/02/01 16:30:29
DirectXのVSyみそなんかリフレッシュレートっぽい
時間でウェイトかけてるだけだから。
ゲーム機の実Vクロックでループ回すのとはわけが違う。
396:デフォルトの名無しさん
09/02/01 17:32:20
>>395
タイマでウェイトかけるのはウインドウモードのときだけだよ。
397:デフォルトの名無しさん
09/02/01 17:37:00
>>392
>サンプルがどれかわかんなかったw
全部見ろよ
398:デフォルトの名無しさん
09/02/01 17:38:53
サンプル連呼されても初心者にはわからんものだよ
頭の固い奴にはそれがわからんのです
399:デフォルトの名無しさん
09/02/01 17:39:41
ゲームで複数のXFileを読み込むときのロード時間が気になっているのですが
これを高速化したりするのは可能でしょうか?
ネットで調べたところ、一度DirectXの「Xファイル読み込み関数」で
ロードしておいたメッシュデータをバイナリで保存して、次回起動時に
そのデータを直接読み込むという手段を取られていた方がいるのですが
具体的にどうやるのでしょうか?また、本当に早くなるのでしょうか?
D3DXLoadMeshHierarchyFromXなどのXファイルロードルーチンはそのマシン
で描画が早くなるようにロードしたメッシュを最適化しているという
話を聞いたことがあるので、このやり方で本当にロードが早くなるのか
心配です・・・。
どなたかXFILEのロードの高速化について詳しい人がいたらアドバイスを
お願いします。
400:デフォルトの名無しさん
09/02/01 21:36:01
どれだけ速くなるかは知らないけど
頂点バッファとインデックスバッファ、あと属性テーブルみたいなの取得すればいいじゃん
401:デフォルトの名無しさん
09/02/02 04:57:21
>400
ありがとうございます、階層化されたメッシュの場合にかなり面倒そうですが
今度の週末にでも一度組んでみようと思います。
402:デフォルトの名無しさん
09/02/02 23:55:43
>>401
最近その問題(遅い)にぶちあたったが、遅いのはアニメーションのロードだった
アニメーションのロードだけ自前でやるのお勧め
メッシュのロードはそこそこに早かったよ
403:デフォルトの名無しさん
09/02/03 00:21:39
カメラの回転での質問です。
横回転は問題ないのですが、縦回転すると90度を超えると
急に視界が反転してしまいます。
90度になったらD3DXMatrixLookAtLHのpUpを逆方向にすると
縦回転だけする場合は良いのですが、
少しでも縦回転した状態で横回転すると、視点がぐるぐる
変に回ってしまいます。
どうすれば良いでしょうか?
404:403
09/02/03 00:32:03
すいません
横回転が加わっている状態で縦回転すると、でした。
横回転はどの場合でも普通に回転してくれます。
405:デフォルトの名無しさん
09/02/03 01:12:25
まわす順番がおかしいんじゃねーの?
とりあえずその部分のコード貼れや
406:デフォルトの名無しさん
09/02/03 02:39:51
D3DXMatrixLookAtLHの引数で回転するんじゃなくて
注視点を原点とするカメラのローカル姿勢を回転させて
そこからビュー行列を逆算すればおk
407:403
09/02/03 06:23:07
>>406
すいません具体的にどのようにすれば良いでしょうか?
今現在は
D3DXMatrixRotationX(&mat, g_CameraAngle.x);
D3DXVec3TransformCoord(&g_Camera.vecEyePt, &g_Camera.vecEyePt, &mat);
という感じでカメラの座標を変換してから
D3DXMatrixLookAtLH(&matView, &vecEyePt, &vecLookatPt, &vecUpVec);
pDevice->SetTransform(D3DTS_VIEW, &matView);
でカメラ位置を変更しています。
408:デフォルトの名無しさん
09/02/03 11:04:16
// カメラの初期姿勢(視点(0,0,-10)、注視点(0,0,0)の場合)(変更しないで保持する)
const D3DXVECTOR4 vecEyePt(0,0,-10,1) ;
const D3DXVECTOR4 vecLookatPt(0,0,0,1) ;
const D3DXVECTOR4 vecUpVec(0,1,0,0) ;//ここだけw成分が0であることに注意(回転のみ反映)
// 初期姿勢からどれくらい移動したいかの行列
// 回転だけでなく拡大縮小移動なども合成できる
D3DXMatrixRotationY(&mat, g_CameraAngle.y);
D3DXVECTOR4 Eye, Look, Up
D3DXVec4Transform ( &Eye, &vecEyePt, &mat ) ;
D3DXVec4Transform ( &Look,&vecLookatPt, &mat ) ;
D3DXVec4Transform ( &Up, &vecUpVec, &mat ) ;
D3DXMatrixLookAtLH(&matView, (D3DXVECTOR3*)&Eye, (D3DXVECTOR3*)&Look, (D3DXVECTOR3*)&Up);
もうちょっとスマートなやり方あるけどそれは少し考えればわかるよね
409:デフォルトの名無しさん
09/02/03 18:17:31
最初はスマートなやりかたより理解しやすさを追求すればいいじゃない
UpVectorが0成分だと気づかなくて
3日くらい悩んでたのを思い出した
410:デフォルトの名無しさん
09/02/03 19:00:34
>402
ありがとうございます、時間が取れたのでアニメーションの書き出しを
試してみたのですが、アニメーションコントローラにアニメーションデータの
実体が見当たりません。
アニメーションデータの実体とサイズはどうやって取得したら
宜しいのでしょうか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5040日前に更新/141 KB
担当:undef