[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 04/11 09:12 / Filesize : 247 KB / Number-of Response : 959
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 09:55:56 ]
※回答する人も、質問する人も必ず読んでください

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

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

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

【C++】 DirectX初心者質問スレ Part16 【C】
pc11.2ch.net/test/read.cgi/tech/1202634347/

620 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:43:50 ]
>>618
ゲーム画面が320x240でも、
640x480で画面作って拡大して描画してる場合もあると思う。

グラフィックボードがしょぼくてソフトウェアレンダリングな同人が流行ってた頃、
このサポートはどこでもやってたような気がする。


621 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 17:32:40 ]
www.tasofro.net/cgi-bin/cbbs00/cf.cgi?mode=all&mo=1834&namber=1832&rev=0&page=0

[1832] 【技術サポート】 起動できません-

■親トピック/記事引用■

□投稿者/ ミステイク -(2007/01/03(Wed) 21:22:48)

はじめまして、本日EFZを買ったのですが、インストールした後、起動できませんでした。
起動させると、画面が真っ暗になって「320※240の解像度の設定に失敗しました」と表示されます。
どうすれば起動できるのでしょうか?
もしかすると、解像度に問題があるのかもしれませんが・・・。

OSはXp、解像度は最低でも800×600です。


EFZワロス

622 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 17:33:40 ]
と思ってたが、640x480もサポートしないディスプレイとかあるのか。
引き延ばしできないノートとかでありそうだな。
レアすぎるから、
これは無視してもいいか。

623 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 17:43:20 ]
>>609
明記が必須かも試練。w

624 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:11:11 ]
>>622
EeePCがダメだった希ガス>640*480
あと、Pivot使っていると480*640は選択できるが640*480は選択できなくなる。

625 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:14:37 ]
まぁ、最近のビデオチップはハードウェア的にはどんな解像度でもいけるが、
ドライバで制限してるだけなんだけどね。

626 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:41:46 ]
サポートするのは、最近だけじゃねえよ

627 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 20:17:09 ]
>>621
そうそうそうそう
解像度の最低ラインが800x600になったおかげで
昔のフルスクリーンのゲームが起動できなくなったのな
後、256色のゲームも起動不可

628 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 20:56:57 ]
つかWindowsXPは640x480を正式サポート対象外にしてた憶えがあるぞ
あやふやだけど



629 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 10:24:06 ]
うっそ、640x480+16色 はハードが絶対サポートしてるんじゃねーのかよw
ドライバいれてない時や、セーフモード時はどうなってんだそれ

630 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 10:26:33 ]
winならMSの標準ドライバがインストールされてるしょ

631 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 11:20:48 ]
XP以降は画面のプロパティで選択できないように制限かけてるだけで
640*480が使えないわけじゃないよ。8bitカラーだって使える。

632 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:18:09 ]
>>627
間違っています。
以上。
はい次の方。

633 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:48:58 ]
uzeeeeeeeeeee
結局、普通に640x480使えねーのがあるってことでいいじゃないか


634 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 14:55:07 ]
あるの?

635 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:10:35 ]
>>633
いや、ほんとに640x480が動かないPCなんてあるの?って話なんだが。
確たるソースある?

636 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:23:53 ]
>>621

637 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:28:23 ]
640x480の解像度にできない -OKWave
okwave.jp/qa2299134.html

638 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:33:46 ]
>>637
思いっきり9x系からXPに移ったPC初心者の書き込みじゃねーかw



639 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:35:56 ]
DirectXで640x480に設定できないのかという話じゃないのかね

640 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:50:10 ]
blog-imgs-40.fc2.com/n/e/t/netamichelin/2008052810.jpg

641 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 16:33:11 ]
>>635
動く、動かない、という話じゃなくXPで640x480はサポートできないだろって話
WinXPの通常使用のシステム要件に、「800x600以上対応のVGAが必要」というのがある以上、
640x480でWinXPが動かなくても、XPで800x600未満が選択できないPCがあったとしても
「それは残念でした。640x480を使うので、Win2000とかで動かしてみてください」と
返すのが正常、という話。

642 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:36:35 ]
>>641
意味わからん

「XPの動作には800x600以上対応のVGAが必要」であることと、
XPで640x480でフルスクリーンモードのデバイスが作れないこと。
これらはイコールではないでしょ。

