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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 16:56:40 ]
※回答する人も、質問する人も必ず読んでください

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

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

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

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

10 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:02:10 ]
質問です
現在STGを作っていてBGMとSE再生にDirectMusicを使っています
BGMに10秒程度のwaveデータをループ再生で使用しているのですが
FPSが60を下回る程度に重くなると頻繁に音飛びしてしまいます
どうすれば音飛びをなくせますか?

11 名前:5 mailto:sage [2007/11/29(木) 20:07:17 ]
>>9
滅多にない名書なんです。

12 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:28:22 ]
その書籍の名前は?

13 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:29:57 ]
>>10
その程度の量ならDirectSoundでバッファに全部詰めてループ再生すべき

14 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:27:27 ]
>>13
waveの再生にはDirectSoundの方が適していると言う事でしょうか。やってみます

15 名前:5 mailto:sage [2007/11/29(木) 21:36:42 ]
>>12
今給黎さんの書かれたDirectX9シェーダプログラミングブックという本です。

16 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:36:30 ]
>>15
つーかお前50ページくらいしか読んでないだろ
その本もってるけど
ぜんぜんアプリケーションウィザードが必須って内容じゃないぞ
たぶんお前のこの本は早すぎる
もうちょっとWindowsプログラミングの知識をつけてからにしたほうがいいぞ



そもそも
アプリケーションウィザードが吐き出した
サンプルコードがついてるんだから
新規作成できなくてもサンプルコードをベースに
自分で書き直せばいいんだが




17 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:08:09 ]
ウィザード?何それ?
そんなもの使ったことないけど、今じゃDirectX10で開発している俺様が通りますよっと。

18 名前:5 mailto:sage [2007/11/30(金) 00:19:06 ]
>>16
72Pまで読みました。
まずはシェーダ記述の部分を学びたいので、それ以外の枠組み的なところはできるだけ
著者の説明に沿うカタチで進めたいんです。
そうしながらシェーダ記述が構造全体の中のどの位置でどのように働くかの理解も深まると
期待しています。

サンプルコードはうまく書き直せず、コンパイルが通りません。

というか.net 2002を落札しそうです・・・。



19 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:11:18 ]
こんな単純な構造も扱えないなんて・・・

20 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:18:27 ]
割り込みで質問すいません。Visual C++ 2005を使っているのですが、下記のプログラムを書いたところDirect3Dデバイスが作成されませんでした。
D3DCREATE_MIXED_VERTEXPROCESSINGの部分を色々いじってみたのですが駄目でしたorz
どなたか解決策をご教授いただけたら助かります。
PCのスペックはCore2Duo E6600、Geforce 8600GTSです。
問題のところだけ抜粋してみました。
HRESULT InitD3d(HWND hWnd)
{
if( NULL == ( pD3d = Direct3DCreate9( D3D_SDK_VERSION ) ) )
{
MessageBox(0,"Direct3Dの作成に失敗しました","",MB_OK);
return E_FAIL;
}
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.BackBufferFormat =D3DFMT_UNKNOWN;
d3dpp.BackBufferCount=1;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.Windowed = TRUE;
if( FAILED( pD3d->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_MIXED_VERTEXPROCESSING ,
&d3dpp, &pDevice ) ) )
{
MessageBox(0,"HALモードでDIRECT3Dデバイスを作成できません\nREFモードで再試行します",NULL,MB_OK);
if( FAILED( pD3d->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, hWnd,
D3DCREATE_MIXED_VERTEXPROCESSING ,
&d3dpp, &pDevice ) ) )
{
MessageBox(0,"DIRECT3Dデバイスの作成に失敗しました",NULL,MB_OK);
return E_FAIL;
}
}

21 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 03:06:56 ]
>>18
>著者の説明に沿うカタチで進めたいんです。
進めたいっていうか知識がないから
そうするしか手段がないだけだろ
素直に入門書から入れって
その後にもう一度その本を読んだほうが絶対に身になるから

>>20
GeForce6世代以降だと
そもそもREFがサポートされてないボードもある
CapsViewerでReferenceがサポートされてるかチェック
8600なら頂点シェーダが使えるから
HALでD3DCREATE_HARDWARE_VERTEXPROCESSINGで作ればいいんじゃね?
もうちょっと汎用でつくるなら
頂点シェーダのバージョンを調べて
2.0以上ならD3DCREATE_HARDWARE_VERTEXPROCESSING
未満ならD3DCREATE_SOFTWARE_VERTEXPROCESSING
で切り替えるとか


