【C++】 DirectX初心者質問スレ Part15 【C】
at TECH
1:デフォルトの名無しさん
07/11/27 16:56:40
※回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
【C++】 DirectX初心者質問スレ Part14 【C】
スレリンク(tech板)
2:1
07/11/27 16:57:10
【関連サイト】
MSDN DirectX
URLリンク(www.microsoft.com)
DirectX Home Page
URLリンク(www.microsoft.com)
BBX (掲示板)
URLリンク(isweb8.infoseek.co.jp)
DXライブラリ置き場
URLリンク(homepage2.nifty.com)
Lamp:ゲーム開発とその学習をサポートするミドルウェア
URLリンク(lamp.sourceforge.jp)
TWINTAIL LOVERS.
URLリンク(www.twin-tail.jp)
Pastel's Laboratory
URLリンク(www.roy.hi-ho.ne.jp)
GamDevPukiWiki - DirectX総合スレ (過去ログ等)
URLリンク(gamdev.org)
GamDevPukiWiki - 3DCG製作ソフト (過去ログ等)
URLリンク(gamdev.org)
ゲームを作るための素材を集めよう まとめサイト
URLリンク(paw.my-sv.net)
3:1
07/11/27 18:28:32
次スレがなかったようなので、適当に建てました。
14のヤツをそのまま(前スレだけ変えた)持ってきたので、必要なヤツは↓で追加してくれ。
4:デフォルトの名無しさん
07/11/28 10:45:46
おつ
5:デフォルトの名無しさん
07/11/28 18:19:22
DirectXのアプリケーションウィザードってVisualStudio2005じゃ使えないのでしょうか?
6:デフォルトの名無しさん
07/11/29 18:25:57
使えないし、使う必要性もない。
7:デフォルトの名無しさん
07/11/29 18:31:05
SDKのサンプルに入ってる
DXUT使えば同じくらい低コストで導入できるんじゃね?
8:5
07/11/29 18:45:59
>>6
それを使わないとほとんどの内容がムダになってしまう本を読んでいるんですよ・・・。
>>7
・・・さっきネットオークションで旧バージョンのVSを3万近くで入札しちゃってそのまま
落札しそうなんですが、すっごいムダなことしてしまったでしょうか(多汗)
9:デフォルトの名無しさん
07/11/29 19:43:52
ソフトじゃなくて本を変えればいいのに
10:デフォルトの名無しさん
07/11/29 20:02:10
質問です
現在STGを作っていてBGMとSE再生にDirectMusicを使っています
BGMに10秒程度のwaveデータをループ再生で使用しているのですが
FPSが60を下回る程度に重くなると頻繁に音飛びしてしまいます
どうすれば音飛びをなくせますか?
11:5
07/11/29 20:07:17
>>9
滅多にない名書なんです。
12:デフォルトの名無しさん
07/11/29 20:28:22
その書籍の名前は?
13:デフォルトの名無しさん
07/11/29 20:29:57
>>10
その程度の量ならDirectSoundでバッファに全部詰めてループ再生すべき
14:デフォルトの名無しさん
07/11/29 21:27:27
>>13
waveの再生にはDirectSoundの方が適していると言う事でしょうか。やってみます
15:5
07/11/29 21:36:42
>>12
今給黎さんの書かれたDirectX9シェーダプログラミングブックという本です。
16:デフォルトの名無しさん
07/11/29 23:36:30
>>15
つーかお前50ページくらいしか読んでないだろ
その本もってるけど
ぜんぜんアプリケーションウィザードが必須って内容じゃないぞ
たぶんお前のこの本は早すぎる
もうちょっとWindowsプログラミングの知識をつけてからにしたほうがいいぞ
そもそも
アプリケーションウィザードが吐き出した
サンプルコードがついてるんだから
新規作成できなくてもサンプルコードをベースに
自分で書き直せばいいんだが
17:デフォルトの名無しさん
07/11/30 00:08:09
ウィザード?何それ?
そんなもの使ったことないけど、今じゃDirectX10で開発している俺様が通りますよっと。
18:5
07/11/30 00:19:06
>>16
72Pまで読みました。
まずはシェーダ記述の部分を学びたいので、それ以外の枠組み的なところはできるだけ
著者の説明に沿うカタチで進めたいんです。
そうしながらシェーダ記述が構造全体の中のどの位置でどのように働くかの理解も深まると
期待しています。
サンプルコードはうまく書き直せず、コンパイルが通りません。
というか.net 2002を落札しそうです・・・。
19:デフォルトの名無しさん
07/11/30 01:11:18
こんな単純な構造も扱えないなんて・・・
20:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/30 17:44:21
初めて質問させていただきます。
Visual C++ 2005 Express Editionを使って「Microsoft DirectX SDK (Nov 2007)」をインストールしてパスも通しました。
解説HP等を巡ってサンプルをいじったりしていたのですが、
URLリンク(www.plustarnet.com)
↑こちらの「スケルトンプログラム」を実行しようとすると
fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
という風なエラーが出てしまいます。
DirectXのIncludeフォルダの中にも'dmusici.h'というファイルは見つかりません。
インストールを失敗したかと思い、インストールしなおしましたが同じ結果になってしまいます。
Directxのバージョンとかは関係ないですよね?
よろしくお願いします。
23:デフォルトの名無しさん
07/11/30 17:53:53
URLリンク(www.microsoft.com)
この DirectX SDK には次のコンポーネントは含まれていません
Direct3D8 およびそれ以前の全てのバージョン
Direct3D RM
DirectAnimation
DirectMusic
DirectInput7 およびそれ以前の全てのバージョン
DirectPlay
DirectPlayVoice
DirectX8 時代の HRESULT 変換ルーチン
Managed DirectX サンプルとドキュメント
これらのコンポーネントを使いたい開発者は、MSDN から August 2007 DirectX SDK をダウンロードする必要があります。
24:22
07/11/30 19:02:54
>>23
素早い回答ありがとうございます。
結果は見事エラーが消えてくれました!
ですが、コンパイラのほうでエラーが出たので修正にいそしみます・・・
25:デフォルトの名無しさん
07/11/30 20:26:35
22じゃないんだけどAugust 2007 DirectX SDKはMicrosoft DirectX SDK (Nov 2007)に上書きしていいの?
26:デフォルトの名無しさん
07/11/30 21:55:54
この本に付いてたソースを弄って現在DirectXについて勉強中です。
URLリンク(www.sbcr.jp)
ソースうp(一部いらん事を追加してますが、WindowProcのif文だけコメントアウトしてもらえればOKです)
URLリンク(www.uploda.org)
容量減らすためコンパイル済みファイルは削除しています。
う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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/30 22:48:11
>>26
せめてエラーのないソースを上げようよ
29:デフォルトの名無しさん
07/11/30 22:51:58
>>27
ここはWindowsプログラム初心者スレじゃない。
基礎からやり直せ。
30:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/01 00:41:54
ATI Radeon9700 + DirectX9.0cですが
Direct3D、リファレンスデバイスのcaps.MaxActiveLightsがUINT_MAXを返します。
しかし、SetLightはそこまで大きいインデックスには対応していないらしく
ある程度の値でエラーを返します。
これはバグってるんですかね?それともSetLightのインデックスの最大値は別の方法で
取得する必要があるんですか?
また、Direct3D9の固定機能パイプラインで、テクスチャ座標値をそのままピクセル色として
出力することは可能ですか?ピクセルシェーダを使わないと無理でしょうか?
32:デフォルトの名無しさん
07/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)を使用しています。
簡単ですがレポートと再現コードをまとめておきました。
参考にご覧ください。
URLリンク(kissho.xii.jp)
33:デフォルトの名無しさん
07/12/01 19:13:53
DirectSoundの質問です。
waveファイルを扱うとき、mmioOpenで開き、ファイル形式、チャンクのチェック等という処理をしていくと思います。
このファイルを開く処理の時、ハードディスク上のファイルではなく、メモリに読み込んだデータを
使いたいのですが、可能でしょうか?また、どのようにすればいいのでしょうか?
宜しくお願いします。
34:33
07/12/02 02:31:42
自己解決しますた
35:デフォルトの名無しさん
07/12/02 19:37:59
>>10で質問した者ですが、DirectSoundを使うことで音飛びしなくなりました。
しかし同時に複数の音が再生できないようなので、BGMはSound、SEはMusicで再生しています。
DirectSoundとDirectMusicを同時に使っても不具合が起こったりしないでしょうか?
36:デフォルトの名無しさん
07/12/03 01:22:03
質問です。
画像をキーボードを使って移動できるようにしたのですが、
Alt + Tabでデバイスをロストすると、画像はちゃんと表示されるのに、キーボードを使っての画像の移動ができなくなってしまいます。
何が原因でしょうか。
移動にはDirectInputを使って直接キーボードからの入力を取得しています。
37:デフォルトの名無しさん
07/12/03 07:58:20
>>36
画面が復帰したときに
Acquireしなおせばいいんじゃね?
38:デフォルトの名無しさん
07/12/03 18:38:44
DirectXの導入について質問です。
URLリンク(www.plustarnet.com)
を見ながらDirectXをBCC Developerで使おうとしているのですが、DirectX Novenber 2007をインストールしてもコントロールパネルにDirectXの項目が出てきません。
この状態で上記サイトのサンプルプログラム(2D編の始めのところにあるsampleSTG)が出来るかどうか試してみたのですが、エラーが大量に出て上手くいきません。
これはそもそもDirectXのインストールをやり直すべきなのでしょうか、それともサイトが古いから仕様が変わったのでしょうか。
39:デフォルトの名無しさん
07/12/03 20:43:08
>>38
いつからだったかコンパネにはでなくなったような
プログラムメニューの
DirectX Utilitiesの
DirectX Control Panelで同じのがみれるよ
ただNovenber2007は見てないのでなかったらすまん
おそらくエラーと上記は無関係
とりあえずincludeのパスは通したのかい?
通してエラーがでてるのなら
エラーコードをいくつか書いてみそ
話はそれからだ
40:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/04 10:02:12
>>40
すまん、お前の日本語はどうも理解しがたい
具体的に書いてくれ
42:40
07/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:デフォルトの名無しさん
07/12/04 11:05:25
28は遅すぎる
REFで動いてないか?
44:デフォルトの名無しさん
07/12/04 11:13:05
あとSDKのライブラリのリンクは
きちんとx64のほうを指定しているのかい?
45:40
07/12/04 11:56:04
REFだと1fps程度ですね。
x64でリンクってのは、この場合はサンプルexeなので
SDK付属のexeを実行してるだけです。
参考までに、Vista環境の方で、どの程度のfpsが出るのでしょうか?
46:デフォルトの名無しさん
07/12/04 12:35:03
ノートですまんが
32bitVista Cor2DuoT7500 GeForce8600GTM
スキニングのタイプで多少は前後する
SOFTWARE 300fps
HARDWARE 350fps
くらい
47:40
07/12/04 14:25:29
どうやら私の環境だけのようですね。
自分がコーディングしたプログラムだけなら何かミスがあるのかなと考えたのですが、
SDK付属のサンプルexeでも同じような状態だったので・・・。
どなたかご指摘の点とかないでしょうか?
一応、Debug/Retail Runtimeは確認しています。
48:デフォルトの名無しさん
07/12/04 18:59:52
初心者なので変なことを言ってたらすみません。
ゲームを作っているのですが、
キャラクターが壁などのオブジェクトにぶつかった時に進む方向を
自動で変えるにはどうしたらよいですか?
壁にぶつかる角度などで、向き変えたい方向が違うのでif文での場合わけがわかりません。
よろしくお願いします。
49:デフォルトの名無しさん
07/12/04 19:03:08
if (vector==0) {
//右へ移動する
//壁にぶつかると変数vectorの値を変える
} else {
//上へ移動する
}
50:デフォルトの名無しさん
07/12/04 19:19:16
>>48
お前はDirectXとかうレベルではなく、それ以前の問題。
そんな初歩的なアルゴリズム、管質いってやってくれ。
51:デフォルトの名無しさん
07/12/04 19:40:16
3Dでやっていて、どのような角度で壁にぶつかっているのかがわかりません。
進む方向は回転行列を使って変えていて。。
バイオハザードの、壁にぶつかってもキャラクターは走っているのに、
ぶつかった時の入射角によって左右のどちらかに、
キャラクタの座標がずれていくようにしたいのですが。。
52:デフォルトの名無しさん
07/12/04 19:44:40
回転行列に使ってる角度はどこに消えたんだよw
53:デフォルトの名無しさん
07/12/04 20:34:18
「壁ずり」でググるんだ。
ここはDirectXの質問スレであって、ゲーム開発の質問スレじゃないんだ。
だからもう迷い込むなよ。
54:デフォルトの名無しさん
07/12/04 20:38:24
壁ずりを理解したら次は床ずりも理解してくれ
55:デフォルトの名無しさん
07/12/05 22:56:55
ライトを設定しないでも、読み込んだモデルは色付きで表示されて見える状態ですけど、
ライトの光が当たる部分だけ照らされて、当たらない部分は真っ暗にするにはどうすれば良いでしょうか?
56:デフォルトの名無しさん
07/12/05 23:18:28
>>55
すげぇ抽象的な質問だな
とりあえず
固定機能パイプラインでやるのか
ピクセルシェーダーでやるのかくらい書こうぜ
57:55
07/12/05 23:24:22
>>56
固定機能パイプラインでやります。
58:デフォルトの名無しさん
07/12/05 23:31:00
>>57
ほい
URLリンク(msdn.microsoft.com)
59:デフォルトの名無しさん
07/12/06 09:58:02
【質問テンプレ】
[1] 授業単元: DirectX
[2] 問題文(含コード&リンク):サンプルソースを元に入力クラスを作成して、表示させた画像を動かす。
(車を動かすので、可能ならアクセルとブレーキを再現)
サンプルソースを下記にうpします。(mainとヘッダーがあるためzipファイルです。)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VS2005
[3.3] 言語: どちらでも可
[4] 期限: 2007年12月6日 17時
[5] その他の制限: 制限はなし
すっかり課題を忘れてて手をつけていない
よろしくお願いします
60:デフォルトの名無しさん
07/12/06 10:28:08
ここは宿題を片付けますスレではないんだが・・・
そもそもサンプルに不備がある
技術的な問題でなくたんなる初期化の問題
こんなの誰もやりたがらん
いくらか出してくれるなら話は別だが
61:デフォルトの名無しさん
07/12/06 12:24:12
そもそも設計がおかしくね?
DirectInputインターフェイスを親クラスで
static宣言して
複数生成されるかもしれないデバイスを
その子クラスで作るって
気持ちは分かるがいまいち再利用性に乏しいような
いったいどこで初期化させるつもりなんだろう?
単に静的メンバの使い方の学習の一環でこんなことしてるのだろうか?
62:59
07/12/06 13:52:40
>>60、61
そうなんですね。
授業全く聞いてなかったから、何がなんだかわからなくて
うpしたファイル見て頂いただけでもありがたいです。
63:デフォルトの名無しさん
07/12/06 14:07:09
>>62
ゲーセン乙。
64:デフォルトの名無しさん
07/12/06 19:29:58
こんな授業に金出してるのか・・・。
しかも、聞いてなくて課題ができないとかって。
君、学校(?)に行く目的は課題の達成なの?
それとも、学校に行くのが目的になってるの?
どっちにしても、すでに健全な状態ではないよね。
65:デフォルトの名無しさん
07/12/06 19:52:13
プログラム実行時に
Direct3D9: (ERROR) :Device cannot perform hardware processing. ValidateCreateDevice failed.
って出るんですが原因と解決法とかわかりませんか?
とりあえず見た目は正常に動いてるようには見えるんですが気になります。
66:デフォルトの名無しさん
07/12/06 23:22:34
何も無いところにエラーは出るはずないので
必ずそのエラーを吐いている関数があるはず
とりあえずデバックで順次実行してみて
そのエラーを吐いてる箇所を絞り込んでみたら?
67:デフォルトの名無しさん
07/12/06 23:41:17
俺にはハードウェアを(その環境が)サポートしてないっていうエラーに見えるんだけど。
エラーの発生源ってデバイスの初期化部分じゃないか?
グラボを積んだ環境で試してみろよ。それかソフトウェアエミュレートに切り替えればいいはず。
68:デフォルトの名無しさん
07/12/08 16:12:52
自宅のノートパソコンでプログラムを起動すると起こるバグなのですが。
『アニメーションメッシュを表示した途端に、その他のただのメッシュやテクスチャが全て表示されなくなる』というバグです。
細かい状況は
・学校のデスクトップパソコンだと起こらない
・極端に軽いアニメーションメッシュの場合、起こらない
・アニメーションメッシュを読み込んだだけで、表示しないのなら起こらない
・アニメーションメッシュ自体は、一番最初に表示した1種類のみ何体でも表示できる
・一度表示すると途中からflgをFALSEにしてアニメーションメッシュを表示させなくしても、テクスチャなどは消えたまま
・一度表示するとアニメーションメッシュを解放して2週目に入ってアニメーションメッシュの読み込みすらしなくてもテクスチャなどは消えたまま
・zバッファをOFFにしたテクスチャだけは表示できる
なので状況としては「一度でもアニメーションメッシュを表示させると何があってもテクスチャなどは消えたまま」
という状況です。
ほぼ間違いなく、アニメーションメッシュの表示部分が悪いというところまでは分かるのですが…。
要領を得ず、長文で申し訳ありませんが回答をいただけたら幸いです。
69:デフォルトの名無しさん
07/12/08 16:28:41
>>68
その自宅のノートのGPUはどこの会社のどのバージョンよ。
話からするとハードウェアに問題があるのは間違いなさそうだけど、公表されんといいようがない。
70:デフォルトの名無しさん
07/12/08 19:35:00
>>69さん
書き込みが遅くなって申し訳ありません。
パソコンの種類が
URLリンク(dynabook.com)
スペックが
URLリンク(dynabook.com)
です。
71:55
07/12/08 19:40:45
>>58
ありがとうございました。
72:デフォルトの名無しさん
07/12/08 19:42:57
>>70
単なるスペック不足
3Dの開発ができるVGAではないな
73:デフォルトの名無しさん
07/12/08 20:00:31
>>72さん
やっぱりそうなんですか…。
ありがとうございました^−^
ただ、何とか「勝手に消す」→「カクカクでもいいから動く」ようにしたいのですが
そこの辺りはDirectX側で変更できないのでしょうか?
74:デフォルトの名無しさん
07/12/08 20:13:33
>>73
なんとも判断に困る。
ドライバとDXのバージョンは最新?最新でもノートのドライバは3Dを前提に考えて作ってないことが多いから、
バグが残ってるのかも。
俺の結論としては、オンボードであることと、一つ目のメッシュだけは表示できるというところからも、メモリ不足が一番怪しいと思う。
アニメーションメッシュって比較的メモリを食うはず。
対策としては、PCを変えるのが一番手っ取り早いけど、
それでもノートでしたいならBIOSの設定でSDRAMのグラフィックメモリ割り当てサイズを増やしてみたら?
一回最大割り当てでやってみて、それでも無理ならほかの要因かもしれん。
75:デフォルトの名無しさん
07/12/08 21:25:39
>>74さん
とにかく、何か特殊な事をしなければ動かないということですよね。
ここはやっぱり「万能に」は諦めて説明書に「他の3Dゲームが出来る事を確認した上で起動をお願いします」
と注意書きを入れるべきですね…。
卒業生の代表作品として、体験入学参加者などに配られる予定なので
何とかして、せめてカクカクでもいいからどこでも動くようにしたかったんです。
76:74
07/12/08 21:35:16
>>75
ものすごい面倒だが、もしかすると旧DirectXのバージョンでコンパイルすると行けるかもしれん。
俺はやったことないから保証は出来んが、DirectX8とかなら古いPCでも通るかも。
まあノートでゲームの性能を期待するなっていうのも本当だが。
77:68
07/12/08 23:03:39
>>74さん
返信が遅くなって申し訳ありません。
SDKの方は旧バージョンがあったのでやってみたのですがやはり動きませんでした。
僕のプログラムだとDirectX8ではちょっと動かない関数を使っているので無理です;
友人宅のデスクトップでは動いたので、恐らく動かないほうがおかしいのだとは思います。
前にこのノートパソコンにかなり軽めのMMOを入れてみたときに、本当にカクカクではあったのですが動きました。
なので、何か方法はあると思うのですが…。
新聞奨学生なので今日はもう眠らなくてはいけませんが、治らなかった場合、また後日より詳しい状態を調べた上で書かせていただきます。
それでは長らくお付き合いいただき、誠にありがとうございました。
78:デフォルトの名無しさん
07/12/09 00:09:19
> 本当にカクカクではあったのですが
REF なんじゃろうなぁ...
79:デフォルトの名無しさん
07/12/10 20:15:23
HLSLでfor文回してるんですけど、
かなりの数ループできないんですが・・
命令数って限られてるんでしょうか?
そうだとしたらその理由は?
80:デフォルトの名無しさん
07/12/10 20:53:50
お前はもう終わってる。
マルチポストは死亡フラグなんだよ。
81:デフォルトの名無しさん
07/12/10 21:36:31
普通のプログラムでも1Gもサイズがあったら動かなくなるんじゃない?
82:デフォルトの名無しさん
07/12/10 21:43:51
マルチポストとはどういう意味?
83:デフォルトの名無しさん
07/12/10 22:59:11
浮気者
84:デフォルトの名無しさん
07/12/12 00:50:11
誠氏ね
85:デフォルトの名無しさん
07/12/13 01:34:46
スレリンク(gamedev板:468-470番)
がいし感←なぜか変換dけいなf
86:デフォルトの名無しさん
07/12/13 16:40:23
ちょっと聞きたいのだけど、Directxと32Apiを組み合わせてプログラム
を組めますか?
Win32Apiのラジオボタン等の機能と組み合わせて作れれば良いなあ
と思ったもので・・・
87:デフォルトの名無しさん
07/12/13 17:16:49
Win32APIっていうか
GUIにアクセスして
Windowsコントロールを描画することはできるけど
GUIの速度がDirectXと比べ物にならないくらい低速だから
DirectXを使うメリットを殺すことになる
88:デフォルトの名無しさん
07/12/14 04:12:49
>>87
有難うございます。
何と言うか漠然としすぎて何とも言え無いです。
出直してきます
89:デフォルトの名無しさん
07/12/15 21:06:58
自分のPCにはSDK9.0が入ってます。
あるサンプルをダウンロード、中を確認したらd3d8.hとd3dx8.hがインクルードされてたので
これをd3d9.h、d3dx9.hに直し、追加の依存ファイルも8から9に直してコンパイル
したら何百ものエラーが出てきました。
色々試したけど原因が全く分からないのでよろしければ誰か教えてください><
90:デフォルトの名無しさん
07/12/15 21:14:32
バリバリ原因が丸わかりだろ。
91:デフォルトの名無しさん
07/12/15 21:16:10
>>89
完全下位互換と言うわけではないからファイルが違うと全くの別物と考えたほうがいい。
同じファイル名でも中身は何度も添削しているから当時のバージョンじゃないと使えない場合もあるし。
92:デフォルトの名無しさん
07/12/15 21:27:34
>>91
そうだったんですか・・・
9.0以前のものは全て使えると思ってました^^:
ご返答ありがとうございました。
93:デフォルトの名無しさん
07/12/15 22:23:52
Xファイルに関して質問です。
ひとつのモデルに対し、複数のアニメーションをさせることはできるのでしょうか?
たとえば、あるキャラクターで、Aを押したらパンチ、Bを押したらキック、という風にしたいのです。
やはり、パンチ用とキック用でXファイルをわけるしかないのでしょうか。
94:デフォルトの名無しさん
07/12/15 22:29:24
>>93
二つのアニメーションを連結して、それぞれのアニメーションでフレームを補正して使う。
例えば、AとBのアニメーションを連結したら、
Aの初めは、0
Bの真ん中は、0.75
っといった感じ。
95:デフォルトの名無しさん
07/12/15 22:41:53
>>93
できる
SDKサンプルのtinyも実は
複数アニメーションを持ったXファイルだ
ただし切り替えに関して詳しく説明されてるところはあまりない
ID3DXAnimationControllerでぐぐればヒントくらいはみつかるかも
96:デフォルトの名無しさん
07/12/16 17:29:57
HLSLを使ったサンプルでLPD3DXEFFECTのPassを使おうとしてエラーが出ます。
LPD3DXEFFECTにPassが無いのですが別のものに替わったのでしょうか。
97:デフォルトの名無しさん
07/12/16 17:44:24
BeginPass
EndPass
98:デフォルトの名無しさん
07/12/16 18:50:11
メジャーバージョン変えずにAPI蛙のやめれって感じですよねほんと
99:デフォルトの名無しさん
07/12/16 23:31:10
どうしても1パス終了ごとに
PassEndを入れさせたい「事情」があって
開始時の互換性をなくすことで
両方セットで変更させようとした。ってオチじゃねぇの?
100:デフォルトの名無しさん
07/12/17 06:19:42
地獄への道は善意で敷き詰められている。
職場では変更を極力抑えるのが美徳だけれど、その繰り返しが死の行軍を生み出すのが常である。
101:デフォルトの名無しさん
07/12/18 22:22:44
SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
これらの引数を使いこなしたいんだけど分かりやすく解説している
ページないべ?
102:デフォルトの名無しさん
07/12/18 23:45:27
これはひどい
103:化石発掘
07/12/19 02:37:51
>>101
[shred of game]
URLリンク(platz.jp)
104:デフォルトの名無しさん
07/12/21 11:00:39
URLリンク(wisdom.sakura.ne.jp)
ここのページ下部にある背景が緑の部分のソースをまるごとコピーして、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:デフォルトの名無しさん
07/12/21 12:58:24
まず、stdafx.h関連はスレ違い。DirectX以前の話なんで、よそで勉強して頂戴。
で、最新のDirectX SDKって何?November2007ならリリースノートに
この DirectX SDK には次のコンポーネントは含まれていません
* Direct3D8 およびそれ以前の全てのバージョン
ってあるから、Direct3D8はサポート外なんじゃないの?
もしインストールしたSDKのIncludeディレクトリにd3d8.hがあるんなら、Includeパスの設定を再確認しれ。
あと、少なくともJune2006にはd3d8.hは入ってるのを確認した。
106:デフォルトの名無しさん
07/12/21 20:10:39
November2007です、d3d8.hがなくて、代わりにd3d10.hが入ってました。
アンインストールしてJune2006入れてきます。ありがとうございました。
107:デフォルトの名無しさん
07/12/21 21:01:44
June2006にもd3dx10.hはあるけどね。
あと、そのページはDirectX8について記されてるんだけど
DX10がやりたいならよそを見たほうが良いよ。
初期化まわりは8→9→10で全然変わったからやり直しになるし。
あと、DX10は動かすにはVistaがいるから。念のために。
108:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/12/22 22:07:23
Direct3DでWM_PAINTで描くのはありですか?
110:デフォルトの名無しさん
07/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);
}
111:108
07/12/22 22:11:38
連投すいません
問題点の大元が判明いたしました
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);
}
widthとheightに大きな値を入れると重くなりました
1とか10だと正常です・・・
112:デフォルトの名無しさん
07/12/23 07:34:04
プロファイリングしたら?
D3DXSpriteなんてただでさえDirectXのバージョンに依存するからみんな回避してるのに、
この情報だけで分かるエスパーは居ないと思う。
つPIX for Windows
つDevPartner Profiler
まずは、どこで処理時間が落ちてるか見たほうが早いよ。
113:108
07/12/23 09:34:36
>>112
ありがとうございます
その後の調べでどうも大きな絵を大量に呼び出すと落ちる様子
たとえ呼び出し側での大きさの縦横は1*1でも、元の絵が大きいと
どのPCどんな処理でも避けられないらしいので
妥協して少し絵の大きさを改善してみますm(_ _)m
お答えありがとうございました
114:デフォルトの名無しさん
07/12/23 11:35:36
てか、元のテクスチャのサイズがでかかったら
パフォーマンスが落ちるのは当たり前じゃ
115:デフォルトの名無しさん
07/12/23 11:37:43
あなるほど
116:108
07/12/23 11:43:53
>>114
いや、initでの呼び出しで重くなるのはわかるんですが
メインループの中では1*1でも重いんですよ・・・
117:デフォルトの名無しさん
07/12/23 12:00:51
表示で小さくしてるってことは
内部的に縮小してるってことだ
LPD3DXSPRITEがどういうアルゴリズムで
拡縮してるかはしらんがバイリニアってことはないだろうし
ぼけたりすることを考えるとなんらかのフィルターをかけているのは想像つく
それを巨大なテクスチャに適用してるんだから重いのは当たり前
118:108
07/12/23 12:11:19
私の書き方がわかりにくくてすいません
要は2000*2000の画像をinitで読み込んで
1*1の部分しか表示していないのにそれを10個ほど並べたら重いんです
3個くらいなら正常なんですが・・・・
フィルタ関連で重くなるようなら少し見直して見ますm(_ _)m
ありがとうございました
119:デフォルトの名無しさん
07/12/23 12:19:52
だから・・・
>2000*2000の画像をinitで読み込んで
この時点で重い処理がすべて終わってるわけではない
簡単に言うとここではVRAM上に
2000x2000の領域を確保して画像の色情報を格納してるだけ
基本的には毎回描画のたびにこの
2000x2000の領域にアクセスして
そこの情報をバックバッファに転送することになる
元のサイズが大きければ大きいほど
転送のための時間がかかるし
何らかの処理をかければ当然重くなる
基本的には表示するサイズでテクスチャを作るのが普通
120:デフォルトの名無しさん
07/12/23 12:23:03
ビデオカードによっては
2048×2048にしたら多少は改善されるかもね
121:108
07/12/23 13:17:50
>>119
>>120
そうですか・・・initで読み込んだら以降はもう関係ないものだと勘違いしておりました
スキル不足を痛感いたします
ご教授本当にありがとうございました
122:デフォルトの名無しさん
07/12/23 13:22:14
リファレンスでやってるだけでね?
123:デフォルトの名無しさん
07/12/23 13:50:19
たかだか2048のテクスチャで最近のビデオカードが遅くなるかね〜?
なんか、致命的な間違いをしていると思われ。
124:108
07/12/23 14:28:32
>>123
それを15〜23個くらい呼んでます
125:デフォルトの名無しさん
07/12/23 17:00:04
そもそもVRAMが足りなくなってて
システムメモリ上に作られてるとか
あるいは
システムメモリとVRAMが共用になってて
バス速度がボトルネックになってるとか
126:デフォルトの名無しさん
07/12/23 17:42:47
実はDX8で開発していますとか言い出すんじゃないだろうな。
127:デフォルトの名無しさん
07/12/23 17:59:09
DirectXを使ってWindowsのゲームを作りたいのですが、
お勧めの入門書を教えてもらえませんか?
作りたいのはビートマニアのように音とシンクした、
シューティングゲームです。
3Dグラフィックは使いません。
128:デフォルトの名無しさん
07/12/23 18:00:57
今のDirectXで3D使わずに絵描くのって無理じゃ
129:デフォルトの名無しさん
07/12/23 18:08:07
ぶっちゃけ
DirectX関連で「これ1冊あれば」って本はないんだよなぁ
3〜4冊やってようやく
あ、なんとなく分かってきたかも。となる
どの本もだいたい「サンプルを動かすための」ソースになってるから
なんでそうなってるのかが説明されてないし
応用しようとするととたんに動かなくなったり・・・
数をこなすと何をやってるのかがだんだんわかってくるので
自分でいろいろ応用することができるようになる
130:127
07/12/23 19:02:13
何も知らない状態で、何から始めるのがいいか、
アドバイスをもらいたいです。
>>128
3D描画しかできないんでしょうか?
3Dを使って2Dの描画ができるならいいんですが、
あまり効率がよくないならDirectXを使うこと自体考え直します。
メインでやりたいのは音の制御なので、描画はそんなに凝りません。
シューティングゲームなので、図形の衝突判定ができると便利かもしれませんが。
>>129
それじゃあ、とっかかりとして何を参考にするのがいいんでしょうか?
サンプルを見て数をこなして、少しずつ把握していくしかないんでしょうか?
131:デフォルトの名無しさん
07/12/23 19:06:45
>>130
ゲーム製作初心者なのか
DirectX初心者なのかにもよる
132:デフォルトの名無しさん
07/12/23 19:14:48
>>130
3Dを使って2Dの描画ができるならいいんですが
OK
133:デフォルトの名無しさん
07/12/23 19:19:08
>>130
DirectX9でスプライトが一番お手軽だと思われ。
134:デフォルトの名無しさん
07/12/23 19:37:25
>>130
シューティングゲーム製作本出てるぞ
それを参考にすれば?
135:デフォルトの名無しさん
07/12/23 19:59:17
>>124
なるほど。VRAM足りてないね。
1024*1024のA8R8G8B8テクスチャが大体4MByteね。
2048テクスチャだと4倍の16M。それが15個で240M。23個なら368M。
ちょっと無茶な設計になってると思われ。
不要なテクスチャは必要な時だけ確保するようにした方が良いし、
テクスチャは効率的に隙間無く活用した方が良いよ。
136:127
07/12/23 21:10:44
>>131
>>131
ゲーム制作初心者です。プログラミング歴も1年程度です。
ただ、Javaで簡単なシューティングゲームを作ったことはあるので、
シューティングゲームのアルゴリズムに関してはだいたいどうやるか決めています。
分からないのは音の精密な制御で、ゲームの進行と正確にシンクさせる部分です。
その部分をどうやっていいのか、イマイチ当たりがつかない状況です。
137:デフォルトの名無しさん
07/12/23 21:19:44
>>136
入門書の枠からは外れてるかな。
再生時間'(再生位置)を取得させれば良いだけの話だけど、
この手のゲーム以外で使うことはほとんど無いため扱わない。
ストリーミングバッファの解説が載っていればそれを応用すれば出来ることに気付くかも知れんが。
138:デフォルトの名無しさん
07/12/23 23:48:37
広大なマップを作りたいんですが、バカ正直にモデルを作って読み込んだら物凄く重たくなってしまいました。
程よいメッシュ数で一定区画毎のモデルを用意して、必要分だけ読み込んで表示するのでしょうか??
139:デフォルトの名無しさん
07/12/24 00:16:12
>>138
東京から大阪へ行くのに新幹線で行くのでしょうか? という質問をされてどう答えろと。
140:デフォルトの名無しさん
07/12/24 00:31:31
東京の六本木を歩いてるだけのシーンでも、ニューヨークとかパリとか地球全部描いてるわけか?
そんな恐るべき無駄は止めた方がいい
141:138
07/12/24 01:09:58
>>139
??
夜行バスでも行ける、ってことですか??
でも、新幹線で行けるならそれに越したことはないですし、>>138の方法でイイってことかな・・・。
>>140
そ、そんなことはしません(汗)
今までゲームをしてきて、当たり前のように見てきた広大なフィールドを実現するのがこんなにも
たいへんなことだなんて・・・
ゲーム開発者の人を改めて尊敬します。
URLリンク(www.acecombat.jp)
これとか、すごすぎです(;´д`)
142:デフォルトの名無しさん
07/12/24 01:20:10
地面はまっ平ら
木はビルボードにしか見えないんだが
143:デフォルトの名無しさん
07/12/24 01:32:33
ワラタ
144:デフォルトの名無しさん
07/12/24 08:39:45
>>141
アプリケーションに正解なんて無いぜ?
>程よいメッシュ数で一定区画毎のモデルを用意して、必要分だけ読み込んで表示するのでしょうか??
つまり>>139の例で言うと新幹線で行くのも正解だし、バスで行くのも正解、歩いていくのも正解だろ。
自分の案があるならそれを試した上で軽くなる方法が無いか聞かないと。
145:デフォルトの名無しさん
07/12/24 10:02:56
DX9 2007Nov .Net
HLSLについての質問です。
以前PassがBeginPassとEndPassに変わったと言うやりとりがありましたが
上がっているHLSLのサンプルがことごとくエラーを出して正常に実行できません。
サンプルにSDKのバージョンを合わせれば動くでしょうが、そこから最新のバージョンに動かすように修正が出来ませんでした。
現在のバージョンで動くHLSLのシンプルなソースや解説をしているサイトは無いでしょうか。
せめてHLSL部分だけでもあればいいのですが、fxファイルが正常に読み込めエラーが出たりとか・・orz
146:デフォルトの名無しさん
07/12/24 10:12:49
きちんとヘルプが付いてきているだろ。
それで何が問題なんだ?
147:デフォルトの名無しさん
07/12/24 10:53:43
>>145
別にHLSLの部分は何もかわってないぞ
fxファイルが読み込めないのは
どっかに構文エラーがあるからじゃね?
148:デフォルトの名無しさん
07/12/24 11:13:46
>>145
>上がっているHLSLのサンプル
どこのサンプルだよ?
149:デフォルトの名無しさん
07/12/24 11:44:39
>>148
Pass()のままのところもあります(修正してもメモリ周りでエラーが出たり)
t-pot『HLSL』 (画像の下辺りにサンプル)
URLリンク(tpot.jpn.ph)
DirectX9での上位レベルシェーダー言語(HLSL) (最下にサンプル)
URLリンク(www001.upp.so-net.ne.jp)
Shader.jp - Articles-第4回「HLSL スタート」 (上から1/5程の位置にある赤字文の下にサンプル)
URLリンク(www.shader.jp)
その7 HLSLによる極短レンダリング:サンプルプログラム (画像の下辺りにサンプル)
URLリンク(marupeke296.com)
150:138
07/12/24 12:31:45
>>144
分かりました。
ありがとうございました。
151:デフォルトの名無しさん
07/12/24 21:55:38
>>149
俺もうごかねぇや。
てか自前のでさえ動かなくなってた。
詳しく調べてないから分からんが仕様が数箇所で変更されてエラーが複雑化しているように思える。
ぶっちゃけ去年辺りのSDK使えばいいんじゃね?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4765日前に更新/170 KB
担当:undef