「XP用のドライバでは640x480をサポートしなくても構いません」と規定されているのかという話をしてるの。

643 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 17:56:37 ]
おまえらもういいだろうw

644 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:02:55 ]
ところで本当は何について話していたの?

645 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 19:16:22 ]
2Dゲーの解像度のサポートを何処までやるか?だったっけ?

646 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:04:30 ]
古いエロゲーがどこまで動くかですよあやよさん

647 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:30:02 ]
>>641
OS的に選べないようにしてるだけで、グラボのプロパティからなら
余裕で320x240とか選べるようになってる。

つまりDirectX利用可能。

648 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:44:09 ]
ちょっとまて、俺、今普通に640x480解像度のDirectXつかったゲームしてるんだが、XP64bitで。



649 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:45:56 ]
もういいよお前ら
自重しろ

650 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 21:53:47 ]
>>635
インクレティブマシーンが動かなくなってる
まず256色に変更できない
ディスプレイはサポートしてる

いま、こんな状況

651 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 22:29:32 ]
256はわかったから、640はどうなんだよ

652 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 23:49:00 ]
>>650
だから、変更できないってなんだよ…
画面プロパティからは変更できないだろ、XPとか使ってれば。

ここはDirectXスレだっての

653 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 04:02:15 ]
DirectXのスレで画面プロパティとかアホですか

654 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 04:37:37 ]
>>652
だから、アプリの方でエラーがでちまって起動できないっての

655 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:30:42 ]
256はわかったから、640はどうなんだよ!

656 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 06:36:12 ]
>>651,655
うるせー

657 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 07:03:44 ]
どうなんだと聞いている
答えろ

658 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 07:31:58 ]
今日はここに沸いてるのか



659 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 10:06:09 ]
640×480は256色しかサポートしてないってメーカーPCも昔あったな

まぁ結局の所解像度決め打ちにしてるなら動く解像度を動作環境内に書いておけってことだ。
Windowsなんてタダででもいろんな環境がありすぎるんだから全部テストなんて出来ん。
解像度くらいはプロパティから数値が見えるんだから環境限定でいいだろ。
グラボのDXサポート状況に比べればどうと言うことはない

660 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 10:08:28 ]
フルスクリーンじゃなくて窓を開いて640×480の256色モードとかなら
XPもサポートしてるよ

Delphi Graphic Secretsという本を持っているんだがここでいろいろな
画面モードを実験している

661 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:20:22 ]
LPD3DXSPRITE::DrawとLPDIRECT3DDEVICE9::DrawPrimitiveを両方使ってるのですが
前者より手前に後者を描画するにはどうすればいいですか?
描画の順番変えても必ずスプライトが前になってしまいます

662 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:23:07 ]
Z

663 名前:661 mailto:sage [2008/05/31(土) 22:59:42 ]
解決しました
位置のZ座標指定してもうまく処理されないと思ったらClearするときにZバッファ指定してなかっただけでした。
スプライトのZ座標は描画順だけらしいので交錯させる等複雑な描画をしたい時は完全にDrawPrimitiveの方に統一するしかないですか?

664 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 15:22:51 ]
SetRenderState( D3DRS_ZENABLE , FALSE );
3DやらないならZバッファ使わんだろ
使ってもいいけど
使わん方が早いだろ
ついでにステンシルバッファも作らなくていいし
クリア時もZ消さなくていいし

665 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 20:16:47 ]
>>664
Zテストの前から描画って2Dだとそんな効果ねぇっけ?

666 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:18:21 ]
>>665
半透明や加算合成を一切使わず、抜き色で使うアルファ値も
エッジにAA効果を持たせない二値限定のスプライトが前面に多く
描画されると仮定できる状況なら、大幅にフィルレートを稼げるかもね

でなけりゃただの逆効果

667 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 01:02:57 ]
>>666
α値が0%(不透過)のところだけZバッファだけ書き込んでなんとかならんかったっけ?

668 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 02:25:36 ]
>>667
だからカラーキー目的で二値しかアルファ値使ってなけりゃ、アルファテストでいけるよ