22 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 17:44:21 ]
初めて質問させていただきます。
Visual C++ 2005 Express Editionを使って「Microsoft DirectX SDK (Nov 2007)」をインストールしてパスも通しました。
解説HP等を巡ってサンプルをいじったりしていたのですが、

ttp://www.plustarnet.com/aspil/Programming/
↑こちらの「スケルトンプログラム」を実行しようとすると
fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory

という風なエラーが出てしまいます。
DirectXのIncludeフォルダの中にも'dmusici.h'というファイルは見つかりません。
インストールを失敗したかと思い、インストールしなおしましたが同じ結果になってしまいます。
Directxのバージョンとかは関係ないですよね?
よろしくお願いします。

23 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 17:53:53 ]
ttp://www.microsoft.com/japan/msdn/directx/Releasenotes/dxreadmeNov07J.aspx

この DirectX SDK には次のコンポーネントは含まれていません

Direct3D8 およびそれ以前の全てのバージョン
Direct3D RM
DirectAnimation
DirectMusic
DirectInput7 およびそれ以前の全てのバージョン
DirectPlay
DirectPlayVoice
DirectX8 時代の HRESULT 変換ルーチン
Managed DirectX サンプルとドキュメント
これらのコンポーネントを使いたい開発者は、MSDN から August 2007 DirectX SDK をダウンロードする必要があります。

24 名前:22 mailto:sage [2007/11/30(金) 19:02:54 ]
>>23
素早い回答ありがとうございます。
結果は見事エラーが消えてくれました!

ですが、コンパイラのほうでエラーが出たので修正にいそしみます・・・

25 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:26:35 ]
22じゃないんだけどAugust 2007 DirectX SDKはMicrosoft DirectX SDK (Nov 2007)に上書きしていいの?

26 名前:デフォルトの名無しさん [2007/11/30(金) 21:55:54 ]
この本に付いてたソースを弄って現在DirectXについて勉強中です。
www.sbcr.jp/books/products/detail.asp?sku=4797329807

ソースうp(一部いらん事を追加してますが、WindowProcのif文だけコメントアウトしてもらえればOKです)
www.uploda.org/uporg1136704.zip.html

容量減らすためコンパイル済みファイルは削除しています。



うpした物のwindow.cpp内WindowProc関数から3Dオブジェクトの、とりあえずX軸とY軸のみの操作をさせようとしています。

そこで、WindowProc関数のswitchを使って、キーを押した際に矢印キー(37,38,39,40)ごとにx+1 やy+1みたいな方法で
移動させようとしていたのですが流石に3Dはこれでは無理だと気づいたため中止。


調べなおしていると、Scene.cpp内のScene::DrawでD3DXMatrixTranslationを使えば移動できるような事を見つけたのですが、
window.cppでのキー入力で得た情報にに基づいてScene.cppへy+1やx+1のような情報を送る方法がわかりませんでした。

どのようにすれば3Dオブジェクトを操作できるように出来るのか、どなたかお教え頂けませんか?

27 名前:デフォルトの名無しさん [2007/11/30(金) 21:56:36 ]
ちなみに、グローバル変数も使おうとしたんですけどなぜかダメでした。

ファイル構成は
・window.cpp
・Renderer.cpp Renderer.h
・Scene.cpp Scene.h

Scene.hでグローバル変数x,yを宣言して、Scene.cppの最初にまず0入れて、
Window.cppのWindowProc内にて
     case WM_DOWN():
       if(wParam==38){
          ここにx+=1;
       }
みたいな方法でグローバル変数操作しようとしたんですがだめっぽくて・・・どうすればいいんでしょうか。。

28 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:48:11 ]
>>26
せめてエラーのないソースを上げようよ



29 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:51:58 ]
>>27
ここはWindowsプログラム初心者スレじゃない。
基礎からやり直せ。

30 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:01:59 ]
Windowsプログラム以前の問題だな
C言語そのものをよく理解してないだろ

