- 1 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 19:39:57 ]
- 前スレはカスしか居ないので廃棄の方向で。
※回答する人も、質問する人も必ず読んでください これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。
- 162 名前:159 [2009/01/16(金) 09:19:13 ]
- >>161の言う通り、プロトタイプ宣言した物を実装していませんでした。サンプルからコピペのミスでした。
- 163 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 10:31:05 ]
- 陰線消去したくてZバッファ法というのをやってみたのですがうまくいきません
エスパーお願いします
- 164 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 10:51:03 ]
- >>163
それはグラボのせい GeForce GTX 285を使うときっと治る
- 165 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 13:04:27 ]
- 試しにZバッファ法というのをやってみたらうまくいきました
- 166 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 17:34:41 ]
- D3D の質問です。
フルスクリーンでない、ウィンドウのアプリを作っているのですが、 ウィンドウのサイズが変更されたときに、画像が縦に伸びたり 横に伸びたりするので困っています。 正方形が正方形のまま、拡大して欲しいのですが、どうすればいいのでしょうか C# とかじゃなくて、Windows API で作っています。 よろしくおねがいします。
- 167 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 18:00:11 ]
- 矩形を指定してdevice.Presentする。
- 168 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 19:51:21 ]
- Reset
- 169 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 02:43:41 ]
- >>168さんの reset でできましたー!
>>167さんのは、ごめん、うまくいきませんでした。
- 170 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 02:44:25 ]
- >>169です。
テクスチャを一度 Release して、もういちど読み直さないと行けないのがすこし面倒でした。
- 171 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 10:33:18 ]
- こんにちわ、DirectSoundでwavファイルを再生しようと思い
ゲームコーディング2という本を見ながらコードを書いていたのですが 同じようにやっても再生されません コードに間違いがないか5回くらい見直しました 全てのコードを書くと長くなるので大まかな流れだけ書きます DirectSoundオブジェクトを生成 Wavファイルを読み込む セカンダリバッファ作成 バッファに音データを書き込む 再生という手順です 一応コードをUPするので違うところがあれば指摘してもらえると幸いです www7.uploader.jp/dl/inoguma/inoguma_uljp00001.zip.html 宜しくお願いします
- 172 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 11:07:48 ]
- >>171
Play()の戻り値見てないだろ? DSERR_PRIOLEVELNEEDED が返ってきてるよ。 SetCooperativeLevel()呼べばいいと思うよ。
- 173 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 12:12:25 ]
- DirectSoundを初期化する時に
// 協調レベルの設定 if(FAILED(m_pSound->SetCooperativeLevel(hWnd, DSSCL_EXCLUSIVE))) { return E_FAIL; } としてありますが上手くいきません
- 174 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 12:34:22 ]
- やってみたのかよ。
Play直前に呼んだら鳴ったぞ
- 175 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 12:36:11 ]
- 実際やりもしない、戻り値を確認もしないでただ質問するだけってどうなんだろうね。
- 176 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 12:42:20 ]
- ところで実際の本ではどうなってるんだ?
ウィンドウができる前にSetCooperativeLevel呼んだって意味がないだろうに。
- 177 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 12:49:10 ]
- ついでにデバッグしてみたが、、、
// gamemainの初期化 _gamemain = new CGameMain(); hr = _gamemain->FInit(m_device); _gamemain->GetHWND(m_hwnd); これを _gamemain->GetHWND(m_hwnd); hr = _gamemain->FInit(m_device); のように入れ替えれば動作した。元はどうなってんの?
- 178 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 12:52:30 ]
- ごめんなさい
戻り値の確認方法分からなくてクラスビューとかブレークポイントとかいろいろ試してました
- 179 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 13:05:14 ]
- >>178
かわいいなお前w
- 180 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 14:21:13 ]
- Zバッファと深度バッファというのはまったく同じと考えていいんですか
それとも、文書を読むときは微妙な差異に気をつけるべきですか
- 181 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:36:07 ]
- DirectInputってライブラリに組み込んだほうがいいですか?
- 182 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:57:44 ]
- 何のライブラリよ
- 183 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:32:02 ]
- DirectInput を使わないで、
やりたいことが全て出来てる or 出来るのだったら 組み込まなくていいんじゃね?
- 184 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:50:02 ]
- リティアクス・ネマインズライブラリーです
物理演算なども組み込まれています DirectX9対応です
- 185 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:57:28 ]
- www.google.co.jp/search?q=%83%8A%83e%83B%83A%83N%83X+%83l%83}%83C%83%93%83Y%83%89%83C%83u%83%89%83%8A%81
- 186 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:00:59 ]
- >>185
自作の物理演算ライブラリなので探しても出ないです
- 187 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:06:38 ]
- >>181
ポールペンって絵を描くための道具に含んだほうがいいですか?
- 188 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:15:52 ]
- 俺の環境では、なくても動くから必要ないと思うな。
そのライブラリの中に使いたいものがあるなら別だけど
- 189 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:19:25 ]
- DirectInputを使うかどうかは別として
入力インターフェースの提供は最優先だと思うが
- 190 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:24:57 ]
- >>181
必要かどうかは仕様を知っている自分が判断しろ。 指示待ち人間で、他人の指示がないと動けないのなら、 他人にわかるようにきちんと仕様を説明しろ。 中途半端な情報で説明した気になるな。
- 191 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:26:57 ]
- 質問する場所を間違えてね?
内容を加味すると、もっとも適切な相手は占い師だろ。
- 192 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:27:43 ]
- 公開して他人に使わせようって言うんだろ?
変わった用途じゃない限りInputは付けておくべきだろ
- 193 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:30:27 ]
- 演算ライブラリならDirectInputどころか、
そもそもDirectXスレとは何の関係もない。
- 194 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:00:52 ]
- 誰か>>154再現しない?
再現しなかったって報告ならそれはそれでありがたいんだけど……
- 195 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:39:33 ]
- 引数を渡す方法が分かりません
inline void SetAmbient(D3DCOLORVALUE &col) { m_material.Ambient = col; }; CDXMaterial material; material.SetAmbient(); 1つ例を見せていただけませんか・・・
- 196 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:40:15 ]
- MSNDでD3DCOLORVALUEについて調べたのですが解決方法が分からなくて・・・
- 197 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:46:42 ]
- まずはC言語の勉強が先だ
- 198 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:50:45 ]
- >>196
D3DCOLORVALUE col; col.r = 1.0f; col.g = 0.0f; col.b = 0.0f; col.a = 1.0f; material.SetAmbient(col); こんな感じ? なんか別に変なところ無い気がするけど・・・
- 199 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 23:52:05 ]
- 参照渡しが解からんと言う意味ならC++の領分だが
そもそも質問の意図が良くわからんので 「日本語でおk」としかいいようがない
- 200 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 00:13:20 ]
- もしかして入れても反映しないから悩んでるんじゃね?
光源計算してないときはLightEnableをオフに設定しないと表示されなくてだな ってそんなこと聞いてない?
- 201 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:54:28 ]
- 例を見せてと言ってるんだし、>>198でよさげ・・・
- 202 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:55:20 ]
- 失敗してるんなら、自分のとこでどうやったらどうなったくらい書けば早いのにな。
- 203 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 17:07:08 ]
- test
- 204 名前:198 mailto:sage [2009/01/19(月) 17:08:22 ]
- D3DCOLORVALUE col = D3DCOLOR_COLORVALUE(, , ,);
でcolを引数で渡そうとしてました・・・
- 205 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 17:14:35 ]
- やっぱり判らない。 ていうかお前が判ってないから無理。
さっさとCの初心者スレでソース*全部*晒して質問してこい。
- 206 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 17:16:02 ]
- >> すいません勉強不足でした
ちなみに187さんの例で解決しました
- 207 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 17:34:24 ]
- 初期化したいってことか?
D3DCOLORVALUE colorValue = {0,0,0,0}; ってC/C++の話だな。参照(&が付いてる)の話だったらこれもC++
- 208 名前:デフォルトの名無しさん [2009/01/19(月) 22:29:43 ]
- D3DXMATRIXA16
をnewした後にdeleteするとメモリーのバグを引き起こすんだが、解決策はないものか・・
- 209 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:35:27 ]
- D3DXMATRIXを使うとか。
- 210 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 00:17:09 ]
- そもそもバグがあるとは思えないが、
A16の実装自体たいしたことないし 自前の作れば?
- 211 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 08:46:50 ]
- >>208
ヘッダファイルを見れば分かるけど、 A16系は16byteアライメントのためにnewをオーバーロードしてる。 ステップ実行でちゃんとこのnew/deleteが呼ばれてるか確かめてみれば? #define new DEBUG_NEW とかやってて死亡とかありがち。
- 212 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:02:37 ]
- トゥルータイプ形式のアンチエイリアスがかかったフォントを表示するにはどのようにすればいいのでしょうか。
GetGlyphOutlineのAPI使ってもグレースケールのビットマップデータしか得られませんでした。
- 213 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:24:46 ]
- そのグレースケールのデータを
α値としてテクスチャに書き込んで表示 参考 ttp://marupeke296.com/DXGSmp_No5_Font.html
- 214 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:29:34 ]
- それって結局出力も一色になりませんか?
それとも半透明化するときに、うまい方法があるのでしょうか・・・
- 215 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:37:19 ]
- グレースケールのフォントをα値にして半透明で描画すれば、それでちゃんと
アンチエイリアスかかるが、何を求めているんだ?
- 216 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:40:38 ]
- XPだと、ディスプレイのRGB出力の並びに応じて、ピクセル未満の補間をするために
文字のRGBを設定していると思うのですが、その情報をどのように手にすればいいのかと思いまして・・・
- 218 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:43:14 ]
- ClearTypeをしたいなら、GetGlyphOutlineにはそういう機能はない。
GetGlyphOutlineは単純に大きめに描画して縮小したデータを返すだけ。
- 219 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:44:59 ]
- それ以前にアルファチャンネルを理解してない悪寒
- 220 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:48:39 ]
- 端的にいうと、Color=AARRGGBB
↑ここでしょ 普通にフォントを表示することはすでにできています。
- 221 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 17:52:57 ]
- じゃあ、そこの色(値)がどうRGBに影響するのか言ってみろ
- 222 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 18:11:48 ]
- ClearTypeは、CLEARTYPE_QUALITYかCLEARTYPE_COMPAT_QUALITYを
指定してフォント作って、GDIのテキスト描画機能を使うくらいしかAPIでの サポートは無いと思う。
- 224 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 18:28:05 ]
- 文字の縁の外にむかって透明度を上げていけば
背景と馴染んでアンチエイリアスがかかるよね?って話 どういう段階で透明度を変えるかの情報としてグレースケールの情報を使う
- 225 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 21:58:00 ]
- デバイスをリセットする時に、テクスチャとかも一度破棄しないといけない場合があるけど、
その場合って元の画像ファイルを再び最初から読み込むのがいいの? それとも、アプリケーションの一時ファイルみたいなのに画像のビット列だけ保存してしまうとか、どうしてるの?
- 226 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:10:18 ]
- 状況に合わせて自分の好きなようにやれよ。
なんで何でもかんでもお伺いを立てて、逐次指示されないと行動出来ないんだよ?
- 227 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 22:12:07 ]
- 好きにすればいいんじゃない?
その辺の判断がつかないならおとなしくD3DPOOL_MANAGED使っとけ DirectX10からデバイスロストなくなるみたいだし いずれは気にしなくてよくなる領分だ
- 228 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 00:29:38 ]
- >>DirectInputのDIJOYSTATE2のlYって下が+で上が-ですか?
- 229 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 05:51:55 ]
- LightWaveでボーン仕込んでXファイルのエクスポータで出力した。
そのファイルを読み込んでウエイトの値を調べたらどの頂点も0だったんだけど これって正常に出力されてないってこと?
- 230 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 06:31:05 ]
- エクスポータがどこまで対応してるのか調べた方がいいんじゃないかな。
あとたぶんここじゃなくてLightWaveのスレで聞くべきじゃないかなそれは。
- 231 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 18:11:51 ]
- デバッグしなさい
- 233 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 18:56:16 ]
- 解決しました
return E_FAILで落ちてました ありがとうございます
- 234 名前:デフォルトの名無しさん [2009/01/22(木) 21:23:31 ]
- pc11.2ch.net/test/read.cgi/gamedev/1224074902/609-
- 235 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 21:33:01 ]
- すくなくとも公式サイトのはちゃんと出力される
- 236 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:35:00 ]
- 229です
もしかして、D3DXLoadMeshFromXで読み込んだメッシュの頂点情報ってウエイトは含まれてないんですか?
- 237 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 22:44:34 ]
- ファイル自体のウエイトはどうなってるんだ?
- 238 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 23:33:50 ]
- >>237
ファイル見たら、ちゃんと設定されてました ってことは読み込みがだめなのか・・・
- 239 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 00:18:05 ]
- >>238
スキンメッシュは専用の関数が合ったはずだが
- 240 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 09:09:25 ]
- \(^o^)/ I'm a dreamer! ひそむパワー!
ヘ(^o^)ヘ |∧ 私の世界 / / (^o^)/ /( ) 夢と恋と不安で出来てる (^o^) 三 / / > \ (\\ 三 (/o^) < \ 三 でも想像もしないもの ( / / く 隠れてるはず!
- 241 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 09:10:16 ]
- DirectInputでマウスやキーボード使うなよ
てかXInputの時代
- 242 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:23:34 ]
- Direct3Dで複数のウィンドウに同一のテクスチャを表示したいのですが、
この場合、ウィンドウごとにデバイスを作成して、 デバイスごとにわざわざ同じテクスチャを何度も読み込むしかないのでしょうか。 ・一つのテクスチャを複数のデバイスで共用する あるいは ・一つのデバイスで複数のウィンドウに描画する というようなことは出来ないのでしょうか。どなたがご教示下さい。
- 243 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:28:45 ]
- DirectX3D始めようと思うんですが、なにからすればいいですか?
どのぐらいの期間である程度使えるようになってくるんですか?
- 244 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:35:54 ]
- なにが分かっていないのかも分かってない人間に
ものを教えることは非常に難しい とりあえず出来る範囲で自分でやって 具体的な質問が出来たときにもう一度おいで
- 245 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 13:12:03 ]
- >>243
sample動かしてソースを眺めてあきらめろ
- 246 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 13:24:42 ]
- もう一度おいでとか言われるとつらい
あきらめろとか言われると燃える しかしthx
- 247 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 14:05:04 ]
- >>242よく知らんけどデバイスの画素フォーマットが同じなら使い回せんじゃねーの
- 248 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 14:14:03 ]
- 1. 開発環境をダウンロードする。
2. 現在の技量と熱意次第だね。とりあえず、そんなことも判らない君は技量は初学者レベルですぐ飽きると思うので 100年はみておこう。
- 249 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 14:19:22 ]
- D3DPRESENT_PARAMETERS で hDeviceWindow をとっかえひっかえして reset
すればいけるんじゃねーの? あ、そうすると、テクスチャいちいち読み直す必要があるのか。だめじゃん。
- 250 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 14:25:53 ]
- >>242
つCreateAdditionalSwapChain
- 251 名前:249 mailto:sage [2009/01/23(金) 14:30:40 ]
- なんだ、Present の第三引数を描画したいウィンドウにすれば良さそうじゃん。
- 252 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 15:31:21 ]
- IDirectXFileから、ID3DXFileに変わって、
保存方法の流れがヘルプにかかれなくなったこともあって、 なんかアホみたいに使いにくくなっている気がするんですけど、 IDirectXFileData::GetData的なものは諦めるとしても、 IDirectXFileSaveObject::SaveTemplatesの様な動作をさせるコトてできないんですか?
- 253 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 16:50:08 ]
- 追加情報です。
どうやらリークするのは、上書きした側の "3" のアニメーションのようです。 "3AAAA"など、最後のアニメーションの名前を長くしたところ、それにあわせてリーク量が増えました。 つまり「新規登録したアニメーションはちゃんとdeleteするが、上書き登録したアニメーションはdeleteしない」という動きのようです。
- 255 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 18:18:34 ]
- 容易にライブラリのバグだと疑うな。
- 256 名前:242 mailto:sage [2009/01/23(金) 18:49:22 ]
- >>247 >>249 >>250
いくつも方法があるみたいですね。一つ一つ検討してみることにします。 御回答どうもありがとうございました。
- 257 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:36:57 ]
- 勝手に Release されてたら気持ち悪いだろうが。
- 258 名前:デフォルトの名無しさん mailto:sage [2009/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 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:04:13 ]
- もう1ヶ月やってるのにウィンドウ作ってテクスチャを表示することすらできない・・・
本とか見ても著者が作ったクラスとか構造体のことについて触れてなくて解析するのが大変だ 手取り足取り教えてるサイトとかありますか?
- 260 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:29:20 ]
- 本とか読むより、DirectX SDK のチュートリアルやった方がいいぜ?
- 261 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 22:01:37 ]
- >>258
const char strName[] = "田中太郎 -abcd- 鈴木次郎"; この時点でおかしくね?
- 262 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 22:11:38 ]
- 今時Ansiでビルドなんて天然記念物級だよ
|

|