でもエッジにアンチェリ(段階的なアルファ値の適用)使った時点で駄目だし、
当然アルファブレンドも使えないしで、2Dスプライトの描画において深度バッファで
速度が稼げるってのは結構レアケースだと思うよ



669 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 03:29:40 ]
>>668
α値が1のときだけ〜って処理いけんかったっけ?
まあ、いけたとしてもそんなに早くないか・・・

670 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 09:54:29 ]
かなり重いピクセルシェーダーを使わない限り深度バッファでの高速化って恩恵ないだろ

671 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:21:37 ]
もしくは、点を打つのが激重なグラボ

672 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:07:07 ]
俺のディスプレイ
最低解像度800x600だった
でも、640x480できたお

673 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 20:03:27 ]
>>671
なんだその存在価値のなさげなグラボは

674 名前:デフォルトの名無しさん [2008/06/04(水) 00:19:51 ]
自分で定義した頂点情報をDrawPrimitiveで表示するときや、
読み込んだXファイルをDrawSubSet()で表示するときなどにmaterialを設定しても描画に反映されません

D3DXCreateSphere()等で取得したメッシュをDrawSubSet()する場合は反映されます
materialを有効にするにはSetMaterial()以外に何か設定が必要なのでしょうか?

675 名前:674 mailto:sage [2008/06/04(水) 01:53:23 ]
すいません、自己解決しました
D3DRS_DIFFUSEMATERIALSOURCEでマテリアルを参照するよう設定するのを忘れていました

676 名前:デフォルトの名無しさん [2008/06/04(水) 19:25:36 ]
ビルドは上手くいくのに実行するとすぐに終了されてしまいます
DirectX 9.0 SDK Update (Summer 2003)
に変えてからこうなりました
以前はSummer 2004を使っていたのですが不具合が色々あったので変えました

もしかしたらDirectXの設定がおかしいのかもしれませんわかる方いたら教えていただきたく思います

677 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 19:36:42 ]
ブレークポイントしかけて、ステップ実行してみれば?

678 名前:676 mailto:sage [2008/06/04(水) 19:58:37 ]
すみません
BCC Developerを使っているのですがブレークポイントの設定の仕方がわかりません…



679 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:01:10 ]
>>678
VC(正規OSならタダでダウンロード可能)にしてやってみるか
printfをおきまくれ

680 名前:676 mailto:sage [2008/06/04(水) 20:10:01 ]
VCは以前インストールしようとしたのですが
「サーバとの接続を再度確立します」と表示されてインストールできなかったのでやめました

自分で組んだプログラムではなく、サンプルをダウンロードして実行しようとしただけなのでコードに問題は無いと思います
Summer 2004で実行したときは大丈夫でしたが
Summer 2003に変えてからおかしくなりました

おそらくDirectXの設定を間違えていると思うのですが…


681 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:14:09 ]
なんだバージョンダウンかよ
DX関数に必要なDLLがないんじゃね?

682 名前:676 mailto:sage [2008/06/04(水) 20:29:59 ]
診断ツールではsystem.dlがないとありましたが
調べてみるとそこまで必要なものではないようでした

サンプルがSummer 2003を対称にしているのでDLLが足りないわけでもないと思います

683 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:34:51 ]
>>680
IE7か割れOSだろ?

684 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:35:37 ]
BCCはVCといろいろ違いがあるんで
BCC対応のライブラリを作るなり取ってくるなり手間が必要だったような気がするが

685 名前:676 mailto:sage [2008/06/04(水) 20:38:01 ]
firefoxですがIE6が入ってます
OSはノートの正規品です

もともと古いPCなのでグラボの性能が低いのが原因かもしれませんが
Summer 2004で実行できたので…

686 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:57:38 ]
>>685
いくつか関数の仕様が変わったもんがあったような気がするけどそこは直した?
ビルド通らないと思うけど

687 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:01:17 ]
2004のサンプルを2003で動かそうとしてんだろ?
足りないもんとかあるんじゃね?
変なコントロールまわりなんかやけに9.0初版のときより豪勢になってるし
バージョンダウンで動かそうとするのなんて時間の無駄じゃね?

688 名前:676 mailto:sage [2008/06/04(水) 21:06:24 ]
ビルドは通ります
エラーもありません

サンプルは2003用のです
2004からコンパネでDirectXが設定できなくなっていたので
2003にしました