とりあえず
WinMain内の

// シーンオブジェクト
Scene scene;

をグローバルにして

if (wParam == 37){
scene.x-=0.1f;
}
if (wParam == 38){
scene.y+=0.1f;
}
if (wParam == 39){
scene.x+=0.1f;
}
if (wParam == 40){
scene.y-=0.1f;
}

とすれば君のやりたいことはできるよ
そんな設計でいいのかどうかは別として

31 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:41:54 ]
ATI Radeon9700 + DirectX9.0cですが
Direct3D、リファレンスデバイスのcaps.MaxActiveLightsがUINT_MAXを返します。
しかし、SetLightはそこまで大きいインデックスには対応していないらしく
ある程度の値でエラーを返します。
これはバグってるんですかね?それともSetLightのインデックスの最大値は別の方法で
取得する必要があるんですか?

また、Direct3D9の固定機能パイプラインで、テクスチャ座標値をそのままピクセル色として
出力することは可能ですか?ピクセルシェーダを使わないと無理でしょうか?

32 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 11:55:35 ]
DirectXに関してはまったくの初心者なのですが、どうしても分からないことがあるので質問させて下さい。

DirectDrawEnumerateEx関数を用いて、DirectDrawの初期化前にデバイスを列挙しようとしているのですが、
Unicode版のDirectDrawEnumerateExW関数がE_NOTIMPLでエラー終了してしまいます。
Ascii版で同様のコードに書き換えると問題なく実行されるのですが、
どうしてUnicode版だけエラーが発生するのか、全く理由がわかりません。
(一応VCのデバッガでアセンブリをステップ実行して中を追ってみたところ、
 Unicode版では分岐もなしに無条件returnしているように見受けられたのですが、
 DirectXの呼び出し規約等はまったく知らないので、かなりの確率で私の勘違いかもしれません)

そこで質問なのですが、
 1) DirectDrawEnumerateExは、互換性を考えると本来使うべきではない関数なのでしょうか。
 2)みなさんは、DirectDrawでマルチモニタをサポートするとき、どのようにデバイスを列挙していますか。

DirectDrawEnumerateExについて詳しく説明している資料がほとんど見つからず、困っております。
どうかご教授いただければ幸いです。

OSはXPSP2で、開発環境はVC2005、DirectXは9.0c(およびJune 2007のSDK)をインストール済みです。
ddraw.dllは2004/08/04のバージョン5.03.2600.2180になっていました。
グラボはRadeon X700 Pro (ATI製ドライバ 2007/09/28 8.421.0.0)を使用しています。

簡単ですがレポートと再現コードをまとめておきました。
参考にご覧ください。
kissho.xii.jp/1/src/1jyou20706.zip.html

33 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:13:53 ]
DirectSoundの質問です。
waveファイルを扱うとき、mmioOpenで開き、ファイル形式、チャンクのチェック等という処理をしていくと思います。
このファイルを開く処理の時、ハードディスク上のファイルではなく、メモリに読み込んだデータを
使いたいのですが、可能でしょうか?また、どのようにすればいいのでしょうか?
宜しくお願いします。

34 名前:33 mailto:sage [2007/12/02(日) 02:31:42 ]
自己解決しますた

35 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 19:37:59 ]
>>10で質問した者ですが、DirectSoundを使うことで音飛びしなくなりました。
しかし同時に複数の音が再生できないようなので、BGMはSound、SEはMusicで再生しています。
DirectSoundとDirectMusicを同時に使っても不具合が起こったりしないでしょうか?

36 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:22:03 ]
質問です。
画像をキーボードを使って移動できるようにしたのですが、
Alt + Tabでデバイスをロストすると、画像はちゃんと表示されるのに、キーボードを使っての画像の移動ができなくなってしまいます。
何が原因でしょうか。
移動にはDirectInputを使って直接キーボードからの入力を取得しています。


37 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 07:58:20 ]
>>36
画面が復帰したときに
Acquireしなおせばいいんじゃね?

38 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 18:38:44 ]
DirectXの導入について質問です。

www.plustarnet.com/aspil/Programming/
を見ながらDirectXをBCC Developerで使おうとしているのですが、DirectX Novenber 2007をインストールしてもコントロールパネルにDirectXの項目が出てきません。
この状態で上記サイトのサンプルプログラム(2D編の始めのところにあるsampleSTG)が出来るかどうか試してみたのですが、エラーが大量に出て上手くいきません。
これはそもそもDirectXのインストールをやり直すべきなのでしょうか、それともサイトが古いから仕様が変わったのでしょうか。



39 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 20:43:08 ]
>>38
いつからだったかコンパネにはでなくなったような
プログラムメニューの
DirectX Utilitiesの
DirectX Control Panelで同じのがみれるよ
ただNovenber2007は見てないのでなかったらすまん

おそらくエラーと上記は無関係
とりあえずincludeのパスは通したのかい?
通してエラーがでてるのなら
エラーコードをいくつか書いてみそ
話はそれからだ

40 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 08:05:33 ]
VistaとD3DCREATE_SOFTWARE_VERTEXPROCESSINGについての質問です。

DirectXのサンプルプログラム SkinnedMesh を例であげますが、
Vista(GF8600GT,AthlonX2 5000+)だと
D3DDEVTYPE_HALにおいて
D3DCREATE_HARDWARE_VERTEXPROCESSINGと
D3DCREATE_SOFTWARE_VERTEXPROCESSINGでのパフォーマンスの差が30倍以上出るのですが、
Vista?ではこんなものでしょうか?
自宅で確認できる他の環境では
XP(R9600, P4 2.8G)だと倍程度の差しかでないようなので・・・
D3DCREATE_SOFTWARE_VERTEXPROCESSINGだけですが、
2000(onBoardGF4MX, Athlon 1G)の方がVistaの3倍以上のパフォーマンスが出ています。


41 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 10:02:12 ]
>>40
すまん、お前の日本語はどうも理解しがたい
具体的に書いてくれ

42 名前:40 mailto:sage [2007/12/04(火) 10:30:05 ]
VistaでのSoftware vertex processing処理は遅いのでしょうか?

Hardware vertex processingだと840fps以上でるのですが、
Software vertex processingだと28fps程度まで落ちます。
XPや2000だと性能の低いGPUを使ってSoftware vertex processingを指定しても
100fps前後が出るのに・・・
Vsitaなのか他の条件なのかがはっきりしなくて質問しました。
動作プログラムは DirectXのサンプルプログラム SkinnedMesh です。


43 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 11:05:25 ]
28は遅すぎる
REFで動いてないか?

44 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 11:13:05 ]
あとSDKのライブラリのリンクは
きちんとx64のほうを指定しているのかい?

45 名前:40 mailto:sage [2007/12/04(火) 11:56:04 ]
REFだと1fps程度ですね。
x64でリンクってのは、この場合はサンプルexeなので
SDK付属のexeを実行してるだけです。
参考までに、Vista環境の方で、どの程度のfpsが出るのでしょうか?


46 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 12:35:03 ]
ノートですまんが
32bitVista Cor2DuoT7500 GeForce8600GTM
スキニングのタイプで多少は前後する
SOFTWARE 300fps
HARDWARE 350fps
くらい


47 名前:40 mailto:sage [2007/12/04(火) 14:25:29 ]
どうやら私の環境だけのようですね。
自分がコーディングしたプログラムだけなら何かミスがあるのかなと考えたのですが、
SDK付属のサンプルexeでも同じような状態だったので・・・。
どなたかご指摘の点とかないでしょうか?
一応、Debug/Retail Runtimeは確認しています。


48 名前:デフォルトの名無しさん [2007/12/04(火) 18:59:52 ]
初心者なので変なことを言ってたらすみません。

ゲームを作っているのですが、
キャラクターが壁などのオブジェクトにぶつかった時に進む方向を
自動で変えるにはどうしたらよいですか?

壁にぶつかる角度などで、向き変えたい方向が違うのでif文での場合わけがわかりません。
よろしくお願いします。



49 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 19:03:08 ]
if (vector==0) {
//右へ移動する
//壁にぶつかると変数vectorの値を変える
} else {
//上へ移動する
}

50 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 19:19:16 ]
>>48
お前はDirectXとかうレベルではなく、それ以前の問題。
そんな初歩的なアルゴリズム、管質いってやってくれ。

51 名前:デフォルトの名無しさん [2007/12/04(火) 19:40:16 ]
3Dでやっていて、どのような角度で壁にぶつかっているのかがわかりません。
進む方向は回転行列を使って変えていて。。

バイオハザードの、壁にぶつかってもキャラクターは走っているのに、
ぶつかった時の入射角によって左右のどちらかに、
キャラクタの座標がずれていくようにしたいのですが。。

52 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 19:44:40 ]
回転行列に使ってる角度はどこに消えたんだよw

53 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:34:18 ]
「壁ずり」でググるんだ。
ここはDirectXの質問スレであって、ゲーム開発の質問スレじゃないんだ。
だからもう迷い込むなよ。

54 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:38:24 ]
壁ずりを理解したら次は床ずりも理解してくれ

55 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 22:56:55 ]
ライトを設定しないでも、読み込んだモデルは色付きで表示されて見える状態ですけど、
ライトの光が当たる部分だけ照らされて、当たらない部分は真っ暗にするにはどうすれば良いでしょうか?

56 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 23:18:28 ]
>>55
すげぇ抽象的な質問だな

とりあえず
固定機能パイプラインでやるのか
ピクセルシェーダーでやるのかくらい書こうぜ

57 名前:55 mailto:sage [2007/12/05(水) 23:24:22 ]
>>56
固定機能パイプラインでやります。

58 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 23:31:00 ]
>>57
ほい

ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/programmingguide/fixedfunction/lightsandmaterials/usinglights.asp



59 名前:デフォルトの名無しさん [2007/12/06(木) 09:58:02 ]
【質問テンプレ】
[1] 授業単元: DirectX
[2] 問題文(含コード&リンク):サンプルソースを元に入力クラスを作成して、表示させた画像を動かす。
(車を動かすので、可能ならアクセルとブレーキを再現)
サンプルソースを下記にうpします。(mainとヘッダーがあるためzipファイルです。)
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5415.zip


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VS2005
 [3.3] 言語: どちらでも可
[4] 期限: 2007年12月6日 17時
[5] その他の制限: 制限はなし

すっかり課題を忘れてて手をつけていない
よろしくお願いします

60 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 10:28:08 ]
ここは宿題を片付けますスレではないんだが・・・

そもそもサンプルに不備がある
技術的な問題でなくたんなる初期化の問題
こんなの誰もやりたがらん

いくらか出してくれるなら話は別だが

61 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 12:24:12 ]
そもそも設計がおかしくね?

DirectInputインターフェイスを親クラスで
static宣言して
複数生成されるかもしれないデバイスを
その子クラスで作るって
気持ちは分かるがいまいち再利用性に乏しいような
いったいどこで初期化させるつもりなんだろう?

単に静的メンバの使い方の学習の一環でこんなことしてるのだろうか?

62 名前:59 [2007/12/06(木) 13:52:40 ]
>>60、61
そうなんですね。

授業全く聞いてなかったから、何がなんだかわからなくて

うpしたファイル見て頂いただけでもありがたいです。

63 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 14:07:09 ]
>>62
ゲーセン乙。

64 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 19:29:58 ]
こんな授業に金出してるのか・・・。
しかも、聞いてなくて課題ができないとかって。

君、学校(?)に行く目的は課題の達成なの?
それとも、学校に行くのが目的になってるの?
どっちにしても、すでに健全な状態ではないよね。

65 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 19:52:13 ]
プログラム実行時に

Direct3D9: (ERROR) :Device cannot perform hardware processing. ValidateCreateDevice failed.

って出るんですが原因と解決法とかわかりませんか?
とりあえず見た目は正常に動いてるようには見えるんですが気になります。

66 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 23:22:34 ]
何も無いところにエラーは出るはずないので
必ずそのエラーを吐いている関数があるはず
とりあえずデバックで順次実行してみて
そのエラーを吐いてる箇所を絞り込んでみたら?

67 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 23:41:17 ]
俺にはハードウェアを(その環境が)サポートしてないっていうエラーに見えるんだけど。
エラーの発生源ってデバイスの初期化部分じゃないか?
グラボを積んだ環境で試してみろよ。それかソフトウェアエミュレートに切り替えればいいはず。

68 名前:デフォルトの名無しさん [2007/12/08(土) 16:12:52 ]
自宅のノートパソコンでプログラムを起動すると起こるバグなのですが。
『アニメーションメッシュを表示した途端に、その他のただのメッシュやテクスチャが全て表示されなくなる』というバグです。

細かい状況は
・学校のデスクトップパソコンだと起こらない
・極端に軽いアニメーションメッシュの場合、起こらない
・アニメーションメッシュを読み込んだだけで、表示しないのなら起こらない
・アニメーションメッシュ自体は、一番最初に表示した1種類のみ何体でも表示できる
・一度表示すると途中からflgをFALSEにしてアニメーションメッシュを表示させなくしても、テクスチャなどは消えたまま
・一度表示するとアニメーションメッシュを解放して2週目に入ってアニメーションメッシュの読み込みすらしなくてもテクスチャなどは消えたまま
・zバッファをOFFにしたテクスチャだけは表示できる

なので状況としては「一度でもアニメーションメッシュを表示させると何があってもテクスチャなどは消えたまま」
という状況です。
ほぼ間違いなく、アニメーションメッシュの表示部分が悪いというところまでは分かるのですが…。


要領を得ず、長文で申し訳ありませんが回答をいただけたら幸いです。



69 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 16:28:41 ]
>>68
その自宅のノートのGPUはどこの会社のどのバージョンよ。
話からするとハードウェアに問題があるのは間違いなさそうだけど、公表されんといいようがない。

70 名前:デフォルトの名無しさん [2007/12/08(土) 19:35:00 ]
>>69さん

書き込みが遅くなって申し訳ありません。

パソコンの種類が
dynabook.com/pc/catalog/support/search/user/cgi-bin/disp.cgi?pid=PATX760LS&dir=DBs
スペックが
dynabook.com/pc/catalog/dynabook/051219tx/spec.htm
です。

71 名前:55 mailto:sage [2007/12/08(土) 19:40:45 ]
>>58
ありがとうございました。

72 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 19:42:57 ]
>>70
単なるスペック不足
3Dの開発ができるVGAではないな

73 名前:デフォルトの名無しさん [2007/12/08(土) 20:00:31 ]
>>72さん
やっぱりそうなんですか…。
ありがとうございました^−^




ただ、何とか「勝手に消す」→「カクカクでもいいから動く」ようにしたいのですが
そこの辺りはDirectX側で変更できないのでしょうか?

74 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 20:13:33 ]
>>73
なんとも判断に困る。

ドライバとDXのバージョンは最新?最新でもノートのドライバは3Dを前提に考えて作ってないことが多いから、
バグが残ってるのかも。

俺の結論としては、オンボードであることと、一つ目のメッシュだけは表示できるというところからも、メモリ不足が一番怪しいと思う。
アニメーションメッシュって比較的メモリを食うはず。

対策としては、PCを変えるのが一番手っ取り早いけど、
それでもノートでしたいならBIOSの設定でSDRAMのグラフィックメモリ割り当てサイズを増やしてみたら?
一回最大割り当てでやってみて、それでも無理ならほかの要因かもしれん。

75 名前:デフォルトの名無しさん [2007/12/08(土) 21:25:39 ]
>>74さん
とにかく、何か特殊な事をしなければ動かないということですよね。
ここはやっぱり「万能に」は諦めて説明書に「他の3Dゲームが出来る事を確認した上で起動をお願いします」
と注意書きを入れるべきですね…。

卒業生の代表作品として、体験入学参加者などに配られる予定なので
何とかして、せめてカクカクでもいいからどこでも動くようにしたかったんです。

76 名前:74 mailto:sage [2007/12/08(土) 21:35:16 ]
>>75
ものすごい面倒だが、もしかすると旧DirectXのバージョンでコンパイルすると行けるかもしれん。
俺はやったことないから保証は出来んが、DirectX8とかなら古いPCでも通るかも。

まあノートでゲームの性能を期待するなっていうのも本当だが。

77 名前:68 [2007/12/08(土) 23:03:39 ]
>>74さん
返信が遅くなって申し訳ありません。
SDKの方は旧バージョンがあったのでやってみたのですがやはり動きませんでした。
僕のプログラムだとDirectX8ではちょっと動かない関数を使っているので無理です;

友人宅のデスクトップでは動いたので、恐らく動かないほうがおかしいのだとは思います。
前にこのノートパソコンにかなり軽めのMMOを入れてみたときに、本当にカクカクではあったのですが動きました。
なので、何か方法はあると思うのですが…。

新聞奨学生なので今日はもう眠らなくてはいけませんが、治らなかった場合、また後日より詳しい状態を調べた上で書かせていただきます。
それでは長らくお付き合いいただき、誠にありがとうございました。

78 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 00:09:19 ]
> 本当にカクカクではあったのですが
REF なんじゃろうなぁ...



79 名前:デフォルトの名無しさん [2007/12/10(月) 20:15:23 ]
HLSLでfor文回してるんですけど、
かなりの数ループできないんですが・・
命令数って限られてるんでしょうか?
そうだとしたらその理由は?

80 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 20:53:50 ]
お前はもう終わってる。
マルチポストは死亡フラグなんだよ。


81 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 21:36:31 ]
普通のプログラムでも1Gもサイズがあったら動かなくなるんじゃない?

82 名前:デフォルトの名無しさん [2007/12/10(月) 21:43:51 ]
マルチポストとはどういう意味?

83 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 22:59:11 ]
浮気者

84 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 00:50:11 ]
誠氏ね

85 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 01:34:46 ]
pc11.2ch.net/test/read.cgi/gamedev/1179516297/468-470
がいし感←なぜか変換dけいなf

86 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:40:23 ]
ちょっと聞きたいのだけど、Directxと32Apiを組み合わせてプログラム
を組めますか?
Win32Apiのラジオボタン等の機能と組み合わせて作れれば良いなあ
と思ったもので・・・

87 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:16:49 ]
Win32APIっていうか
GUIにアクセスして
Windowsコントロールを描画することはできるけど
GUIの速度がDirectXと比べ物にならないくらい低速だから
DirectXを使うメリットを殺すことになる

88 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 04:12:49 ]
>>87
有難うございます。
何と言うか漠然としすぎて何とも言え無いです。
出直してきます




89 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:06:58 ]
自分のPCにはSDK9.0が入ってます。
あるサンプルをダウンロード、中を確認したらd3d8.hとd3dx8.hがインクルードされてたので
これをd3d9.h、d3dx9.hに直し、追加の依存ファイルも8から9に直してコンパイル
したら何百ものエラーが出てきました。
色々試したけど原因が全く分からないのでよろしければ誰か教えてください><

90 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:14:32 ]
バリバリ原因が丸わかりだろ。

91 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:16:10 ]
>>89
完全下位互換と言うわけではないからファイルが違うと全くの別物と考えたほうがいい。
同じファイル名でも中身は何度も添削しているから当時のバージョンじゃないと使えない場合もあるし。


92 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:27:34 ]
>>91
そうだったんですか・・・
9.0以前のものは全て使えると思ってました^^:
ご返答ありがとうございました。

93 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:23:52 ]
Xファイルに関して質問です。
ひとつのモデルに対し、複数のアニメーションをさせることはできるのでしょうか?
たとえば、あるキャラクターで、Aを押したらパンチ、Bを押したらキック、という風にしたいのです。
やはり、パンチ用とキック用でXファイルをわけるしかないのでしょうか。

94 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:29:24 ]
>>93
二つのアニメーションを連結して、それぞれのアニメーションでフレームを補正して使う。
例えば、AとBのアニメーションを連結したら、
Aの初めは、0
Bの真ん中は、0.75
っといった感じ。

95 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 22:41:53 ]
>>93
できる
SDKサンプルのtinyも実は
複数アニメーションを持ったXファイルだ
ただし切り替えに関して詳しく説明されてるところはあまりない
ID3DXAnimationControllerでぐぐればヒントくらいはみつかるかも

96 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 17:29:57 ]
HLSLを使ったサンプルでLPD3DXEFFECTのPassを使おうとしてエラーが出ます。
LPD3DXEFFECTにPassが無いのですが別のものに替わったのでしょうか。


97 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 17:44:24 ]
BeginPass
EndPass

98 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 18:50:11 ]
メジャーバージョン変えずにAPI蛙のやめれって感じですよねほんと



99 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 23:31:10 ]
どうしても1パス終了ごとに
PassEndを入れさせたい「事情」があって
開始時の互換性をなくすことで
両方セットで変更させようとした。ってオチじゃねぇの?

100 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 06:19:42 ]
地獄への道は善意で敷き詰められている。
職場では変更を極力抑えるのが美徳だけれど、その繰り返しが死の行軍を生み出すのが常である。


101 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 22:22:44 ]
SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
これらの引数を使いこなしたいんだけど分かりやすく解説している
ページないべ?

102 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 23:45:27 ]
これはひどい

103 名前:化石発掘 mailto:sage [2007/12/19(水) 02:37:51 ]
>>101
[shred of game]
platz.jp/~moal/game.html

104 名前:デフォルトの名無しさん [2007/12/21(金) 11:00:39 ]
ttp://wisdom.sakura.ne.jp/system/directx/dxg2.html
ここのページ下部にある背景が緑の部分のソースをまるごとコピーして、VisualStudio2005の無料版でコンパイルしました。ところが
「fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?」
というエラーが出てコンパイルできません。エラーで検索してみたところ、ソースの最上段に #include "stdafx.h"
を加えればコンパイルが通るらしいので試してみた所
「fatal error C1083: include ファイルを開けません。'd3d8.h': No such file or directory」
と表示されてコンパイルが通りません。

DirectXSDKはさっき落とした最新版(サンプルみたらDirectX10も使えそう)で、パスはたぶん通ってます。
どうしたらコンパイルができるようになりますか?

105 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 12:58:24 ]
まず、stdafx.h関連はスレ違い。DirectX以前の話なんで、よそで勉強して頂戴。
で、最新のDirectX SDKって何?November2007ならリリースノートに

この DirectX SDK には次のコンポーネントは含まれていません

* Direct3D8 およびそれ以前の全てのバージョン

ってあるから、Direct3D8はサポート外なんじゃないの?
もしインストールしたSDKのIncludeディレクトリにd3d8.hがあるんなら、Includeパスの設定を再確認しれ。
あと、少なくともJune2006にはd3d8.hは入ってるのを確認した。

106 名前:デフォルトの名無しさん [2007/12/21(金) 20:10:39 ]
November2007です、d3d8.hがなくて、代わりにd3d10.hが入ってました。
アンインストールしてJune2006入れてきます。ありがとうございました。

107 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 21:01:44 ]
June2006にもd3dx10.hはあるけどね。
あと、そのページはDirectX8について記されてるんだけど
DX10がやりたいならよそを見たほうが良いよ。
初期化まわりは8→9→10で全然変わったからやり直しになるし。

あと、DX10は動かすにはVistaがいるから。念のために。

108 名前:デフォルトの名無しさん [2007/12/22(土) 22:01:46 ]
すいません
2Dでゲーム作成をしているんですが

LPD3DXSPRITE gSprite;

// シーンの描画設定(2D画像の描画)
RECT SrcRect = { a,b,120,120 }; // テクスチャ内でスプライトに使う範囲
D3DXVECTOR3 Center(0,0,0); // スプライト内の中心の位置

// 出力
gSprite->Draw(Texture, &SrcRect, &Center, NULL,D3DXCOLOR(0, 0, 0,0 ));

正常に絵を呼び出せるのですが
Rectのrightとbottomに1とか100とか何か値を入れるだけで
フレームレートが50も下がります・・・
&SrcRectの部分にNULLを入れてもなぜか50下がります
ですが0を入れると正常に動作します
なぜでしょうか、ご教授ありましたらお願いします






109 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 22:07:23 ]
Direct3DでWM_PAINTで描くのはありですか?

110 名前:デフォルトの名無しさん [2007/12/22(土) 22:07:59 ]
108ですが、読み込み部分です

//画像ファイル情報を取得
hr= D3DXGetImageInfoFromFile(name,&ImageInfo);
Width= ImageInfo.Width;
Height= ImageInfo.Height;

// スプライトに表示するテクスチャの初期化
if ( !key ){
hr = D3DXCreateTextureFromFileEx(
g_pD3DDevice, name, Width,Height,1,0,
D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,
D3DX_DEFAULT,D3DCOLOR_ARGB(255,0,0,0),NULL,NULL,&Texture);
}






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

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

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