689 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 21:21:30 ]
最終奥義「クリーンインストール」

690 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:07:03 ]
実行してすぐに落ちてるんなら普通に戻り値調べたらなんか出てそうだけどな
ちゃんとエラーチェックしてる?w

691 名前:デフォルトの名無しさん [2008/06/05(木) 01:33:17 ]
CとC++ってどう違うの?

692 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 01:33:50 ]
CのインクリメントがC++

693 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 02:47:21 ]
サンプルは環境によって落ちるものは落ちる、市販のゲームとは違うよ
サンプルの実行に拘る理由がよく分からない

694 名前:デフォルトの名無しさん [2008/06/05(木) 03:34:04 ]
質問です.
MPEG-2を取り扱うアプリケーションを作成したいんですが.
Directshow()で可能だとは思うんですが.
マニュアルはありますか?


695 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 03:38:32 ]
>>693
言ってることも割れ臭いし
目的もなく2003だしで正直胡散臭いよねw

696 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 04:39:25 ]
>>694
英語で良いならWindows SDKのドキュメントにある
日本語ならDirectX9 SDKの古いドキュメントがまだMSからダウンロードできたはず
場所の検索は自分でやってネ

697 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:21:39 ]
DirecctX SDK(Mar 2008)とVS2005を使っています。
使っている参考書は
www.amazon.co.jp/dp/4839912475/
です。
この本ではDirectXのアプリケーションウイザードがVSに追加されているのですが、私の環境では追加されませんでした。
VS→SDKの順にインストールしました。
最近のバージョンだとDiretctXのアプリケーションウイザードは削除されたのでしょうか?

698 名前:676 mailto:sage [2008/06/05(木) 19:38:46 ]
2004 Summerにしたら実行できました
2003にしようと思ったのもコンパネから設定変えたかっただけなのでこのまま2004でいこうと思います

DirectX勉強してるサイトのサンプルだったんで何とか実行したかったんです
原因はわかりませんでしたが色々とありがとうございました



699 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 19:47:21 ]
>>697
結構前に廃止された
たぶん2004年のどっか

>>698
最近のは確かにコンパネに設定が追加されなくなったが
DirectX UtilitiesのなかにDirectX Control Panelってものがあってだな
昔コンパネから設定できたことと同じことができるんだぜ?

700 名前:676 mailto:sage [2008/06/05(木) 19:55:53 ]
>>699
教えていただきありがとうございます
ただ、2004にはないようです
最新のはPCの性能的に難しそうなのでこのまま我慢することにします

ちなみに5年くらい前のpentiumVです

701 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:15:42 ]
シェーダーを使ってトゥーンシェード(逆引き500に載ってる方法)をやろうとしているのですが、
一部を除き真っ黒になってしまいます。
どういう時にこうなるのでしょうか?

702 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:35:18 ]
ごめんオレエスパーじゃないし

703 名前:デフォルトの名無しさん [2008/06/05(木) 23:45:32 ]
DirectPlayがサポート打ち切られたとかマジですか

704 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:56:33 ]
DirectX SDKドキュメントのなんと1ページ目にDirectPlay is deprecatedの一文がッ!

705 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:00:11 ]
2007年6月あたりのSDKがサポートラスト。
ランタイムは当分のこるだろうけど。

706 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:18:28 ]
9cはもう終わりか?

10の時代なのか?

707 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:55:02 ]
9cの時代のままです

708 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 03:23:42 ]
10はVISTA限定という暴挙にMSが出たからね
おかげで10の普及は相当に遅れるだろうね



709 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:22:26 ]
XPみたいに皆にブーブー文句言われながら8年後位には普及してるよ

710 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:28:15 ]
そう思っていた時期がMeにもありました

711 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:30:34 ]
細かいバージョンを見れば、MSは失敗作をけっこう出してるよ
そしてすぐに無かったことにしている
SEとかCEとか3.0とかMMCとか、NTとか
Vistaもそんな感じ

712 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:34:44 ]
そりゃXPよりブーブーいうだろ
基本的に全てのアプリはDirectXで組んでくださいっていうスタンスなんだから

713 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:38:04 ]
              __
           ,...-‐:"´:.:.::.:.::.:.``:‐,,、
      ,.-..,、/:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:`、  _
     /:.:.:./:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:';;´::.:.l
    l:.:.:.:.:.l:.:.:.:.:.:.:.:.:.:/|:.:.:.:.:.:.:.:.::l、:.:.:.:.::.:.:.:.:l:.:.:.::|
.    |:.:.:.:.:l:.:.:.:.:.:.:.::.::/ |:.;:.:.:.:.:.:.;l:l l:.::l;:.:.:.:.:.:l:.:.:.:;l,
    |:.:.:.:.:.|:.:.:.:.:.::l:.:/ |:|.l:.:.:::.:.:l|l  |:.:ll:.:.:::.::.ll:.:.:.::|i
.   |:.:.:.:.:l|:.:.:.::.::l.|/` 、|l l:.:::./l _,,.-l:j´l:.:.:.:.:| l:.:.:.:lii
   l:.:.:.::.:l i/l:.:.:l |l‐ェ-ュ,` l:://´ェ--,-,.l:.:.:lヽ l:.:.::.l.ii
.   l:.:.:.:.:;l l (l:.:.:.lヽゝ_ノ  '"  ゝ_ノノ.l:.::l,l l .|;:.:.:.l.ij 
   l:.:.:.::.lij `ゞ::.:l ,、,       ∧/l:.:.l/ j|:.:.:.:l.ii
.  |:.:.:.:.:|.ii   ';:.:l、     '   .  ,l::/   l.l:.:.:.l.i|
.  |:.:.::;.;| ii   ヾl >、.   0   , イl:/、   | |:.:.:.l li
.  |:.:.:.|i| ji,.-ィ'´l `l ` ‐-‐ '´  l  l``l‐-l、|:.:.:.l ij
  |:.:.:.:|i|'´/ l  ヽ `、      /  /  l  .l |:.:.:.| i|
 すとーっぷ。>>712は素早く変な空気を作るねぇ…
 >>709より不安な子を見つけたよ。

714 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:02:40 ]
DX9、C++でのテクスチャに関する質問です。
テクスチャのクラス(CTexture)を作り、コンストラクタに画像ファイルのパスを渡してクラス内でテクスチャ(Texture)を生成しています。
CTextureのデストラクタでTextureを削除するようにし(delete Texture)、メモリの解放を試みているのですが
その状態でCTexture* で作ったオブジェクトを削除すると、ヒープが壊れているというエラーが出ます。
多重deleteでエラーが出ることは調べてわかったのですが、
if(Texture) delete Texture;
としているにも関わらずエラーが出るので困っています。
どのようにしてテクスチャが占有したメモリを解放すればよいのでしょうか?

715 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:18:42 ]
>>714
見事にスレ違いだ。
そして君のやりたいことは多分こうだ。

if (Texture) { delete Texture; Texture = NULL; }

716 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 02:40:27 ]
>>715
できました、ありがとうございます!!そしてごめんなさいでしたァ!!

717 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 05:40:52 ]
delete Texture;
Texture = NULL;

これでおk
delete NULL;は合法
ま、どのみちスレチ

718 名前:デフォルトの名無しさん [2008/06/07(土) 12:22:05 ]
www.h2.dion.ne.jp/~takusoft/directx8/d3d/chapter1/sec07/d3d_07.html
のサンプルプログラムを参考にお勉強しているのですが
画面の頂点情報を動的に変えるために
頂点バッファを確保する箇所

VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof(g_Vertices), (BYTE**)&pVertices, 0 ) ) )
return E_FAIL;
memcpy( pVertices, g_Vertices, sizeof(g_Vertices) );
g_pVB->Unlock();

を処理で何回も経由させる場合
以前に確保したメモリはどのように解放してあげれば良いのでしょうか?
よろしくお願い致します。



719 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:33:41 ]
確保も何もそれはロックしてるだけだと思うが・・・。
あと頻繁にロックするならDYNAMICで作ってDISCARDでロックしろ

720 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:53:13 ]
なるほど、メモリのロックという概念をよく分かってませんでした
動的に確保してるわけでは無いんですね
同じところに何度も上書きしてる感じなのかな?
DYNAMIC と DISCARD は調べてみます
ありがとうございました






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<247KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef