【C++】 DirectX初心者質問スレ Part11 【C】
1 :
デフォルトの名無しさん :
2006/09/29(金) 00:09:44 ※回答する人も、質問する人も必ず読んでください これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。
2 :
デフォルトの名無しさん :2006/09/29(金) 00:10:27
3 :
デフォルトの名無しさん :2006/09/29(金) 00:12:20
4 :
デフォルトの名無しさん :2006/09/29(金) 00:15:34
てんぷら揚げ終わった
さっくりサクサク美味しゅうございます
最近DirectXの勉強を始めまして、現在SampleBrowserのコードを色々いじくっている所なのですが、 Tutorialsのところにある例えば、Tutorial 2: Vertices などを、SimpleSampleやEmptyProjectで実現したいのですが、方法がよく分かりません。 3角形を描画するための初期化、描画、解放を行う関数をそれぞれ、Initial()、Render()、Close()としてdraw.h、draw.cppに記述したとした場合に、それぞれの関数を、メインのソースファイルのどこに記述すればよいのかを教えていただきたいです。 情報が不足していたら、ご指摘願います。 以上、よろしくお願いします。
7 :
6 :2006/09/29(金) 00:25:00
環境を書くのを忘れていました。 環境は、Visual Studio.Net2005+DirectXSDK(August 2006)+XPです。
前スレ 986です。 度々ありがとうございました。 無事目的が達成できました。 ちなみに990は別の方が便乗されたようです。
9 :
デフォルトの名無しさん :2006/09/29(金) 10:56:54
Xファイルの仕様について質問があります。 スキンメッシュアニメーション(ボーンアニメーション)と、 通常のアニメーションメッシュ、 などの「Xフィアル」について仕様が書かれた ホームページありますでしょうか?
11 :
デフォルトの名無しさん :2006/09/29(金) 12:20:21
>10はブラクラのようですね。 MSDN ????? ???????? ???? ??? Embedded ?? .NET ?? Office ????????? ???? ??? ?????????? Web ?? Win32 ??? COM ?? MSDN ????? ????? MSDN ????? ????? 他のまともな方お願いします。
なんか頭が悪すぎる。
>>11 そのブラウザで見れないんだったらIEで見てみ。
普通にマイクロソフトの開発者向けサイトだから。
14 :
デフォルトの名無しさん :2006/09/29(金) 14:02:27
>13 見られました。 今からじっくり見てわからなかったらまた質問しにきます。 ありがとうございました。 >12 俺もそう思いましたw なんか偉そうな態度のわりには>10は頭悪い感じしますよねw
16 :
デフォルトの名無しさん :2006/09/29(金) 18:05:44
CreateVertexBufferの第二引数Usageフラグについて聞きたいんだけど どんな、組み合わせが一番無難なの? よろしく
17 :
デフォルトの名無しさん :2006/09/29(金) 18:30:06
メッシュって何ですか?
>>18 それだけじゃあ、わからんよ
用途ごとに、どんな組み合わせでつかってるの?
用途に合わせた組み合わせを紹介してくれよ
よろしく頼む
どんな用途に使うのか説明するのが先。
あなたが、よく使うやつでいいから 用途の説明とそれに合った無難な組み合わせを 5個ぐらい紹介してくれるとうれしい。 よろしく
どんな用途で使いたいのか教えてくれたら教えてあげるよ。
>>22 >>21 >あなたが、よく使うやつでいいから
よろしくね
まあ、いくつかのパターンを知りたいだけなんだよ
24 :
デフォルトの名無しさん :2006/09/29(金) 19:57:34
質問です 頂点フォーマットのRHWがよくわかりません 2Dのポリゴンを表示するときはRHWを定義して、普通は定義しなくていいと解釈してるんですが どうですか?
>>24 Matrox系のビデオカードとかRHWだとクリッピングが働かず、
範囲外に描画すると何にも表示されなくなるので、2Dの場合でも使用はおすすめしない。
真性の真似してネタ質してるやつウザスギ
28 :
デフォルトの名無しさん :2006/09/29(金) 20:10:37
今日からDirectXの勉強を始めたいのですが、本を買ったほうがいいですか? それともサンプルやチュートリアル、ドキュメントだけで大丈夫ですか?
実際にやってみて、ダメだと思ったら本を買えばいい。
>>24 その解釈でOK
頂点が既にスクリーン座標に変換されてますよーフラグ
と思っとけば良いと思うよ
>>28 本買った方が、気楽だし、お金出してる分力が入ると思うよ。
DirectXゲームグラフィックスプログラミング
↑この本が一番無難だと思う
>>25 >>21 >>テンプレ SDK呼んでもわからないから聞いているんだよ
>>27 いや、ネタじゃないんだよ
マジだよ。
いろんな、サイト見ても、みんな0かD3DUSAGE_WRITEONLY + D3DPOOL_MANAGED
ぐらいしか、使ってないしw
みんなも良くわかって使ってるとは思えないんだよね〜
だから、確認したいから質問してるんだよ
だから状況によりけりなんだから、何に使うのか具体的に書け。
ごめんよ・・・僕達が不甲斐無いばっかりに 君にすべてを押し付けるようなことになって・・・。 でももうちょっと回答ができそうなんだ、 だから頼む、君の頂点バッファの用途を教えてくれ!
33 :
デフォルトの名無しさん :2006/09/29(金) 20:37:04
>>31 >>32 >>21 それにしても、君らもがんばるねェ
たった、5個答えるだけだろ?w
スレが汚れるから、これ以上やめたらw?
35 :
デフォルトの名無しさん :2006/09/29(金) 20:43:49
今、ボーンアニメーション再生するツール作ったんだが、 環境によって動いたり動かなかったりする。 開発環境 VC++6.0+DirectX9 1.動くパターン 「d3dx9_25.dllがありません」という警告が出るタイプのパソコンは d3dx9_25.dllを実行ファイルと同じフォルダに入れると動く 2.動かないパターン 実行できるが、ファイルを読み込むときに 「Xファイルが読み込めなくて」落ちる。 (落ちるのは俺のプログラムの仕様なわけだが) 「2」においてd3dx9_25.dllの新しいのをSystem32に入れてみたり したがだめだった。 ちなみにDirectX9.0cです。
>たった、5個答えるだけだろ?w 先生、お願いします! >落ちるのは俺のプログラムの仕様なわけだが 修正頑張ってください。応援してます。
>>35 DLLどうこうじゃなくて、単純にプログラムにバグがあるせいだろう。
細かいところはソースを晒すしかない。
D3DXの細かな挙動の違いに振り回されてるな。
まず間違いなく
>>37 の言うとおりなので、落ち方晒せ。
>>35 読み込み時に返ってきている(であろう)エラーは確認した?
40 :
35 :2006/09/29(金) 21:08:14
>>37 >>38 まず、ファイルを読み込むところ
HRESULT SkinMesh_Class::SKIN_MESH::InitThing(LPDIRECT3DDEVICE9 pDevice,THING *pThing,LPSTR szXFileName,D3DXVECTOR3* pvecPosition)
{
// メッシュの初期位置
//memcpy(&pThing->vecPosition,pvecPosition,sizeof(D3DXVECTOR3));
// Xファイルからアニメーションメッシュを読み込み作成する
if( FAILED(
D3DXLoadMeshHierarchyFromX(szXFileName, D3DXMESH_MANAGED, pDevice, &cHierarchy,
NULL, &pThing->pFrameRoot, &pThing->pAnimController)))
{
MessageBox(NULL, "Xファイルの読み込みに失敗しました",szXFileName, MB_OK);
return E_FAIL;
}
//
AllocateAllBoneMatrices(pThing,pThing->pFrameRoot);
return S_OK;
}
エラーは返ってないんじゃないのか? 動くか、クラッシュするからしいし。 とはいえ、動く方でデバッグレベル最大にして実行するのは 価値があるとは思うけど。
42 :
35 :2006/09/29(金) 21:09:30
HRESULT SkinMesh_Class::CreateSkinMesh() { SkinMesh.InitThing(pDevice,&Thing,create_skin_mesh_str.file_name,&D3DXVECTOR3(0,0,-1)); return S_OK; }
カレントパスが違うからデータが読めないとかいう落ちだったらぶっ殺す。
44 :
35 :2006/09/29(金) 21:10:31
void OpenFiles(HWND hWnd) { OPENFILENAME ofn; memset(&ofn, 0, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hWnd; ofn.lpstrFilter = "x files(*.x)\0*.x\0All Files(*.*)\0*.*\0\0"; ofn.lpstrFile = FileName; ofn.nMaxFile = MAX_PATH; ofn.Flags = OFN_FILEMUSTEXIST; ofn.lpstrDefExt = "x"; ofn.nMaxFileTitle = 64; ofn.lpstrFileTitle = FileTitle; ofn.lpstrTitle = "xファイルを選択してください"; if (GetOpenFileName(&ofn)) { InvalidateRect(hWnd, NULL, TRUE); strcpy( sm.create_skin_mesh_str.file_name, FileName ); if( S_OK == sm.CreateSkinMesh() ) { show = 1; sm.skin_mesh_str.vecPos = D3DXVECTOR3( 0, 0, 0 ); } } return; }
45 :
35 :2006/09/29(金) 21:11:29
case WM_COMMAND: switch (LOWORD(wParam)) { case IDM_END: SendMessage(hWnd, WM_CLOSE, 0, 0); break; case IDM_OPEN: OpenFiles(hWnd); break;
XFile が読み込めなかったって本人が言ってるんだから、 >MessageBox(NULL, "Xファイルの読み込みに失敗しました",szXFileName, MB_OK); ここ通ってんじゃないの? D3DXLoadMeshHierarchyFromX の戻り値調べてみなされ。 後は一応、渡してる引数に異常な値が入ってないかどうかも。 パスはありえるな、D&Dで起動してカレントがデフォルトになっちゃってるとか。
47 :
35 :2006/09/29(金) 21:13:54
コーディングは突貫工事で造ったんで、
汚い・・・っていう突っ込みは簡便してぽ。
>>40 がファイルを読み込むところ
>>42 使いやすいように変更したところ
>>44 mainで開くための関数
>>45 メッセージループで実際に使っているところ
>>他の人
連続カキコスマソ。
固めてうpろーだに上げろよ。
その方がいいな。
50 :
35 :2006/09/29(金) 21:26:41
エラーで、出る
例外処理 (初回) は _show_.exe (D3DX9_25.DLL) にあります: 0xC0000005: Access Violation。
って関係ありまつか?
>>48 >>49 もう少しまってぽ。
>>46 今、プログラムで確認中。
51 :
35 :2006/09/29(金) 21:39:43
>>46 D3DXLoadMeshHierarchyFromX
の戻り値は0x80004005でつた。
ネット調べると、よくわからない失敗ってことになっているけど・・・。
53 :
35 :2006/09/29(金) 21:51:29
54 :
35 :2006/09/29(金) 22:00:54
>>42 を
HRESULT SkinMesh_Class::CreateSkinMesh()
{
return SkinMesh.InitThing(pDevice,&Thing,create_skin_mesh_str.file_name,&D3DXVECTOR3(0,0,-1));
}
って変えたら落ちなくなったっす。
>>52 嫌いじゃないぜ、もまえみたいなやつ。
55 :
35 :2006/09/29(金) 22:06:15
落ちなくしたら、
>>50 の例外処理うんぬんが消えまつた。
重要なことを言い忘れてまつた。
(すんません)
読めるモーション付Xファイルと
読めないモーション付Xファイルがあります。
>>35 の
「1」のケースではすべてのモーション付Xファイルが読めます。
「2」のケースでは読めないモーション付Xファイルが存在します。
(読めるのもある)
>>51 SkinMesh.InitThing
の戻り値じゃなくて、じゃなくて
D3DXLoadMeshHierarchyFromX
の戻り値だぞ?
ちゃんと、
>MessageBox(NULL, "Xファイルの読み込みに失敗しました",szXFileName, MB_OK);
この行の直前にブレークポイント置いた?
>>30 俺はパーティクルなんかでは D3DPOOL_DEFAULTに USAGE_DYNAMIC | USAGE_WRITEONLY を使うこともある。
どのような場合でどのような使い方をしたらいいかなんてのはドキュメントに書いてあるし、
そのとおりに場合に合わせて適切なものを選べばいいだけ。
>いろんな、サイト見ても、みんな0かD3DUSAGE_WRITEONLY + D3DPOOL_MANAGED
>ぐらいしか、使ってないしw
>みんなも良くわかって使ってるとは思えないんだよね〜
>だから、確認したいから質問してるんだよ
D3DUSAGE_WRITEONLY + D3DPOOL_MANAGED は
ファイルから読み込んだモデルデータのように一度作成したらその後手を加えない
頂点データに向いている使い方。
そこらの初心者講座とかモデル読んで出してるだけだろうし間違ってはないだろ。
ドキュメントにフラグの意味も、最適化の手法もすべて書かれているのに
よく分かって使ってないなんてヤツは程度が低すぎる。
>>55 >読めるモーション付Xファイルと
>読めないモーション付Xファイルがあります。
これは当たり前
アニメーションのフォーマットは統一されてないから
読み込む側がいろんな方言に対応しないといけない
59 :
30 :2006/09/29(金) 23:36:20
>>57 まさしく、質問通りの聞きたかった事を答えてくれて有難うございます。
おっしゃる通り、私は程度が低かったです。
程度が低いレスをしてしまったことも反省しております。
なんだかんだ言って、回答してくれる、ここの人達はやさしいですね。
本当に有難うございました。
この板はツンデレの楽園だからなw
61 :
35 :2006/09/30(土) 01:07:43
>>56 >SkinMesh.InitThing
>の戻り値じゃなくて、じゃなくて
>D3DXLoadMeshHierarchyFromX
>の戻り値だぞ?
>ちゃんと、
>>MessageBox(NULL, "Xファイルの読み込みに失敗しました",szXFileName, MB_OK);
>この行の直前にブレークポイント置いた?
ボスの言うとおり、
D3DXLoadMeshHierarchyFromXの戻り値でさぁ。
OutputDebugString()関数でガッチリきゃっちしましたぜ。
>>58 >アニメーションのフォーマットは統一されてないから
>読み込む側がいろんな方言に対応しないといけない
えと、
「同じ実行ファイル」で「環境によって」は
「同一のXファイルが読めなかったり、読めたり」します。
書き込みはいいから、プログラムをアップした方が早いよ。
63 :
35 :2006/09/30(土) 01:33:16
コンパイルできて実行できる環境をアップローダでアップ。 これで確実に問題点を見つけてくれる。誰かがw
65 :
35 :2006/09/30(土) 01:37:20
66 :
35 :2006/09/30(土) 01:42:23
>>64 ソースコード全部はさすがに恥ずかしい。
中学生の時に書いた(書いてないけど)ポエムを
晒すようなもんだ。
>>65 信用して実行してみた。
どっちのXファイルも問題なくロードできて表示できたよ。
よって、俺の環境では検証できない('c_`;)
同じく読めた。 よって以下同文('c_`;)
69 :
35 :2006/09/30(土) 01:50:34
>>67 漏れの環境では再生できない。
うちにある他のパソコンでは再生できたんだYO。
つーわけで、プログラムのコーディングミスの線は
そろそろ諦めてくれると嬉しぃ。
おじさん、dll関係が怪しいと思うのだよ。
(DirectX9.0cなんだが、更新できてないdllとかありそう)
>>69 上2行と次の2行がつながってないぞ
例えば、デバイスの初期化できちんとデバイスの能力をチェックしていないとかエラー処理をしていないとか
(そのせいで、初期化に失敗してるのに次に進んでしまって、たまたまそこで落ちてるだけかもしれない)
メッシュロード部分を削ったらちゃんと動く?
71 :
35 :2006/09/30(土) 02:00:49
動いた人にちょい聞きたい。 ファイル名を指定して実行→dxdiag でDirectX診断ツール呼び出してくんろ。 DirectXのバージョンって、 DirectX9.0c(4.0900000904) でつか? タブで「DirectXファイル」を選択すると 「ファイル d3d9d.dll はデバッグ版です。製品版より遅く動作します。」 って出るんだけど、これって出てるの漏れだけ?
72 :
68 :2006/09/30(土) 02:03:11
>DirectXのバージョンって、 >DirectX9.0c(4.0900000904) Yes. >「ファイル d3d9d.dll はデバッグ版です。製品版より遅く動作します。」 >って出るんだけど、これって出てるの漏れだけ? SDK入れてりゃ出る。気にすんな。
73 :
35 :2006/09/30(土) 02:06:03
>>70 言語障害なもんで、正しく日本語使えなくてスマソ。
>メッシュロード部分を削ったらちゃんと動く?
えと、ロード(つーかなにもしないプログラム)は今やってみたけど、へーきでしたぜ。
プログラムは動きます。
コーディングミスがあるかどうかはソースを見なければわからない。 実行ファイルだけ渡してソースのどこがおかしいとか聞かれてもこまっちゃう
75 :
35 :2006/09/30(土) 02:13:39
>>68 dクス。
グラッフィックボードのビデオチップって関係ありまつか?
なんせ、5年前のもの使ってるんで・・・。
Creative CT6971(NVIDIA)
GeForce DDR
ビデオメモリ32MB
とりあえず、今からドライババージョンアップしてみる。
つーか、読み込みの段階で失敗してるから、
関係ねぇと思うけど・・・。
>>75 まぁ試してみた。
読めることは読めたが終了時にエラー。
Direct3D9: (WARN) :Ignoring redundant SetRenderState - 151
スレッド 0xF10 終了、終了コード 0 (0x0)。
スレッド 0x9A4 終了、終了コード 0 (0x0)。
スレッド 0xD38 終了、終了コード 0 (0x0)。
スレッド 0x418 終了、終了コード 0 (0x0)。
Direct3D9: :====> ENTER: DLLMAIN(0367d6e0): Process Detach 00000a64, tid=000007c4
Direct3D9: (INFO) :MemFini!
Direct3D9: (WARN) :Memory still allocated! Alloc count = 124
Direct3D9: (WARN) :Current Process (pid) = 00000a64
>>75 気持ちはわかるが、やっぱりソースをうpるべきだと思うぞ。
>>75 ビデオメモリ圧倒的に足りてないんじゃないか?
それにしても、エラーが E_FAIL ってのが謎なんだよな。
79 :
35 :2006/09/30(土) 02:33:03
ビデオカードのドライバなかつた。
死の予感。
>>76 げげ、終了時のエラーでまつか?
欝だ死のう。
漏れの環境だと一回も出なかったのに・・・。
原因については、ちょい究明するまで待ってくらさい。
(メモリの開放臭いけど)
>>77 >>74 うpするのちょい待ってケロ。
朝までに解決しなかったらうpする。
うちのパソコン全部で4台あるんだよ。
漏れのパソコン以外の3台では動いたんでつ。
環境はどれもWindowsXP SP2だと思う。
>>78 ビデオメモリ32MBで足りないッすか?
今時の人どんくらい積んでんの?
80 :
35 :2006/09/30(土) 02:38:32
>>78 関係ないと思うけど、明日
ビデオカード買ってくる。
今って128MBがふつーなんだすね。
ちょい考え直した。
>うちのパソコン全部で4台あるんだよ。 どんだけ持ってんだよwww
俺はノート2台にデスクトップ3台あるぞ? 1台はLinux鯖だけど。 ATIとnVIDIAで最低でも2台は欲しい。
うちビデオメモリ16MBだが動いたよ
84 :
83 :2006/09/30(土) 02:49:15
スキンメッシュの方もね
85 :
35 :2006/09/30(土) 02:53:37
動かないって香具師はいないのか?
>>82 動作検証用か?
個人で持つには持ち過ぎな気がするんだが…
いや、好き好きだからいいんだけどね。
俺はノートと家鯖とMacと…
すまん、うちも3台はあったわ。
87 :
35 :2006/09/30(土) 04:10:40
88 :
35 :2006/09/30(土) 04:27:32
自己完結。 みなさまありがとうございました。 みなさまには厚く御礼申し上げます。 ,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ! |i i| }! }} //| |l、{ j} /,,ィ//| 『おれはCriateDevice関数をHALモードで実行したんだが i|:!ヾ、_ノ/ u {:}//ヘ 俺の環境だけD3DXLoadMeshHierarchyFromX関数でエラーが返ったんだ』 |リ u' } ,ノ _,!V,ハ | /´fト、_{ル{,ィ'eラ , タ人 な… 何を言ってるのか わからねーと思うが /' ヾ|宀| {´,)⌒`/ |<ヽトiゝ おれも 何をされたのか わからなかった… ,゙ / )ヽ iLレ u' | | ヾlトハ〉 |/_/ ハ !ニ⊇ '/:} V:::::ヽ 頭がどうにかなりそうだった… // 二二二7'T'' /u' __ /:::::::/`ヽ /'´r -―一ァ‐゙T´ '"´ /::::/-‐ \ コーディングミスだとか排他ロックだとか / // 广¨´ /' /:::::/´ ̄`ヽ ⌒ヽ そんなチャチなもんじゃあ 断じてねえ ノ ' / ノ:::::`ー-、___/:::::// ヽ } _/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::... イ もっとVGAの恐ろしいものの 片鱗を味わったぜ…
89 :
35 :2006/09/30(土) 04:37:24
さんざん騒がせた
>>35 のまとめ
結局なんだったの?
:問題
「スキンメッシュが読み込めねぇ、環境によっては読み込める」
「スキンメッシュのXファイルも、モノによっては読み込めたり、
読み込めなかったりする」
(D3DXLoadMeshHierarchyFromX関数が環境によっては、
エラーを返さなかったり返したりする)
:原因
ビデオカードが中途半端にしょぼい5年前のものだった。
しょぼいが故に頂点数?が少ないものについては、
実行できるものの、複雑なものになると実行できない。
しょぼいビデオカード使うやつは3Dのプログラム組むな。
:解決策
以下に示す解決策が有効だと思われる。
1.ビデオカードのドライバをバージョンアップする。
2.「1」がダメならビデオカードが古いなら新しいのを買う。
3.「2」がダメなら新しいパソコンでも買え。
以上、まとめでつた。
改めて、親身になって考えてくれたみなさまには
厚く御礼申し上げます。
90 :
35 :2006/09/30(土) 04:38:44
で、結局どうやって症状を確認したか・・・。 CreateDeviceを HAL→REF で実行したらうまく行った。
91 :
35 :2006/09/30(土) 04:46:34
えと、これでも動いた pD3d->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &pDevice ) ) ) HardwareのHALだとアウトで、 SoftwareのHALだと無事動きまつた。 マジこういうバグ、きつい。
>>91 それ、多分バグじゃないよ。
頂点ブレンドの時の同時参照可能数なマトリクスパレットの数とかの違いが
そのまま出てるだけだと思われ。クラッシュは理由がわからんが。
SOFTWARE_VERTEXPROCESSINGにすると、マトリクスパレット周辺の使用制限は
事実上無くなる。HARDWAREでやってるとデバイスの性能に引きずられる。
DEVICECAPSで違いをよく追っかけてみ。
>>91 つーかその辺をCAPSでちゃんと調べてHARDWARE/SOFTWAREで分岐させるのは
DirectXでは最低限の礼儀、バグ扱いとかあほかと。
35みたいな横着者はDX10から始めろ、と言いたい。
先日、客先のカチョさんのマウスが動かなくなるトラブルがありますた。
カチョさんは「ウィルス?ウィルス!?」とパニック状態。
ウィルスに感染すると社内報告が大変だそうで、とにかくパニック。
んで見たところマウスにえらくごみが溜まってる。タッチパッドは動く。
マウスをティッシュで拭いて即座に復活。
「マウスに埃が溜まってたみたいですね、拭いて直りましたよ」
「ほんとにウィルスじゃないんですね?」
「えぇ、違います」
「・・・」
「・・・・・」
「いや、やっぱりウィルスじゃないですか?」
(ちがうってばよ!)
>>35 カチョさん、それ多分DirectX側のバグじゃないですよ。
最近気が付いたんだけど800X600にするとアンチエイリアスっていらないんだな。 単純に解像度を高くするとジャギの問題って消えちまうっぽい。・・・そうだったのか・・・。 別にαかかってるマスクでも0or1のマスクでも結果に違いがなくなっていてちょっとショック。
チラシの裏にでも書いてろよ。
バグじゃないじゃんか。。。 長い自演だったぜ
フル画面の時にウィンドウキーを無効にしたいんですが、 どうやればいいんでしょうか?
>>99 システムキーを拾ったらOSに処理させないようにすればいい
>>101 ありがとうございます。
それはどうすればいいんでしょうか?
キーボードフックというものですか?
>>102 WH_GETMESSAGEでフックしてWM_USER+260が飛んできたら無視すればいい
やり方はネットに沢山転がってる
>>99 WM_SYSKEYDOWNで捕まえて、握りつぶしてしまえ。
ただ、基本的に無作法とされている。
本当はフルスクリーン時にスコープを奪われたら最小化、
戻ったらデバイスを復元して再度全画面化するぐらいがいい。
>>102 MS的には禁止のはず。
それをやるってことは少なくとも礼儀のないアプリってコトになる。
ALT+TABをブロックは特にやられるとウザイしな。
>>105 あのですねー。
マイソフが禁止してようがしてまいが俺には関係ないのではないんでしょうか?
ネトゲのようにお互いが同期をとるタイプのゲームを想像するとわかりますが、
うっかりウィンドウキー押すとゲームが最小化されちゃうんですよ。
あわてて戻ったら死んでた・・・なんてしゃれにならないと思いませんか?
こういうゲームを作りたくないんですよ。
そうですかおまえのいいぶんはきいたでもしね
>>107 ウィンドウズキー周辺のキー使わなきゃいいじゃん。
>>109 あなたはフリーウェア程度のゲームしか作ったことないんでしょうけど、
製品として出す以上そんな馬鹿みたいな仕様なんてありえないでしょう?
>>110 なんだシェアウェア厨か。死ね。
有料で出そうとしている癖に、無料でその辺の情報を得ようなんて
虫が良すぎる。もっと苦労しろ。
>>111 >有料で出そうとしている癖に、
ゲーム作って金もらってる俺が悔しいんですか?
>無料でその辺の情報を得ようなんて
ネットするのも金かかるの知ってますか?
>もっと苦労しろ。
このスレで調べて苦労してますが?
>>112 何、もうファビョってるのか。いいから回線切って首吊って死ね。
土日は定期的に沸くよな。 釣りだろ釣り。
本当に虫のいいというか、調子のいいシェアウェア厨は困ったもんだな。
こいつら情報をタダだと思ってやがる。スレで得た情報分の利益を分配
する事を本来なら求めるべきだ。
>>114 釣りですかね?
釣りさ。 いい感じに火病ってるのまで演出してるし。 それはさておき、誰かこのスレで利益得てるとしても、そんなのの還元求められる義理なんかないぞ。 何事も自己責任な匿名掲示板で、ただダベってるだけなんだから、漏れら。
まあ普通はそうだな。でもシェアウェア厨だけはどうにも虫が好かんのですよ。 こいつら自分の事しか考えてない。スレの中にロボットが居て、質問をすると 自動的に答えが返ってくると思っているような所がある。
118 :
102 :2006/09/30(土) 22:10:11
102ですが、102より後の書き込みは違う人の書き込みです。
>>117 気にすんなよ。
つか、そんな理由で喧嘩するなら自分の縄張りでやってくれ。
フリーと大して変わらない程度のクオリティしか出せないくせに シェアウェアとして置いてあるベクターのソフトみるとぶっ潰したくなるなw あんな糞レベルでよく恥ずかしげもなく出せるもんだと思うよ。
シェアウェア厨は糞。人から金を取る事しか考えていない。 だいたい質問に答える方もネットで金かかってるっつーの。 そんなのいちいち言わないだろ。 だからと言って割れたりしたら、それこそ糞シェアウェア厨と 同じレベルに落ちてしまうから、それはしない。単にDLしない、 使わない。もっとマシな市販ソフトを買う。
このスレに子供しかいないのはよくわかった。
頭おかしいな。
>あわてて戻ったら死んでた これ非アクティブの時はゲーム内の処理止める仕様にすれば良いんじゃないの?
>>124 通信相手の処理まで止めるつもりか?
頭が悪いにも程があるぞ。
ゲーム中にウインドウズキーを押すような間抜けは死ねばいいんだよ。
>>125 ああネトゲか
でもネトゲだったらチート対策でホットキーからの全画面解除を制限してるソフトも多いが
制限など出来ない。 出来ることと言えば終了させるぐらいしかない。
寝て起きてみたらこの状態・・・・。
自分がゲーム作って金とれないからってそれはないでしょう。
実際こっちは月に4万円ぐらい入るし。
>>113 そっくり言い返すよ。
月に4万って、子供の小遣い銭じゃないか… 馬鹿にしてるのか?
>>129 そういうこと言えるということは、
あなたはそれ以上に稼げるということですよね?
まさかそうですよね?
そりゃ業務でやってりゃその20倍くらいはいくだろ。 ふざけろ。
なんでウィンドウズキーの話題からシェアウェアの話になってるんだ。
まったくだ。
>>131 仕事なら当たり前でしょう。
でもその仕事はあなた1人でやるんですか?
違いますよね?
まるで自分の力だけでその金額を稼いでると思ってませんか?
その点シェアウェアは俺1人の力だけで稼いでますよ。
>>132-133 いやこっちもこんな話なんてしたくないんですよ。
論点すりかえる低脳がいるもんでね。
流石に呆れるんで今後
>>131 みたいなのは無視することにします。
なんでそんなに必死なんだ。 お前一人で勝手に火病ってるだけじゃないか。 会社に属して業務で月100万稼ぐのが、個人ベースになったところで そこに自己満足以上の大きな違いがあるとでも? つーか釣りだよな? そうでもないなら大概にしてくれ。 スレ違いだしな。
>4万円 なんかこの人デジタルトキワあたりのチャットで見た気がするw
如何にもそれっぽいww
たった月4万円の事でファビョるシェアウェア基地外。 割に合わないと思わないのなら、相当めでたい脳味噌だ。
>>128 ( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \
オウム返しは敗北宣言ですよ。
MSのルールに従えないならLinuxでソフトウェア作れよ。
WindwowsOS作っててOSのルールに従えないってどんな自己厨だ。
ちなみにFF11はWindwowsキーやATL+TABかますと余裕で落ちるし
当然死んでることもある。
>>134 俺にはシェアウェアというものの考え自体理解できないんだがそういうものなのか?
趣味で作るプログラムは所詮趣味だしネット上で公開する分にはただでいいやみたいな考えなんだけど。
仕事となると1プロジェクトに100人とか居るわけだし、まぁ趣味でやるのとは話が違うわな。
>WindwowsOS作ってて すげえOSを作ってるんだな
>1プロジェクトに100人 すげえプロジェクトに参加してるんだな
シェアウェア作ってる奴は、まるで一人で作るのが偉いみたいな物言いをするな。 数人〜数百人単位で共同で作るというのがどんなに大変なのか全然わかって ないのが明らかだ。 というか、大勢で共同作業ができない性格だから一人で作ってるんでしょ? まともな会社に勤まらないからこんなスレで火病っているだけだと思うがm9(^Д^)プギャー
>数人〜数百人単位で共同で作るというのがどんなに大変なのか全然わかって >ないのが明らかだ。 その数百人の案件は、具体的にどんなプロジェクトで、 なにを経験して何が大変だったのか感想を希望。
>>144 自分で経験すればわかるよ。それに、数人〜数百人と幅を持たせている
のに、わざわざ数百人と部分的なレスを返す時点でレスする意味無し。
他人を説得するのなら具体例を挙げるのが一番。 そしてそれは自分の経験を話すのが最適。 で、数百人のプロジェクトって具体的に何?
360の案件でゲーム、初期はシェーダ類担当、後期はエンジン部メンテを主業務、 大変さはスレ1つ分くらい楽々埋まるから割愛。 もしくはPCオンラインゲーの案件で担当はUI全般と通信部分の一部、 最後人手が足りなくて課金DBも若干メンテ、 大変さはスレ2つ分くらい楽々埋まるから割愛。 こんなんでいいか?
他のスレでやれよ。
まったくだ。
WindwowsOSの開発はしてないの?
ケツの穴の小さい奴だな、typoぐらい見逃してやれよ。 漏れのケツの穴見てみろ、太平洋みたいだぞ(*)
シェアウェア厨が来るとスレが乱れるな。これはどこのスレでも同じ。 だからシェアウェア厨は嫌いなんだ。
そもそもDirectXの話題でも無かった品。 まあ、気を取り直して次の話題逝ってみよう。
ゲ製のほうでいいこと教わりました。 DISCL_NOWINKEYです。 同じDirectXスレなのにレベルが違いすぎますね。 次スレのタイトル案を置いていきます。 【C++】 俺達DirectXわからない初心者なので質問にも満足に答えられないスレ Part12 【C】 長すぎますが適当に短くして下さい。 それではさようならもう来ません。
>>154 マジでレスしていいのか分からんが、
フルスクリーン専用でALT+TABは対策しないけど、Winキーは対策します。
画面切り替えはサポートしませんって、ダメなソフトウェアの典型なんだけど・・・。
そういう中途半端なのを許容するのは杜撰だと思われても仕方ない。
フックをやるなら全部やる、フックをやらないなら他の方法でフォローって考えとけよ。
157 :
デフォルトの名無しさん :2006/10/02(月) 17:09:23
質問です。DirectXのラッパーライブラリで、よくテクスチャ管理に構造体を使っていて ライブラリの使用者は識別番号を使って構造体の配列を指定する、という仕様のライブラリがあるんですが 配列の要素数が多いと最初から大量のメモリを占領してしまうし、なんとなくかっこ悪いので STLのvectorを使って必要なときにpush_backで要素数を増やして、不必要になれば削除するようにすれば カッコイイと思うんですが、DirectXのサンプルなどでプログラム終了時にテクスチャは Release()で解放してから終了しています。もしかして要素を削除するときにもテクスチャを解放してから 要素を削除しなければいけませんか? 長文ですみません
> Release()で解放してから終了しています。もしかして要素を削除するときにもテクスチャを解放してから > 要素を削除しなければいけませんか? 当然。 それよりも、カッコイイ/かっこ悪いでコーディングするのはどうかと思う。 コンシューマ機では動的に要素数を増減するのは問題があるし「かっこ悪い」。
というか、
>>157 は内部処理を理解しないままライブラリとかを使ってる感じ。
160 :
デフォルトの名無しさん :2006/10/02(月) 20:58:55
>>158 解放しなかった場合、何か問題があるんですか?
かっこ悪い。
162 :
デフォルトの名無しさん :2006/10/02(月) 21:13:50
>>162 どうぞ好きなだけメモリ使い果たして下さい
200MBでも700MBでも使いまくって結構ですよ
165 :
デフォルトの名無しさん :2006/10/02(月) 21:24:54
>>163 要素を削除してもメモリは解放されないのですね
コンシューマーでも動的な確保は普通すると思うだけど・・・ メモリプール&アロケーターの自作なんて常識じゃねぇの? どうせソフトの終了=リセットor電源OFFしかねぇのに。
人によるっしょ。ヘッダファイルにその辺の定数をずらっと並べる奴もいれば 設定ファイルで変えられるようにするやつもいる。PCのプログラムで 前者みたいなのを見たことあるし、コンシューマーで後者みたいなのも 見たことある。
>>166 > コンシューマーでも動的な確保は普通すると思うだけど・・・
動的な確保は当たり前。「動的に要素数を増減する」だよ?
これはメモリが細分化するから禁止してるよ。
>>168 ちょっとまとまった領域作って
その中での確保、解放は管理して見た目自由にさせてやれば?
用はワンフレ単位で確保・解放を繰り返すようなのがまずいだけっしょ?
禁止にしても作りにくいだけじゃん。
>>169 それただのメモリプールじゃんか・・(;´д`)
動的な確保・解放は普通にやるよ。
「vectorで要素数の増減」の意味がわかってないのか??
171 :
デフォルトの名無しさん :2006/10/03(火) 00:12:16
なんかよく分からないんですが、vectorは使わないほうがいいっていうことですか?
172 :
デフォルトの名無しさん :2006/10/03(火) 00:15:03
なんかよく分からないんですが、ゲームがフリーズし易いのはここにいるような方が作ってるからなんですか?
map<string,LPDIRECT3DTEXTURE9>
174 :
デフォルトの名無しさん :2006/10/03(火) 00:17:18
なんかよく分からないんですが、よく分かりました
it = tex_map.find() if( it != tex_map.end() ){ create... }else{ ret = it->second
ところでお前ら何歳ですか? 学生ですか?
「vectorで要素数の増減」なんてそもそも毎フレームやるような処理でもないだろうよ・・・
vectorは、2乗単位で確保するので遅くないよ
つreserve いやスレ違い承知だけど言わせてくれ コンシューマ機でもいい加減STL解禁でいいと思うんだわ 自前アロケータがライブラリのアロケータに性能や効率で勝つことなんて滅多にねーんだし メモリの細分化もリソースの寿命ちゃんと設計に入れてれば vectorの類が刻む影響なんて屁でもねーのが普通だしな…
実際、メモリの断片化とかって本気で気にしなきゃいけないほど影響あるのかな? こーいうのは計測しづらいから、実際どれだけ有効なのかがわかんない。
超初心者の質問です もしかするとWindowsプログラミングの 問題かもしれないですが、よろしくお願いします。 今、ウィンドウモードとフルスクリーンモードを 切り替えできるように実装したのですが フルスクリーンからウィンドウモードに切り替えると ウィンドウのタイトルバーとかが無くなってしまいます。 どこへ行ってしまったのでしょうか(><)
>>177 俺は毎フレームしたら駄目とか言ってない。
そもそも分断化するから禁止してるんだよ。
>>179 内部処理を理解して使う分には全然問題ないと思う。
問題なのは「便利だから気兼ねなく使う」人達。
>>180 メモリの状態を視覚化すると分かりやすいよ。
コンシューマゲームだったらタイトルデモ中に分断化したら
8時間放置とかした時にメモリ不足で落ちるとかあり得る。
1週間連続稼動要求されたりしたっけな、そういや。 毎日朝会社に来て「よかったきょうも生きてた」ってホっとするんだよな。 そして帰りしなに覗いてみたら止まってて真っ青になったり。 いや、実際問題、そもそもメモリ資源への要求が厳しい場合はさておき、 あまりに長寿命なリソースが… 端 的 に は グ ロ ー バ ル 変 数 と か が 野放図に使って無い限り、動的確保と言えど適当な枠内に収まるのが普通。 リソースの処分ステージを設けてやるのは、本来上流の設計工程の責任だしな。 テクスチャマネージャだのの類が原因になってる場合は…まあそのなんだ、ご愁傷様。 こーいうのに限っては自前のメモリ管理導入も止むを得ないつーかむしろマストだったり。 しかしなんだね。 どこの現場の悩みも同じ様なもんだっつーか、代わり映えしないよなw
184 :
181 :2006/10/03(火) 01:40:14
ウィンドウスタイルにWS_CAPTIONを追加して ShowWindowを呼んだら上手くいきました。 失礼しました。
まあ問題になるのは大抵テクスチャとかデカイデータだよな。 テクスチャはある意味管理しやすいってのが救いだけど。 (最悪データ捨ててもプログラム停止とかになり難い) >どこの現場の悩みも同じ様なもんだっつーか、代わり映えしないよなw 代わり映えしないなw(´Д`)
186 :
デフォルトの名無しさん :2006/10/03(火) 03:15:27
Xファイル読み込んで、 描画させると、ポリゴンが透ける部分があります。 透けないようにしたいんですが、 なにかヒントいただけないでしょうか? pDevice->SetRenderState( D3DRS_SHADEMODE, D3DSHADE_GOURAUD ); pDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CW ); pDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_FALSE ); pDevice->SetRenderState( D3DRS_LIGHTING, TRUE ); pDevice->SetRenderState( D3DRS_AMBIENT, 0x00555555 ); pDevice->SetRenderState(D3DRS_SPECULARENABLE,TRUE); 上記、設定どこか間違ってますでしょうか?
バグは思いも寄らない所にあることも多い
188 :
デフォルトの名無しさん :2006/10/03(火) 06:45:24
>>170 はぁ?意味わかんない。
要素数の増減も糞も結局はメモリの確保と違いがあるのか?
全くわからない。
自前のnewが呼ばれて、自分が確保したまとまった領域のどっかに入るようにしときゃ問題ねぇんだろ?
>>186 透けるってのは半透明ってこと?
つ D3DRS_ALPHABLENDENABLE
ちょっと緊急です。 (13時から再び会議) 開発が無事に終わりCD−ROMを配布したんですが、 ダイレクトXが戻らないというトラブルが頻発してます。 仕組みはこうなってます。 CD−ROMを入れる→自動起動→パソコンに入ってるダイレクトXのバージョンを記録→ ダイレクトX9セットアップ→自社システム起動→メニューから終了を選ぶ→自社システム終了→ 元のダイレクトXをセットアップ→CD−ROMを抜く ↑ 顧客からの電話の話では、ここの部分でトラブルになってるようなんです。 他のソフトが正常に動かなくなったりしたり、画面が大きく?なったりしてるようです。 社内で確認したところ、 ダイレクトXバージョンの記録は問題なく動いてました。 CD−ROMにもダイレクトX3からX8までのランタイムが入ってます。 どこに原因があるかわかる方お願いします。
DirectXのバージョンダウンは不可能。 戻したかったらシステムの復元でも使え。
つーか実行毎にDirectXランタイムのロールバックて・・・。 開発中に誰一人としてreadmeすら読まなかったのか・・・。
X3て
ちょっと会議抜けてきました。
プログラマの話ではアドミンじゃないとシステムファイルをいじれないので、
ダイレクトXに関連するレジストリやファイルを削除できないらしいんです。
どうやら自社システムを終了するときにこれらを削除することで、
ダイレクトXセットアップが新規として認識するようしてあるみたいです。
常にアドミンにしておくようにするという案がプログラマのほうからありましたので、
今後はこれで対応することにしようかと会議続行中です。
>>192 プログラマは可能と言っていたのでお願いしたんですが、
元のダイレクトXに戻すのは不可能なんですか?
システムの復元というアイディアは素晴らしいです。
早速提案してみます。
>>193 プログラマは個人の外注1人です。
なんつーレベルの開発体制だよ… こーだーのバイト君雇ってますレベルじゃないか。
仮にできたとしても何か危なそうだなあ・・・
Dx? で開発やって インスコCDにDx? 再配布パケを入れて ってな感じだものな 動作要件が 開発した Dx? 以上 ってだけなのに… アッパーコンパチでなくなった微妙な機能使っているのかな?
一旦会議が終わりました。
トラブル出ていたところには緊急で対処法を連絡したのですが、
常にアドミンにしておくとセキュリティの問題がでてしまうというのと、
顧客にも詳しい人がいて、
システムファイルいじるなんて異常だというお叱りの電話が入りました。
システムの復元についても、
1つのソフトがOSを振り回すなんておかしいだろということです。
それなのでこれらの案は使えないことになりました。
今日の夜にプログラマが来る予定なので、真夜中の会議となりそうです。
>>196 一応ちゃんとした求人サイトで募集し、大卒のプログラマさんにお願いしてます。
>>197 顧客のほうからもかなりの大声で同じこと言われたようです。
>>198 98/ME/2000/XPで動くようにお願いしていたのですが、
ベータの時点でXPでしか動かないというトラブルが出てしまい、
緊急でこのような仕組みにしたようです。
最初はOpenGLで作ることになっていたのですが、(募集要項にも書きました)
いざ始まったらダイレクトX9しか使えないということで、、、。
GDIだけで書かせる。 GDIも捨てたもんじゃないからな。 HALFTONE指定の StretchBlt とか
いやそれにしても、そんなにコンパチじゃない機能ばっかり使ってるのか? そうじゃないと思うんだがなぁ。その DirectX のバージョン依存の機能に 何の必然性があるのかと問うてみるが良い。
一応ちゃんとした求人サイトで募集し、大卒のプログラマさんにおねがいしたからといって腕がいいとは限らない。 システムファイルを弄る提案をした時点でその人は地雷なのではないでしょうか?
ていうか、OpenGLで募集して、DirectX9しか使えない時点で(ry
プログラマから突然会議キャンセルの電話がありました。
なにやら急用ということですが、こちらも急用なので係長たちが家まで向かったようです。
>>200 GDIというのもあるんですか。
今回は開発が終わってしまったので次回の参考にさせていただきます。
>>201 新しいほうが綺麗とか速いとか言ってた気がしますが、詳しいことはわかりません。
なんせプログラムを知る人が社内にいないので、完全にお任せ状態になってました。
>>202 かなり詳しそうな人だったのと、
面接のときに動いてるプログラムを見せてもらって素晴らしかったのでお願いしたのですが、
ちょっと今は怪しい状態です。
大卒でゲーム会社に居たという言葉に騙されたのでしょうか、、、。
ギャランティ支払い終えてからは、いちいち電話しないと会議に来ないようになりました。
>>203 今思うと最初の頃熱心に会議に顔出してくれたのは、
CとOpenGLを使えないのでルナとダイレクトX9にしたかったんでしょうね、、、。
ルナって… ( ゚д゚) ( ゚д゚ )
ルナってもしかしてラッパーライブラリのLuna? そいつがゲーム会社に勤めていたって信じれない 雑用とかしてただけじゃね? Lunaなんて趣味でゲーム作ってる高校生レベルじゃねーか
Lunaはさすがに無いだろう
ラッパーのLunaだとしたら、著作権表示とかまともにやってるのか?
Lunaは作者の個人的な技術デモ用だろう。 ゲームエンジンとしては何もないのでは?
>199
DirectX9は 初代Win98/Win98SE/WinME/Win2000/WinXP/WinVISTA対応してるだろう。
XPでしか動かないトラブルってどんな特殊機能駆使してるんだ・・・。
>>210 作っといて自分でいうのも何だけどぶっちゃけDirectX9とシェーダーのお勉強をしようがコトの始まり。
もう色々gdgdだからこれ以上弄らない宣言を・・・。
VOID FreeDx() { SAFE_RELEASE( pFont ); for(DWORD i=0;i<THING_AMOUNT;i++) { FreeAnim(Thing[i].pFrameRoot); cHierarchy.DestroyFrame(Thing[i].pFrameRoot); SAFE_RELEASE( Thing[i].pAnimController); } SAFE_RELEASE( pDevice ); SAFE_RELEASE( pD3d ); }
>>211 わかった、Windows XPで採用されたLunaを(ry
なんか別の話で盛り上がってるところ悪いが、一言だけ・・・
>>188 オマエはプログラマー辞めろ。
215 :
189 :2006/10/03(火) 23:54:08
>>208 どうやらもっと昔のモノをインスコしないと駄目だったみたい。
これ入れてみて、って送られてきたファイルのタイムスタンプを見ると
2002年12月12日。どうやら 9.0c とかではなくて 9.0 の時代のモノ。
こんなの入れちゃって大丈夫かなと思ったけど、インストールすれば
問題なく動かしたかったソフトが動くようになりました。
いろんな時期の DirectX 関連のランタイムって、共存させまくって
良いモノなんだろうか。
216 :
189 :2006/10/04(水) 00:00:09
無理やり突破するならマニフェストねじ込んでおけばいいのかもしれないが、どーなんだろね。 DirectXは一応アッパーコンパチを標榜してるのだし、特定のランタイムに依存するコード自体に 改善の余地があるのは間違いないとは思うのだけれど。 つーかそーいうコードだとDirectXのバージョンの問題以前にドライバの相性とかでもgdgd発揮しそうな悪寒だ。
そもそもDxのバージョンを戻す意味がわからんしなぁ。 とりあえず最新版を入れておけば過去のバージョンは全部動作する(はず)だし。 実際動作はちゃんとしてるしな。 そもそもバージョンを戻せるとしても、戻す前に何らかの不正な処理でアプリが落ちたら終わりだろ。
DirectXを扱えるプログラマがこれまでいなかったが、歴史はそこそこあるエロゲソフトハウス。 PC98で256色モードの使用に消極的だった頃の感性を今も残す。
>>214 俺も君の言ってる意味がわからないけど?
221 :
デフォルトの名無しさん :2006/10/04(水) 07:47:30
スキンメッシュアニメーションのプログラムを 造ったんでつが・・・、 もりもり動くのはいいんだけど、 うまく「ライト(光)」が反映されないでつ。 普通のXファイルはちゃんとライトは反映されまつ。 どこら辺のソースコードを晒せばいいでつか?
222 :
189 :2006/10/04(水) 08:00:10
>>221 法線がそのままだから変なライティングに見えてしまう
ちゃんと計算しましょ
>>221 つ [CloneMesh]
法線の追加ね
225 :
デフォルトの名無しさん :2006/10/04(水) 08:38:00
>>223 >>224 うはっ、俺様DQNなので、知能障害起こしそう。
法泉を計算するって、まじムズそう。
Xファイル吐き出すソフトとかで
やってくれてもよさそうなもんなんだが・・・。
>>224 のCloneMeshを調べてみるみる。
いや、普通はモデリングソフトが吐き出すと思うが。 バーテックスシェーダー使ってるならボーンの変形を 法線にも適用しないといかんが。
X自体の機能ではきだせたような >CloneMesh
228 :
デフォルトの名無しさん :2006/10/04(水) 09:28:32
>>262 >>227 今ちょっと軽くコーディングしてみた。
つーか、良く見たら、Xファイルを吐き出すソフトの方で法泉吐き出してるみたいだ。
// 当該メッシュが法線を持たない場合は法線を追加する
if (!(pMesh->GetFVF() & D3DFVF_NORMAL))
{
pMeshContainer->MeshData.Type = D3DXMESHTYPE_MESH;
hr = pMesh->CloneMeshFVF( pMesh->GetOptions(),
pMesh->GetFVF() | D3DFVF_NORMAL,
pDevice, &pMeshContainer->MeshData.pMesh );
if (FAILED(hr))
{
return E_FAIL;
}
pMesh = pMeshContainer->MeshData.pMesh;
D3DXComputeNormals( pMesh, NULL );
}
else
{
pMeshContainer->MeshData.pMesh = pMesh;
pMeshContainer->MeshData.Type = D3DXMESHTYPE_MESH;
pMesh->AddRef();
}
↑はelseの方にちゃんと入ってるみたい。
「ライティング(光)」がまったく反映されないか?っていうとそうでもなくて、ほんの少しだけ明るい。
ただし、通常のXファイルを表示すう場合とちがって、光の方向やら、その他設定がぜんぜん違う。
スキンメッシュモーションを「通常のXファイルと同様」に読み込むと「いい感じにライティングが反映」されているんだが、
スキンメッシュモーションをスキンメッシューモーション用に読み込むと、ライティングが辺な風に反映される。
ちょっと、知能障害起こしてるから、文章分かりにくかったらスマソ。
229 :
221 :2006/10/04(水) 09:30:34
>>225 >>228 は両方とも221です。
スマソ。
>>228 の読み込むという表現はまずい。
読み込む→読み込んで、描画する。
正直スマンカッタ。
光源の位置とタイプは平気か?
231 :
221 :2006/10/04(水) 10:09:34
>>230 知能障害の俺に優しくしてくれてありがとう。
>光源の位置とタイプは平気か?
light.Type = D3DLIGHT_DIRECTIONAL;
vecDirection = D3DXVECTOR3(0, -1, 1);
light.Diffuse = D3DXCOLOR(1.0f, 1.0f, 1.0f, 0.0f);
light.Specular = D3DXCOLOR(1.0f, 1.0f, 1.0f, 0.0f);
light.Ambient = D3DXCOLOR( 0.5f, 0.5f, 0.5f, 0.0f);
D3DXVec3Normalize( (D3DXVECTOR3*)&light.Direction, &vecDirection );
pDevice->SetLight( 0, &light );
pDevice->LightEnable( 0, TRUE );
pDevice->SetRenderState( D3DRS_LIGHTING, TRUE );
pDevice->SetRenderState( D3DRS_AMBIENT, 0x00111111 );
pDevice->SetRenderState(D3DRS_SPECULARENABLE,TRUE);
一応、こんな感じ。
高原の位置とかタイプは自信がありまつ。
通常のXファイルとかなら、まったく問題なくいけてまふ。
ちょい聞きたいんでつが、
スキンメッシュのファイルって、どっかにサンプル落ちてない?
IDirect3DDevice9::Reset で、Presentのパラメータ(具体的にはフレームバッファの サイズ)を実行中に動的に変えようとした際に、一部の環境でエラー (D3DERR_DEVICELOST)が発生してしまい悩んでいます。 IDirect3DDevice9::TestCooperativeLevelではD3D_OKが返ってきているのですが、 その直後のResetでエラーが出ます。(どれだけリトライしてもダメ) IDirect3DDevice9::Reset以外に、フレームバッファサイズを変更する方法は何か ないでしょうか?
>>232 Resetでいいんだよ
デバイスロストしたときの仕組みが間違ってるだけ
サンプル見ればわかるよ
234 :
232 :2006/10/04(水) 17:20:46
>>233 d
問題の環境で追いかけた限り、デバイスロストからResetで復帰できないのではなく、
デバイスロストしていない状態でResetの実行に失敗(DEVICELOSTを返される)して
いるようなのですよ。
TestCooperativeLevel()ではD3D_OKが返ってきているので、デバイスはoperational
になっている(と信じるしかない)わけですが、その直後にResetをかけるとエラー、と。
何がいけないのやら…orz
>>234 >Reset メソッドを呼び出す前に、アプリケーションは、そのデバイスに関連付けられた明示的レンダー ターゲット、
>深度ステンシル サーフェイス、追加スワップ チェーン、ステート ブロック、D3DPOOL_DEFAULT リソースを
>解放しなければなりません。
まずはこれの確認。
236 :
232 :2006/10/04(水) 17:42:29
>>235 ありがとう
まずはそこをきちんと確認してみまつ
DirectXでバックバッファに描画した段階で、指定したxy座標のピクセル色を取得できますか? 3D関係の画像処理に使ってみようと思うのですが。
238 :
221 :2006/10/04(水) 20:06:40
221です。 テクスチャのないものについては うまくライティング処理ができるのですが、 テクスチャがあるものについては、 ライティング処理ができないことが判明しました。 どこら辺が怪しいですか・・・。
>>237 レンダーターゲット(サーフェイス)を貰えば指定座標がどうなってるのかわかるよ
>>238 2つほど。
・ライティングをOFFにした場合、そのテクスチャのあるものはちゃんと表示される?
・「処理が出来ない」とは具体的にどうなってる?真っ黒に表示されるとか、テクスチャの原色がでるとか
こんなの初心者が見当違いのつまらないミスに大騒ぎしてるだけで、 そのうちに勝手に自己解決して終わり。 付き合っても誰の特にもならないってオチ。
242 :
221 :2006/10/05(木) 00:22:35
自己解決しますた。
毎度初心者に厳しいスレだと思ってたら、別口に「超初心者用」ってのがあるのな。 誰だよそんなの立てた奴w
244 :
221 :2006/10/05(木) 05:41:00
>>242 は偽者でつ。
>>240 質問1
>・ライティングをOFFにした場合、そのテクスチャのあるものはちゃんと表示される?
質問2
>・「処理が出来ない」とは具体的にどうなってる?真っ黒に表示されるとか、テクスチャの原色がでるとか
質問1について
ライティングをOFFにするとはどういう意味でつか?
当方DQNのため、ライティング処理をやめたら、
画面が真っ黒にしかなりませんでつた。
質問2に答えるために
ちょい、うpしたいと思う。
http://aploda.net/dl.php?mode=pass&file_id=0000022268.zip うpした画像なんでつが、
「1.jpg」、「2.jpg」がテクスチャのあるスキンメッシュで、
うまくライティング処理ができていないもの。
(2.jpgは「1」のファイルを違うカメラ視点から見たもの)
「3.jpg」がてテクスチャのないスキンメッシュで、
ライティング処理ができているもの。
「4.jpg」が「1」を通常のXファイルとして読み込んで
表示させたもの。
245 :
221 :2006/10/05(木) 06:27:48
pDevice->SetRenderState( D3DRS_SHADEMODE, D3DSHADE_GOURAUD ); // カリングはしない pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); // Zバッファー処理を有効にする pDevice->SetRenderState( D3DRS_ZENABLE, TRUE ); pDevice->SetRenderState(D3DRS_ZWRITEENABLE,TRUE); // ライトを有効にする pDevice->SetRenderState( D3DRS_LIGHTING, TRUE ); // アンビエントライト(環境光)を設定する pDevice->SetRenderState( D3DRS_AMBIENT, 0x00111111 ); // スペキュラ(光沢反射)を有効にする pDevice->SetRenderState(D3DRS_SPECULARENABLE,TRUE); DirectXの初期化のときに上記を 実行しているんですが、 上記をコメントアウトするとうまく実行できまつた。 なぜでせうか?
246 :
221 :2006/10/05(木) 06:33:35
pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); が原因だったようです。 意味不明。 pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); カリング処理をはずすとうまくいきました。 こいつをはずすとうまく処理がライティング処理が 行きます。
247 :
221 :2006/10/05(木) 06:58:49
ライティング処理なんでつが、 通常のXファイルでは light.Ambientが利くのに スキンメッシュアニメーションでは light.Ambientが利きません。 その他のライティング処理は利いているみたい。 なぜでせうか?
248 :
232 :2006/10/05(木) 10:25:24
>>233 >>235 おかげさまで解決しました。ありがとうございました。
>D3DPOOL_DEFAULT リソースを解放しなければなりません
これが引っかかってました。
テクスチャをD3DPOOL_MANAGEDでプールするように変更して解決です。
250 :
221 :2006/10/05(木) 16:30:35
>>249 皇帝閣下
閣下、法泉はXファイルが持ってる臭いであります。
ポリゴンが裏返るというのが当方DQNなため、よくわかりません。
ライティング処理なんですが、
Light_Class::light.Diffuse = D3DXCOLOR(1.0f, 1.0f, 1.0f, 0.0f);
↑利いてるっぽい
Light_Class::light.Specular = D3DXCOLOR(1.0f, 1.0f, 1.0f, 0.0f);
↑利いてないっぽい
Light_Class::light.Ambient = D3DXCOLOR( 0.5f, 0.5f, 0.5f, 0.0f);
↑利いてないっぽい
みたいな感じです。
シェーダーんとこ、その辺の計算省いて無い?
>>221 いいからプログラム晒してみろって。
ソース見られるのが嫌だったらXファイルだけでも。
あとHLSL使ってるんだったらソレも。
253 :
221 :2006/10/05(木) 16:47:10
254 :
221 :2006/10/05(木) 16:50:46
>>252 提督
シェーダーの計算とは、具体的にどこでしょうか?
当方、DirectXを独学で始めたばっかなので
よくわかっていません・・・。
提督、2階級降格ですか?
256 :
221 :2006/10/05(木) 17:01:08
>>255 先輩
せんぱぁ〜い、お弁当作ってきましたぁ〜。
現状をまとめます。
スキンメッシュの読み込み→再生はできます。
ただし、ライティング処理のAmbientがうまく反映されない。
スキンメッシュのファイルをただのXファイルとして扱い、
表示した場合、Ambientはちゃんと反映される。
→ライティング処理のAmbientを反映させたい。
>>254 こっちにはなにもないのにどうやって指示するのか
>>253 DirectX Viewerで見る限りはライティング問題なさそう。
剣がデカくなった時に暗くなってるのは気になるが・・
>>221 > vecDirection = D3DXVECTOR3(0, -1, 1);
ライトさ、奥から手前に向かってない?
Zを-1にしてみたらどうなる??
スクリーンショットみても下から当たってるようにも見えるし
ライト関連の設定に問題がありそうなんだよね。
260 :
221 :2006/10/05(木) 17:38:06
>>254 店長
おっしゃるとおりで・・・。
正直すまんかった。
>>258 部長
調べてもらってスンマセン。
>>259 先生
先生、
vecDirection = D3DXVECTOR3(0, -1, -1);
にしたら、スキンメッシュ全体がかなり暗くなりました。
同じ設定(vecDirection = D3DXVECTOR3(0, -1, -1);)で
通常のXフィル用に先ほどのスキンメッシュを開いたら、いい感じに
ライティング処理が施されていまふ。
おっしゃるとおり、ライト関連がかなり怪しいです。
ライト関連ならさらせますが・・・うpしますか?
261 :
221 :2006/10/05(木) 17:47:38
262 :
デフォルトの名無しさん :2006/10/05(木) 18:17:36
DirectPlayでサーバ/クライアント型で プログラム作ってるんだが、 サーバ開始した時点でプレイヤーが一人居るんだが こいつはサーバ自身のプレイヤー? こいつと普通のプレイヤー見分ける方法ある?
まだ過去の遺物のDirectPlayを使おうとしているのか。 過去のプログラムのメンテなら分かるが、新規で使う気が知れない。
>>263 今って通信のプログラムって何が流行りなの?
流行も何も選択肢は一つしかない。
>>263 「音声通信せよ」
との命令なんだ。
かなりローカルで使うプログラムだから許してちょ
MediaFormatSDKを使えば、圧縮されたストリームデータを通信で送受信するぐらい簡単に書ける。 今となっては完全にDirectPlayは必要が無い。
>>261 んーよくワカランかった(;´д`)
描画するときに-1でスケールとかしてないよね?
>>261 SetRenderState(D3DRS_NORMALIZENORMALS, TRUE);
も試しにやってみるといいわね。
Boost.Socketがもう少しがんばってくれたらな
273 :
261 :2006/10/05(木) 23:02:03
>>270 委員長
>んーよくワカランかった(;´д`)
>描画するときに-1でスケールとかしてないよね?
してないズラ。
>>271 団長
>SetRenderState(D3DRS_NORMALIZENORMALS, TRUE);
>も試しにやってみるといいわね。
やってみた。
ダメだった。
すいません、質問です。 2Dなんですけど、左から右に行くほどどんどん透明になっていくテクスチャ ってのを作りたいんですけどどうやって作ればいいんでしょうか? ちなみに画像のファイル形式はbmpです。
275 :
261 :2006/10/05(木) 23:30:20
パスがわからん・・・ もう面倒だからコンパイル環境まとめてうpしなさいな
277 :
261 :2006/10/06(金) 00:08:03
うpされれば見る、されなければ見ない。 それだけのことだろう。 見れば分かるわけでもないが、見なければまず分からない。
279 :
261 :2006/10/06(金) 00:17:26
280 :
261 :2006/10/06(金) 00:18:33
スキンメッシュファイルは
>>253 にありまつ。
>>279 ナイス度胸!よくUPした!!
待ってろよ〜すぐ解決してやっから。
まずはリンクエラーを何とかして・・・(;´д`)
>>279 テクスチャーファイルがねー(;´д`)
とりあえず灰色でよければライトちゃんと当たってたよ。
ところで、DirectXって左手座標系だからZ座標は手前が正(プラス)方向だよ。
カメラとライトがどっちも右手系の指定になってたのは
単にモデルを正面から見るため?
283 :
261 :2006/10/06(金) 01:00:16
>>283 なるほど、確かに暗くなるね。不思議。
いろいろ見てみる。
285 :
261 :2006/10/06(金) 01:05:56
ちなみにバグがありまして、、、。 モーションファイルを開く を行った後に、 Xファイルを開く を行うと落ちます。 逆はなぜかヘイキ。
286 :
261 :2006/10/06(金) 01:07:54
同志
>>284 スキンメッシュクラスがすげぇ怪しいキガス。
スキンメッシュクラスは正直、本のコピペをちょい改悪した程度。
あと、ライティング関係も怪しいキガス。
確かにアンビエントがボーンのときは無効になってるな。
pMeshMaterials[i].Diffuse = d3dxMaterials[i].MatD3D.Diffuse; pMeshMaterials[i].Ambient Diffuse = d3dxMaterials[i].MatD3D.Diffuse; 通常のメッシュはここでアンビエントにディフーズを代入しているので、 アンビエントがかなり強くとうぜん明るい。 スキンメッシュの方は読み込んだマテリアルそのままなので、 アンビエントは低く暗い。 マテリアルの展開を統一しないから出たバグだな。
通常メッシュと同様に、ディフーズ色をアンビエントにコピーすれば一応OK。 DirectGraphics.cpp の 693行目と925行目の後に↓を追加 // ディフーズ色をアンビエント色にコピーする pMeshContainer->pMaterials[iMaterial].MatD3D.Ambient = pMeshContainer->pMaterials[iMaterial].MatD3D.Diffuse; でも、できればプログラムでいじるんじゃなくて Xファイルの方で正しくアンビエント色を設定できたほうがより良い。
ちなみにスキンメッシュのところは memcpy(pMeshContainer->pMaterials, pMaterials, sizeof(D3DXMATERIAL) * NumMaterials); こう書かれている。 下のループの中で pMeshContainer->pMaterials[iMaterial].MatD3D.Ambient = pMeshContainer->pMaterials[iMaterial].MatD3D.Diffuse; こう書くと普通のメッシュと同じ明るさで出る。
291 :
289 :2006/10/06(金) 01:25:10
ディフーズ → ディフューズ ね。 「FU」って変換すると単に「フ」なんだな・・(;´д`)
292 :
289 :2006/10/06(金) 01:27:01
>>290 ナカーマ(AA略
なんか妙な達成感があったねw
俺はアンビエントはライトだけで調整してマテリアル側には ディフューズしか持たせてないなぁ。 一応アンビエントに半球ライティング使ってるけど。
294 :
261 :2006/10/06(金) 01:30:34
>>288 [救世主(メシア)]
漏れが超うんこであることがわかりました。
大変うんこで申し訳ないのでつが、
どのように直せばいいかヒント出してもらっていいでつか?
直すところは
AnimationMesh_Class::MY_HIERARCHY::CreateMeshContainer
の内部でつか?
295 :
261 :2006/10/06(金) 01:32:15
>>293 DirectXのスキンメッシュって今回初めてだったんだが
確かにモデルのマテリアルにもアンビエントがあると混乱するね。
半球ライティング使ってるんなら特別な理由がない限りモデル単位では
アンビエントは無効になるね。
>>295 >
>>290 >>291 >>292 >>293 四天王
たぶん2人だけだぜw
297 :
261 :2006/10/06(金) 01:36:01
キタ━━━━━━(゚∀゚)━━━━━━ !!!!! できたー。
298 :
261 :2006/10/06(金) 01:40:48
ありがとうございますた。 これで故郷(くに)に帰れます。 DQNな漏れの汚いコードを読んでくれて、 まじ、感謝でつ。
>>261 お疲れさん〜
まだ先は長いから頑張りな!
300 :
261 :2006/10/06(金) 01:46:03
>>289 船長
Xファイルでアンビエントを設定するというのは、
独自のXファイルを作るということでせうか?
それとも、そういう定石的なやり方があるのでせうか?
>>296 隊長
クソ初心者なので、クソ躓いて、クソ混乱してしまつたよ。
あと、1つ質問なんでつが
スキンメッシュ読み込んでから、普通のXファイルを
開こうとするとエラーでソフトが落ちるんでつが、
なにかヒントなんぞあれば教えていただけないでゲスか。
301 :
261 :2006/10/06(金) 01:52:34
>>299 元首
2chに甘えることなく、次はちゃんと自分でバグを
見つけられるようになりたいでつ。
> Xファイルでアンビエントを設定するというのは、 > 独自のXファイルを作るということでせうか? いや良くは知らんのだが、Xファイルのマテリアル情報の中に アンビエントってのがあるんだろタブン。で、それを設定できるんなら した方がいいよってこと。できないんなら諦める。 > スキンメッシュ読み込んでから、普通のXファイルを > 開こうとするとエラーでソフトが落ちるんでつが、 さっそく↓を実行したまえ。 > 2chに甘えることなく、次はちゃんと自分でバグを > 見つけられるようになりたいでつ。
303 :
261 :2006/10/06(金) 01:58:35
>>302 国家主席
>いや良くは知らんのだが、Xファイルのマテリアル情報の中に
>アンビエントってのがあるんだろタブン。で、それを設定できるんなら
>した方がいいよってこと。できないんなら諦める。
ちょい調べてみまつ。
>さっそく↓を実行したまえ。
おっしゃるとおりで・・。
えと、自分で調べまつ。
「とりあえず聞いてみる」じゃなくて、自分で調べた上でどうしても分からないことを 「聞いてみる」ってのが好まれます。 また行き詰った時はソース晒せば皆が見てくれるよ、タブン。
射精した!
教えていただきたいのでつが、 LPDIRECT3DDEVICE9 って、普通、プログラム中にみなさん何個作りますか? 自分1つしか使ってないのですが・・・。
1つ
それにしてもLPDIRECT3DDEVICE9なんて、ダサい名前だよね
誰かいますか?
いるよー。
>>307 マルチウインドウ物なんかだと複数作りたくなる場合もあるんだが、
MS的に一応公式で「パフォーマンスが落ちるからやめなさい」ってことになってる。
マジぬるぽ。
313 :
デフォルトの名無しさん :2006/10/07(土) 02:53:44
DQN@261です。 1日悩みました。 暇だったら教えてくれろ。 <詳しい症状> 最初に、スキンメッシュファイルを開く→描画する 次に、Xファイルを開く→描画されない。 (最初にXファイルを開く分にはぜんぜんOK) Debugモードだと、以下のようなものが 「デバッグ欄」にいっぱい出てくる。 例外処理 (初回) は _senkoro_.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。 <エラー行> VOID Mesh_Class::DrawMesh() { // レンダリング for( DWORD i=0; i<dwNumMaterials; i++ ) { pDevice->SetMaterial( &pMeshMaterials[i] ); pDevice->SetTexture( 0, pMeshTextures[i] ); pMesh->DrawSubset( i ); //←ここをコメントアウトするとヘイキ。もちろんなにも描画されない } } エラーが出ているときに、DrawSubsetの戻り値を見てみた。 hr = [0] (i = [0]) hr = [8876086c] (i = [1]) 上記のようになっている。 →8876086cを調べてみた。 よくわからなかった。 ヒントがあれば教えてつぁさい。 ギギギギギ。 馬鹿たれ、銃は卑怯じゃ。
315 :
261 :2006/10/07(土) 04:21:36
NEO・DQN261です。 ジークゲイツ!! 最初にスキンメッシュの方で描画を行うときに、 pDevice->SetRenderState(D3DRS_VERTEXBLEND, dwBlendMatrixAmt); こいつ↑をコメントアウトしておくと 次にXファイルを普通に開いても問題ないっぽです。 もう少し調査して、改めて報告します。
316 :
261 :2006/10/07(土) 04:28:01
キタ━━━━━━(゚∀゚)━━━━━━ !!!!! できたー。 普通のXファイルを描画するときに、 描画の前に pDevice->SetRenderState(D3DRS_VERTEXBLEND, 0); って入れればOKみたい。 うほぅ、2chのおかげでまたバグが一つ解けた。 自己解決だけど、 2chにカキコミながら、デバッグすると 頭が整理されるみたい。
迷惑な話だ チラシの裏に書け 頭を整理してから来いよ
言葉尻をとるようだが、擬似表現は悪くないぞ。 HDRが本物だとか偽者だとかいう変な記事があったりするけど、 見た目が気にならないぐらい同じなら、CG的にはインチキして より少ない計算資源でやりくりしているほうが、あまった処理に 別の表現を詰め込むことが可能になるから偉いんだよ。
>>319 言ってることは悪くないんだが、
>>313 には伝わらないことだな。
ラジオシティが何たるかを理解してないだけじゃなくて
DirectXで何ができるかを理解してない。要するに何も知らないんだ。
>HDRが本物だとか偽者だとかいう変な記事があったりするけど 別に記事は変じゃないだろ。 ほとんどの記事はただ手法を紹介しているだけで 本物だから偉いとか最初から書いてない。
「本物」という表現が変だという理由は明らかにそれがマーケティング的な 煽りを含んでいるからだよ。そういう記事の論調は、確かに直接偉いと までは書いてないが、単なる手法の紹介というほど公平でもないと思うが。 >320の言うように、経験が浅い人間が同じような言い回しをするのは 仕方ないのかもしれないけどね。
「テクスチャなの?」「テクスチャだお」 >313の質問は>318で終わるだろうに、半端に口をだすから 第三者にツッコミ入れられるんだよ。 てゆかこの流れで>319が語りだす理由が分からん。
わかったわかった、相変わらずだお前ら。 とりあえずこれでも食って落ち着いてくれ。 つ【ようかん】
ようかんみたいに身が詰まってる物体の表現って難しいよね ポリゴン重ねてそれっぽくなったがまだ不自然
327 :
sage :2006/10/08(日) 18:47:27
質問です。 DirectXのサンプルを見ながら スキンメッシュを読み込むプログラムを作っているのですが 途中で使われているConvertToBlendedMeshやConvertToIndexedBlendedMesh のやっていることがよくわかりませんでした。 ConvertToBlendedMeshのヘルプには "頂点単位のブレンドの重みとボーンの組み合わせテーブルを適用した 新しいメッシュを返す" とあったのですが 頂点単位のブレンドの重みやボーンの組み合わせテーブルは どこから取ってきているのでしょうか。 また、これらが適用されると具体的にどういったことになるのですか。
>どこから取ってきているのでしょうか。 元データから >これらが適用されると具体的にどういったことになるのですか。 データ形式が変わる 質問が具体的じゃないのに具体的な回答もとめちゃいかんよ
そんなことはない。たとえば電話相談サービスは 切羽詰ってわけわからなくなった人や無知なお子様が掛けるものだから、 テレパシーでも何でも使って、相手の意図を汲むものなんだ。 このスレみたいに初心者につらく当たるスパルタ教育じゃない。
だがうちらは電話番でもなければ先生でも両親でもない。
プログラムするにコンパイラはこちらの意図などくみ取ってはくれない。 正確に記述しなければ、思った通りには動いてくれないんだから。 質問すらまともに出来ないのであれば、プログラムなど組めようはずもない。
切羽詰ってわけわからなくなった人や無知なお子様は2chで質問しちゃだめだろー
333 :
327 :2006/10/08(日) 21:30:03
>328 >>どこから取ってきているのでしょうか。 >元データから 元データといえば第一引数のID3DXMeshのことだと思うのですが たとえばそのデータはID3DXMeshのどのメソッドを使って取れるデータですか。 ID3DXMeshのメソッド一覧には見当たらないように見えました。 >>これらが適用されると具体的にどういったことになるのですか。 >データ形式が変わる 名前にConvertとついていることや、ヘルプの新しいメッシュを返す、 というところからデータ形式が変わることはわかっています。 ヘルプの"頂点単位のブレンドの重みとボーンの組み合わせテーブルを適用した 新しいメッシュを返す" の意味がいまいちよくわからなかった為の質問でした。 1つ質問をし忘れたのですが ConvertToIndexedBlendedMeshはConvertToBlendedMeshと比べて インデックスが適用されるかの違いだと思うのですが インデックスが適用されるとはどういうことですか。 (また具体的になってないかもしれない...)
D3DXの高レベルAPIに頼らず、一度自分でファイルを読むところから作ってみるのが一番の近道。
とはいうが、普通に高レベルAPIで組むのも全然ありな罠。 細かいところからやってくのは満足度こそ高いが、それだけだし。 使い物にならんコンポネントも多くて、そのリプレースが必要になってくる場合もあるが、 それはそれで必要になったらやりゃいいんだし。
D3DXCreateTextureはつこてる。
337 :
デフォルトの名無しさん :2006/10/08(日) 22:34:37
ゲームにチャット機能を付けようとしてるのですがまったくわかりません どこかに詳しく書いてるサイトがあれば教えてください
ソケットプログラミングの基礎から始めろ。
339 :
デフォルトの名無しさん :2006/10/08(日) 22:38:51
文字を入力させる方法がよくわからなくて ローマ字だけなら出来るんですが日本語入力とか変換の仕方がわかりません
Imm系のAPIを使え。
サンプルにIMEの入力があるね フレームワーク使ってるやつ 最近のSDKじゃ削られてんの?
いや、入ってる。 中々に出来もいい。 ただ、コードはやっぱりそれなりに大掛かり。 頑張ってコピれ。 俺もコピった。
>>335 機能も分からずに使おうとして、その挙句2chで教えてクンになってる人を前にしても
そんな発言ができるなんて、
>>334 の真意を理解してない証拠。
実際に自分で作ったものを利用するかは別として、 勉強のために自分で一通り作ってみる方が理解が進む。 小学生が算数ドリルをやるのは車輪の再発明でも何でもない。
もういいです。 他己解決しました。
タコイカタコイカ
理解なんかしないでも使っちまえって感じですよ。 面倒くせえ。
349 :
261 :2006/10/09(月) 01:01:23
>>347 へっ!折角の素質も磨かなきゃ意味がねぇな!
そんなことじゃ、この俺はもry
立方体を複数並べてライティングする処理で 悩んでいます。 1つの立方体をXファイルから読み込み 3x3x3=27個並べてルービックキューブのような立方体を 作ってライトを当てたのですが、1つの面に含まれる9個の ブロックが、それぞれ独立して光を反射しているように見えます ┌──┬──┬──┐ |暗□|暗□|暗□| |□明|□明|□明| ├──┼──┼──┤ |暗□|暗□|暗□| |□明|□明|□明| ├──┼──┼──┤ |暗□|暗□|暗□| |□明|□明|□明| └──┴──┴──┘ これを1枚の面のように光を反射するように したいのですが、何に気をつければよいのでしょうか。 ┌──┬──┬──┐ |暗□|暗□|□□| |□□|□□|□□| ├──┼──┼──┤ |暗□|□□|□□| |□□|□□|□明| ├──┼──┼──┤ |□□|□□|□□| |□□|□明|□明| └──┴──┴──┘
ポイントライト
353 :
351 :2006/10/09(月) 21:18:30
>>352 レス感謝です!
ポイントライトにしてみました
ディレクショナルライトを使用していたときより
よくなった感じはするのですが、
素材がおかしいのか、暗い位置になるほど
┌──┬──┬
|■□|■□|
|□明|□明|
├──┼──┼
|■□|■□|
|□明|□明|
├──┼──┼
が目立ってしまいます。
なめらかにならないんですよね・・・
>>353 頂点ごとに明るさを計算して、面はそれを元に補間して色つけてるだけだよ。
もしかして立方体の頂点数って8とか少ない数じゃない?
>>354 レスありがとうございます!
そのとおり8つの一番単純な立方体です。
少ないとライティングも荒くなるってことでしょうか?
数日前からはじめたばかりの素人なもので
頂点ごとに明るさを計算して保管するという処理が
頭にイメージできないのですが、
私のようなド素人にも簡単にできることなのでしょうか?
書き込んで直ぐ気づいたのですが 頂点数は4点*6面=24かと思うのですが 見当違いでしたら虫してください。
中心からオブジェクトに対してライトを焚け
>>355 PerPixelLightingをするかポリを増やすか。
359 :
351 :2006/10/09(月) 23:06:01
>>358 面のポリゴン数を増やしたら
自然な感じになりました。
ありがとうございました。
>剣を振るキャラクターのスキンメッシュモーションファイルに同梱できたりしますか? やってできないわけじゃないが、非生産的。 それにモーションの補間等が加わると一気に破綻するので、現実的でない。 基本は帯状のポリを剣の軌跡にあわせて振るで正解。 ただ、単にフレームごとの剣先の位置だけで刻むと、粒度が荒すぎて ひどくカクカクした絵になってしまう。 ので、実際にはスプラインなんかを適用して滑らかな弧を描く様にしてやる。 こんなもんでどうだろか。
362 :
360 :2006/10/10(火) 17:50:45
>>361 返信dクス。
優しくすると付け上がるいい例みたいな俺ですが、
続けて質問させてください。
>基本は帯状のポリを剣の軌跡にあわせて振るで正解。
となると、座標軸や描画するタイミングを合わせて、
シコシコプログラム組むわけですな。
>ただ、単にフレームごとの剣先の位置だけで刻むと、粒度が荒すぎて
>ひどくカクカクした絵になってしまう。
DQNなんで剣先の座標の取得の仕方がわからないです。
スキンメッシュを再生中にリアルタイムで
剣先の座標を取得する方法のヒントなんぞありば教えてほしぃです。
剣の先に見えないフレームを用意しておいておけば簡単。 まさか剣をスキンにしている奴はいないだろうし。
364 :
360 :2006/10/10(火) 18:17:36
>>363 レスdクス
めまいを覚えるくらいにDQNな俺ですが、
教えてください。
>剣の先に見えないフレームを用意しておいておけば簡単。
フレームを用意するとはどういった意味でせうか?
(独学でDirectXをはじめて間もない、なんちゃってプログラマなんすよ)
・フレームって単語自体がよくわかっておりません。
Googleで検索するうえでヒントとなる、
単語なんぞあれば教えてください。
”フレーム DirectX”って検索すると、ちょいとヒット数が多杉でつ。
365 :
360 :2006/10/10(火) 18:35:08
>>363 フレームって、ワイヤーフレームのことでつか?
フレームなんて用意しなくても 剣先の座標に姿勢行列かければいいじゃん
てゆーかD3DX使わずに、とまでは思わないが座標操作が出来ないレベルなら 本一冊買って一からやり直したほうが良いと思われ 初心者だから分かりませんって訳じゃなくて初歩のレベルから始めてないから分からんのではないか?
>>366 剣先がモデルのどこにあるのかどうやって判別するんだ?
判別なんてせんでも自分で決めればいい
>>360 が動的に剣先座標変わるモデルを操作しているとは思えんから
モデリングした後にいちいち場所を確認するのか? そんな馬鹿な。
xファイルにアクセスしたら良いだけじゃない?
xファイルのメッシュの中から、剣の先がどこだかどうやって判別するんだ? 形状認識を行うアルゴリズムが必要になる上に、誤認識の可能性まで出てくるぞ。
モデリングツールで座標見れるやん
だったらフレームを置いた方が早いだろ。 モデルごとにいちいち座標を確認するのか? あまりにも阿呆すぎる。
>374 もちつけ
剣先の座標を得るためだけにフレーム増やすのか? あまりにも阿呆すぎる。
377 :
360 :2006/10/10(火) 21:23:36
えと、いろいろレスがついてありがたいっす。
難しい方法ではなく、多少見栄えが悪くとも
DQNな漏れでも実装できる方法を行いたいと考えています。
やり方としてはいくつかの流派があるみたいですが、
初心者向きのはどいつなんでしょうか?
>>367 >初心者だから分かりませんって訳じゃなくて初歩のレベルから始めてないから分からんのではないか?
正解。
造りたいという気持ちが先行して、しょっぱなを結構すっ飛ばしてます。
>てゆーかD3DX使わずに、とまでは思わないが座標操作が出来ないレベルなら
座標操作とは、X、Y、Z軸でメッシュを移動させるようなことですか?
それとももっと難しいレベルの話をしているのでしょうか?
>>369 >>360 が動的に剣先座標変わるモデルを操作しているとは思えんから
動的に剣先座標が変わるとは、どういうことでしょうか?
「スキンメッシュアニメーションなので、剣を振るような動作の場合」
動的に座標が変わると考えています・・・。
(毎回決まった動作ではありますが・・・)
それとも、もっと難しいレベルの話なんでしょうか?
(剣を振るたびに毎回なにかしらの計算をさせて、パラメータによって
剣を振る軌跡が変わるような場合のことを指すのでしょうか?)
スキンが必用なその剣は、くにゃくにゃ曲がるのか?
>初心者向きのはどいつなんでしょうか? しょっぱなから勉強する方法
最初からやり直したほうが良いだろ・・・ 付け焼き刃じゃ、自分では何もできないのは分かってるはず。
軌跡はもうテンプレにでも入れとこうぜ。不毛すぎ。 Q. 剣の軌跡を作るにはどうしたらいいですか? A. 剣の切っ先とつばあたりまでの直線を作れ それを毎フレーム記録してできる帯をポリゴンにすればおk。 滑らかにしたい場合は、スプライン補間でもしとけ。 これで分からない場合は、基礎がなってないから出直せ。
綺麗にできるかは謎
そこから先は座標補間の領分じゃなくってエフェクト表現そのものの領分だしな。 帯部分をステンシルで抜いて、1フレーム前の絵を加工して出すなんて実装もあった希ガス。 剣の軌跡の中に僅かにずれた絵が出るのは、重量感もあって中々格好よかった。
形状認識を行うアルゴリズム ワロタ
#include <d3dx9.h> が fatal error C1083: include ファイルを開けません。'd3dx9.h': No such file or directory」 になります.SDKはインストール済みなのですが,何が原因なのでしょうか? ・環境 WinXP pro DX 9.0 SDK(August 2006) VS pro 2005 (VS.net 2003もインストールされています) よろしくお願いします.
includeファイルが開けないのが原因ですよp(^▽^)q
>VS pro 2005 >VS.net 2003 どうみても違法コピーです。本当にありがとうございました。
アカデミックアライアンスって知ってる?
386ではないが、昔Visual Studio .NET theSpoke Premium 2003 ってのが学生限定で5000円くらいで売ってて、 サービスが終了するときのキャンペーンで2005がただで貰えたがな。
そんなのを未だに使ってるって就職失敗かニート?
>>390 おいおい、
>>385 みたいな初心者にEnterpriseやTeam Systemを使わせる気かよw
逆の意味で言ってるなら、
VSのアカデミック版は卒業後も永久使用可能で学生時から商用利用可だ
てゆかエラーメッセージに解答出てる。
2年
>>385 ファイルが開けないって書いてあるだろ。
SDKインスコしたら勝手にファイルが開けるようになると思ってるか?
>>387 俺は2003も2005も普通にPro版買ったが?
Pro版ならそこまで高くないし十分元が取れるソフトだろ。
そりゃPro版買っておいて、元が取れないと嘆くやつが おったらただのアフォだw
396 :
385 :2006/10/11(水) 23:34:15
大学のライセンスなので正規品です。
全然使えなくて困ってる
です。
>>394 ち、違う
397 :
385 :2006/10/11(水) 23:38:44
途中で送信しちゃったorz
大学のライセンスなんで正規品です。
全く使いこなせてないので困ったもんです。
>>394 違うんですか!?
インクルードディレクトリとかでパス通してから出直せ。
こういう人ってあれだよね、Makefileすら書いたことないんだろうね もしくは今まで標準関数しか使ってなかったとか -Iを見てどう思うんだろうか
Makefileってマニュアルとかある?
本もあるし、ググレば情報も出てくる。 まぁ正直今時Makefileから書くってのも滅多にやらなくなったけどな。 俺はPS2やってたときが最後だわ。 つかパス通すのはMakefileうんぬんの前に大抵のお勉強サイトにも書かれてるだろ。
Makefileかー、この数年手で書いた記憶ねーなあ。 eclipseのCDTとか勝手にMakefile作ってくれて便利やで。 つーかお前らそんなんぐだぐだ言うくらいなら、VCのお勉強サイトでも教えてあげなさいよ。
V・・・VC初心者スレじゃないんだからねっ!
404 :
デフォルトの名無しさん :2006/10/12(木) 22:12:38
モーション付XファイルをD3DXLoadMeshFromXで読み込んだのですが 表示はされるのですが、動きません。 モーション付Xファイルを動かすためにはどのような処理が必要 なのでしょうか? サンプルがあれば解析しますので、ご提示いただければ助かります。 よろしくお願いいたします。 環境です。 Visual studio C2005 VC++ winXP Microsoft DirectX SDK (December 2005)
サンプルならSDKにはいっとるだろ・・・ スキンメッシュのやつだ。 ちゃんと見れ。
406 :
デフォルトの名無しさん :2006/10/12(木) 22:26:59
ありがとうございました。
カメラワークについて質問です。 原点にポリゴンがあって、カメラは原点から少し離れた 位置にあって、常にポリゴン(原点)の方を向いています。 いまマウスで画面をドラッグして上下左右に動かすと カメラの位置が原点を中心に球状に移動するようにしたのですが どうも、うまくいきません。 なにか参考になるHPや、アドバイスありましたら よろしくです
何がどううまくいかないんだ?
原点から伸びるベクトルAがあったとする。 このベクトルAから原点を見るようにカメラを作る。 マウスの上下左右移動に応じて、このベクトルを回転させる。
410 :
407 :2006/10/12(木) 22:57:15
あるていど回転するのですが、 X軸を中しんにカメラを半周すると天地逆転すると思うのですが 逆転したときにマウスの移動方向と逆回転してしまいます あたりまえかと思うのですが、これの防ぎ方がいまいちピンと きていません。 >マウスの上下左右移動に応じて、このベクトルを回転させる。 この回転方法がよくわかっていないのかもしれません。 例えば マウスがX軸方向に1ドット移動すると、カメラが1度回転するとします。 このときカメラをY軸について回転させれば、思い通りになるのですが マウスが斜め方向に移動したときに、変な回転になっている気がします。 わかりにくくてすいません
そう言えば昔、3D初心者がアニメーションツール作るぞ!ってホームページがあった。 メタセコのカメラワークをコピーしたかったらしいが、それすら出来ずに終了。 しまいには「メタセコのカメラワークは非常に高度なアルゴリズム!」とか語ってたが お前がアホなだけちゃうんかと。 見たところ、D3DXMatrixLookAtのようにカメラ座標、視点座標からMatrix計算してた。 そりゃ妙な動きする罠。
412 :
407 :2006/10/12(木) 23:02:07
連続すいません 要するに、マウスカーソルがX方向にXドット、Y方向にYドット移動したとき、 カメラの座標(Cx,Cy,Cz)が、どの軸に中心に何度回転すればよいかが あやふやな状態です。
414 :
407 :2006/10/12(木) 23:44:53
すいません 自己解決?というか妥協しました。 マウスが斜めに移動した場合は X成分とY成分のうち移動量の多いほうにだけ カメラを回転させるようにしたら、うまくいきました。 おさわがせしました。 レスくれた方々に感謝します。
質問です。 DirectX9.0c 2005April FullScreenでアプリを作成中です。 マウスをクリック(右でも左でも)すると、強制で非アクティブ(最小化)になって困っています。 ウィンドウメッセージを調べたら、 WM_NCACTIVATE WM_ACTIVATE WM_DISPLAYCHANGE WM_ACTIVATEAPP WM_PAINT 上記の命令が上から順に送られてきて、非アクティブになっているようです。 どこで発行されているかは分かりませんでした。(調べ方を知りません) この現象が何故起こる知りたいのですが、分かる方お願いいたします。
>>415 それは全画面化している様に見えて、実際のウインドウが裏にいないんだ。
ウインドウ作った後で
ShowWindow(m_hWindowHandle, SW_SHOWNORMAL);
UpdateWindow(m_hWindowHandle);
とかしてやれば、多分収まる。
DirectInputのフォースフードバック まず、ゲームではちゃんと効果が出ています。 同じプログラムで入力設定用のダイアログを開いて、テスト用のボタンを押して、 フォースフードバックをさせようとしても何も反応しません。 DirectInputのDISCL_EXCLUSIVEだからだと思うのですが、こういうものなんでしょうか?
418 :
415 :2006/10/13(金) 11:53:09
>>416 返答ありがとうございます。
DXUTCreateDeviceの後に(DXUTを使ってます)コードを挿入してみたのですが、駄目でした。
5台で確認したのですが、XP GeFo4 MX440 1台でのみ発生します。
その他のマシンでこの事象は発生しません。
グラボが同じ 2000 GeFo4 MX440 でも発生しませんでした。
>>416 さんの仰る通り実際のウィンドウが小さくなっている気がします。
画面の左上の方をクリックしても非アクティブにはならない事がわかりました。
実際のウィンドウが小さく左上にある感じがします。
(デスクトップのサイズは1280x960 フルスクリーンは1024x768)
419 :
415 :2006/10/14(土) 07:23:53
マルチモニター機能がいつの間にかONになってましたw マウスが別画面に行ってたっぽいです。 お騒がせしました〜。
420 :
デフォルトの名無しさん :2006/10/14(土) 22:38:47
DrawPrimitiveUPを使うときは 頂点シェーダって使えない?
421 :
420 :2006/10/14(土) 23:48:15
すまん、寝ぼけてたw ぜんぜん使えたw
422 :
デフォルトの名無しさん :2006/10/15(日) 21:45:35
DirectPlayで IDirectPlay8Address::AddComponent(DPNA_KEY_PORT〜〜〜 で設定するポート番号って何に使うの? DirectPlayは47624,2300-2400を使うんじゃなかったの? ユーザにはどのポート空けるように言えばいいのか教えてくれぃ
DirectPlayなんて使わないでくれぃ
WinSockマジオヌヌメ
winsock知ってるやつが楽するために使うのがDirectPlay
いち初心者なんですが、本当のところ DirectPlayって使わないものなのでしょうか? やっと描画系を覚えたド素人なのですが 今後、DirectPlayを勉強しようかなってときです。 WinSockで十分ならDirectPlayは 参考程度に斜め読みしますよ。
DirectPlayの方が簡単。
>winsock知ってるやつが楽するために使うのがDirectPlay ネタ?
DirectPlayはもはやレガシー
winsockって答えてるやつはどんなプロトコルも自前で書く気か? 趣味やパッケージソフトの世界だな
DirectPlayはMS自体がサポートしない旨を明記しているのに、 今更、新規の案件で使う意味が分からない。
漏れはDirectPlayの時のがしんどかった DirectPlayで書く方が絶対コード量多い
NAT超えやボイスチャット、ロビー機能、UPnP対応 なんて実装しねーよバカ
DirectPlay、あんなもん使ってるやつがいたのか 世界は広いぜ、ちくしょう
結局
>>422 の質問に誰も答えてあげてないのにバロスwww
そんなん誰も使ってねーよと それが答え。
俺はLinuxやPS2と通信する時にDirectPlayではどうにもならなかったので早々にWinSockに移行した。
438 :
385 :2006/10/16(月) 17:35:25
>>386-395 ,398-403
超遅レスですが出来ました!
(インクルードディレクトリ,ライブラリディレクトリを追加)
ありがとうございました.
明日の朝8時マスターアップです! ちょっと聞きたいんですが、 テクスチャを重ねる処理を加えたら勝手に終了するようになってしまいました。 何かメモリ的なことだと思ったんですがよくわからない状態です。 具体的には今まではテクスチャは1枚だけくっつけて表示してたんですが、 今日の夕方にやっと正式なテクスチャがあがってきたと思ったらマルチテクスチャ?になっていて、 急遽この処理を追加したんです。 そしたらメニューからSTARTを選んでゲームを始めると、 一瞬だけゲーム画面が出るんですが即終了しちゃうんです。 もしかするとマルチテクスチャにこういうバグが潜んでるのかもしれません。 どなたか同じ経験にあわれた方いませんか?
マルチテクスチャにそんな寒いバグはない。 普通に1ポリゴンに8枚貼ったり出来る。 君のプログラムがバグっているだけだろう。 ある今マルチテクスチャが対応してないほど古いビデオカード使っているか。 というかDirectXで開発してて、何のエラーも出ずに即終了ってありえないんだが・・・。 デバッグランタイム使いつつ、VisualStudioでデバッグモードでちゃんと動かしてるのか? そもそもどんな環境なのかもDirectXのバージョンも分からなければレスのしようもないぜ。 いや、してるけど。
質問です D3DX系のAPIを使うとd3dx9_xx.dllというのが必要ですと エラーが出ると思うのですが、これの解決方法をネットで 調べていたら、エンドユーザにこれをさせるのは結構面倒 そうなので、D3DX系を使わないでコーディングするという のは常識でしょうか?それともエンドユーザにランタイムを インストールしてもらうほうが普通でしょうか。
常識なんて物はない。 自分が必用だと思う手段をとればいい。
パッケージソフト→インストーラを作る フリーソフト→再配布パッケージインストールしてねとドキュメントに書く
レス、サンキューです 失礼しました、常識って言葉が悪かったですね。 いやー、個人的な話でもうしわけないんですが PCに無知な友人(複数)にプレイしてもらいたくとも ランタイムインストールしてって一言で言えなかったりして。 そういう場合は、やっぱ使わないんでしょうねD3DX。 ありがとでやんす
D3DXはShader、Effect、Texture関連がねー これD3Dプログラミングでは、ほぼ必須 自前で実装は無理だしね、素直にユーザにやらせろ
>>445 やっぱ、d3dx便利ですよねー
なして配布がこんなに面倒になったのか。
きっと理由があるんでしょうけど。
面倒だから添付して一緒にインストールしちまえ。 コアは変わってないから俺はlib時代のやつ使ってるけど。
DLLにかわった理由ってなんだろ? バグが見つかったとき、MSが静かに修正できるようにするためなのかな。
もう面倒だからいっしょのフォルダにdllをぶち込んだとしても誰が文句など言おうか・・・ とか考えてる奴は俺だけじゃないはず・・・。
>>448 多分、馬鹿がdllにするとカッコイイ的なこと考えてぶち込んだんだと思う。
っていうかlibがアフォ過ぎて嫌いって奴がいてdllにしたらもっとアフォなことになったとかそんな感じだと思う。
俺もlibはコンパイルオプションが少しでも狂うとリンクできなくなるから嫌い。
でも、今のdllの状況はそれよりアフォだと思う。
でも、dllにした奴がWindowsUpdateで配ってくれるだろう・・・とか考えていたなら、当てが外れてカワイソス。
ついでに俺等もカワイソス
DirectXのバージョンを上げてくれたら、こんなに悩まなくてもいいのに。 そうだったら エンドユーザ<お、DX9.0c2なんてやつがでてる。俺ゲーム好きだからアップデートしとこ。 となってくれそうなのに。
そして 「なんだよ、アップデートしたら動かなくなったぞ、こんちくしょう おれのPCじゃつかえねーのに何でアップデートすんだよ!」 とかクレームが
まさにそれ。 漏れも組み込んだ。 そこそこ面倒くさいぞ。
456 :
デフォルトの名無しさん :2006/10/17(火) 04:39:45
すみません。誰か教えてください。 typedef struct VERTEXDATA { floatx,y,z,rhw; D3DCOLORcol; } VERTEXDATA; VERTEXDATA v[3] = { {32.0f, 0.0f, 0.0f, 1.0f, D3DCOLOR_ARGB(0xFF, 0xFF, 0xFF, 0xFF) }, { 0.0f,32.0f, 0.0f, 1.0f, D3DCOLOR_ARGB(0xFF, 0xFF, 0xFF, 0xFF) }, {32.0f,32.0f, 0.0f, 1.0f, D3DCOLOR_ARGB(0xFF, 0xFF, 0xFF, 0xFF) } }; pDev->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE); pDev->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, v, sizeof(VERTEXDATA)); これだと三角形が表示されないのですが、理由分かるひと教えてください。 頂点は 0 12 だと描画できずに 0 21 の順番だと描画できます。
カリング
458 :
デフォルトの名無しさん :2006/10/17(火) 05:11:05
あれ、これだとカリングで捨てられちゃうのか・・・・。点の位置が変わるだけでそうなるのね。。。
459 :
デフォルトの名無しさん :2006/10/17(火) 05:18:11
>>457 うまくいった
ありがとうございます orz
>>440 あーレスサンクスです!
朝6時までかかりましたが無事に解決しました。
原因はマルチテクスチャをカウントするときグローバルのiDを使ってたことでした。
処理の流れを決める変数も同じiDなんですが、
テクスチャを貼らないときはiD=0になってました。
それでswitchで処理を振り分けてるんですが、
iDが0だとどれにもひっかからずにゲーム終わっちゃってました。
とりあえず間に合いました!
お前の腐乱死体のような処理フローなどどうでもいい
462 :
デフォルトの名無しさん :2006/10/17(火) 08:10:38
まったくだ いますぐソース削除して、ちんこ切ってグラフィックカードのファンにつっこめ
463 :
デフォルトの名無しさん :2006/10/17(火) 08:11:56
>>463 じゃあ逆に、何ならカリングで削られると思うんだ?
>>460 そんなん、その場所をステップ実行したら5分で分かると思うんだが・・・
>>461 問題を解決したときは詳しく書いておいたほうが、
同じミスで悩んでる人のヒントになるのは常識でしょう。
>>465 そりゃあ終わってしまう原因と解決策を俺が書いたからでしょう。
原因不明な状態ではマルチテクスチャを追加したことを疑うのが先。
>>466 普通にDirectXをデバッグランタイムで動かしている場合、
DirectX内部のエラーはすべて報告される。
D3Dエラー発生時にブレークするようにも出来る。
エラーダイアログも出ずに即終了の時点でDirectX関係のエラーの可能性はまずない。
そもそもマルチテクスチャとフロー関係の変数を同じもので
使いまわすというその学生並みの設計を何とかしろ。
>>467 エラーが報告されるといってもそれはMSが想定した範囲でしょう。
想定外のエラーは報告されないどころか感知すらできない。
これが原因で終了していたのならエラーなんて表示されないでしょう。
それから変数をグローバルにするのは、
メモリ節約と速度アップに効果的なことぐらいゲームプログラマなら知っておくべき。
もっとも限られたメモリでプログラム組んだことないんだろうけどな。
うちの会社はコンソールとWIN両方やってるけど、
WINプログラマだからって好き勝手メモリ使うバカなんて1人もいないけどね。
>それから変数をグローバルにするのは、 >メモリ節約と速度アップに効果的なことぐらいゲームプログラマなら知っておくべき。 えーとそのなんだ。 釣りだよね?
ローカル変数を使った方が、最適化されたコードを吐きやすいとか、 CPUキャッシュにヒットしやすいとかゲームプログラマなら知っておくべき。 ただし該当部分だけグルグルまわすベンチをとって、 プログラム全体ではほとんど影響がないのに、 ほら早くなっただろうとか声高にアホを晒す必要はない。
>>469 意見は具体的にどうぞ。社会に出てからそんな口聞いてるとクビだよ。
>>470 autoよりregisterのほうが速いの知ってるかな。知らないなら議論の無駄だね。
>>471 無茶に敵を作らない方が良いよ。
無視する事もできるでしょ?
>>471 registerは無用に使うと最適化の妨げになるだけなので、
VisualC7.1辺りではキーワードが完全に無視されている。
確かに知らないのなら議論の無駄だね。
あのね、お兄ちゃん。 DirectXでわからないところがあったんだけど、 一生懸命がんばったら、1人でできたよ。 何度もお兄ちゃんに聞こうと思ったよ、 でも、いつまでもお兄ちゃん(2ch)にべったりだと、 また子供(DQN)扱いされちゃうから、がんばったんだよ。 頭撫でててね。エヘッ。 でだ。 DirectGraphics関係のクラスを実装して、 ある程度、自由に描画関係などを組めるようになったんだが、 どこから組めば頭いいの? サウンド関係のクラスとかをぜんぜん作ってなくて、 そっちの方のクラスを実装してからの方が賢いのか? その他、ゲームの実際の動きとか造る前にエフェクト関係とかを 先に実装すべきでつか? 簡単なアクションゲームを造ろうと思うのだが、 どのように造っていけばいいかが分からないのでつよ。 「お好きなところからどうぞ」 という回答の場合、 貴方ならどのように組んでいくかをご教授願いたいでゴザルよニンニン。
>>468 MSが想定していないDirectXの関数は存在しない。
デバッグランタイムにはすべての処理にチェッカーが埋められている。
そもそもエラー発生時にアプリが何も言わずに終了というのはVisualStudio上デバッガではまずありえない。
ルーチンがおかしいとかじゃなくアプリが強制終了なんてメモリ破壊とか致命的なものでなきゃおきないぞ?
新しい仕様を盛り込んだ瞬間に発生したバグに対して自分のコードではなく
実績あるライブラリを疑うことがもう過信もいいところ。
携帯機なんかでメモリをギリギリまで絞るのは当然のことだが、
WindowsのようにOSがすべて管理してくれて高度な最適化をもった
コンパイラを使ってる状況で、同じグローバル変数を使いまわすなんて愚の骨頂。
わずかな速度アップの為にくだらないバグ仕込むような保守性の低さになんとも思わないか?
時代についてこれないのが悪いとはいわないが、自分がついてこれていない事もみとめたほうがいい。
>>474 サウンドは既存のライブラリつかいまわーし。
Oggのストリーム対応とかいくらでもあるっしょ。
>>474 音なんか最後でいいから、とにかくゲームを作るべき。
寄り道するとすぐ飽きる。
>>476 俺は初心者のときは寄り道も含めた勉強は大事だと思うけどな。
ゲームを完成させることは必ずしも大事なことじゃ無い気がする。
ショボイゲーム作ったところでそれがなんだって気はするけどね。
初心者のころは自作ライブラリを作る→それを使ってなんか作る(別にゲームでなくてもいい)
→また、新しいライブラリを作る→それを使って・・・
を繰り返したほうが力が付くと思う。
ゲームだけでも駄目だし、ライブラリだけでも駄目だと思う。
よく、開発者で「3Dデモよりゲームを作ってきた人を評価する」なんて人がいるけど
そんなのは他の人がそうするから違う視点でみれる俺を褒めろ的ナちょっと違う俺様アピールでしかない。
〜よりとか〜した方がじゃなくて、なんでも必要だし、なんでも大事だよ。
まあ自分で納得行くようにやれやと。 好きこそ物の上手なれと申しましてな。
479 :
474 :2006/10/18(水) 09:53:17
あのね、お兄ちゃん。
デザインパターンはという言葉すら知らないくらいに子供のときに1回ゲーム造ったんだけど、
「めちゃくちゃ」なコーディングになっちゃったの。
そのときは、気合とコミケの締め切りがなかったら絶対に完成
できなかったと思うの。
(も、もちろんお兄ちゃんがそのともたくさん教えてくれたのはわかってるよ)
そろそろ、大人の階段の登り方を教えて欲しいな・・・って思ってるんだよ。
エヘッ。
でだ、
>>475 漏れも、サウンド関係は既存のライブリを使まーす。
>>476 >>477 >>478 寄道すると飽きるのは分かるが、
がんがんコーディングして、ニッチもサッチもいかなくなると
挫折感のせいで、前に進めなくなる経験をしている俺がいる。
とりあえず、好きなようにコーディングして、ゴタクの前に血反吐ゲロゲロ吐くのが
一番近道ってことだと了解したよ。
それで、挫折するようならゲーム造るな、ってことなんだと思う。
サウンド関係の話が出てるけど、古いPCで動かす場合に サウンド関係で動かなかったりすることってある? ビデオ関係だと特定の機能がビデオカードになくて、エミュレーションしたり 動かなかったりするけど、サウンド関係でもそんなことあるのかな?
>>474 いい加減そのアホな書き込み止めたら?
初心者プログラマーにありがちな浮かれ加減が出てて気持ち悪い。
「やったー!動いたー!俺って天才!?」的な感じだろ?どうせ。
ちょいと質問なんだが、何を動かそうとしてもDirect3Dが初期化出来ないのだが、何故? ゲーム関係は全くと言っていいほど動かないorz
デバッガーで帰ってきたエラーコード調べりゃ良いじゃない。
>>484 ありがとう。
ドライバの不具合など以外は、機能面では大丈夫ってことかな?
昨日の夜は打ち上げ飲み会やったんですよ。 他のプログラマとか外注さんとか参加してたんで話題に出たんですが、 みんなこのスレ見てたようですねー。 やっぱ現役の声のほうが確かですわな。 結論は「あいつらホビープログラマだろw」で全員一致しました。 いろいろな意見が出ましたが「メガデモとか知らねぇんじゃねぇ?」とかもありましたよ。 まあこの話はこれで終わりということで。
今時、メガデモとか言い出すダメプログラマでも、 仕事で何とかやっていけるのが土方プログラマの世界。
489 :
デフォルトの名無しさん :2006/10/18(水) 21:26:31
いきなりすいません。今ネットゲームやろうと思いましてダウンロードしたところゲームが出来なかったのです。 そしてdirectX9.0をダウンロードしていないことが原因と判明したのでインストールしようとしたら なぜかダウンロードが1秒で終わってしまうのです。そしてネットゲームを繋いでみると・・・。 すぐ落ちてしまい、そのあとフリーズ。なぜかわかりますでしょうか?わかる方おりましたらレス下さい。
>>489 Windows95ではDirectX9は動かないよ。
491 :
デフォルトの名無しさん :2006/10/18(水) 21:53:55
Direct3Dの各サンプルにて、Commonフォルダ内のファイル内容を変えずに WinMain(もしくはWinMainがあるファイル)内でデバイスのアドレス(LPDirect3DDevice9)を取得するにはどうすればいいのでしょうか。
逆に言うと95とNT以外は全部サポートしてるんだから地味にいいバージョンだよな。 ちなみにサウンドに関してはサウンドバッファをハードウェアに作るのはかなり地雷。 多少の負荷は目をつぶってでもシステムメモリに作って全部CPUでやらせたほうがいい。
493 :
デフォルトの名無しさん :2006/10/18(水) 21:57:39
>>490 いえ、Meなんです。。言い忘れてました。。
>>493 Me(OS)のバージョン最大限に上げる。
関係ないと思うけど、ビデオカードのドライバのバージョンを
最新のものにする。
ハードディスクの空き容量が足りないっていうオチだったら
ぬっころす。
マイクロソフトのソフトって、ネットからソフトの本体を落としたりするから
セキリュティソフトとかの問題も疑ってみるべき。
外してたらすまそ。
完璧に板違い。
C++(CLIではありません)でDirectXを使い始めた者です。 現在Direct3D9のチュートリアルを見ているところです。 サンプルではIDirect3D*をグローバルに持っているのですが、これを スマートポインタに入れたいと思いました。 WEBで探してみると_com_ptr_tを使えば良さそうだと思いました。 ところが_com_ptr_tはInterfaceをメンバに持つクラスのオブジェクト でなければならないようで駄目でした。 何か良い方法はございませんでしょうか?
それ単に思いついただけっぽい書き込みだな・・・。 本当にその必要があるのかどうか考えてからのほうが良いぞ・・
498 :
496 :2006/10/18(水) 23:59:31
ATLというライブラリのCComPtrを使えば良いようですね。
他に良い方法はありますでしょうか?
>>497 IDirect3DDevice9の開放のタイミングがよくわかってません。
やはりCreateDeviceの引数にハンドルを渡したウィンドウが消
される前でないとまずいのでしょうか?
グローバルなスマートポインタで持っておいてWinMain終了後に
開放だと駄目なのかなと。
別にウィンドウ消されたあとでも問題ないが、 ウィンドウ消されたあとでPresent()呼ぶと当然エラーで落ちる。
Direct3D 全体を管理するクラス作って、デストラクタで開放すればいいんちゃうの
だがD3DDeviceを複数作ってしまう罠 いや悪くは無いんだが、パフォーマンスは落ちる。 らしい。
502 :
491 :2006/10/19(木) 08:17:15
やはり方法はないのでしょうか? 逆に、同じくCommonフォルダ内のファイルの内容を変えず、 自作ファイル内で作成したデバイスのアドレスを渡すのでもいいのですが、DXUI以外で設定できないものなのでしょうか。
504 :
デフォルトの名無しさん :2006/10/19(木) 15:32:53
メタセコイアで作ったxファイルをDirectXのプログラムでテクスチャをマッピングしようとしたのですが、なぜかマッピングできません。 ビットマップがおかしいのかと思い、DirectXのサンプルにあるトラの画像を変えてみたのですが、ちゃんと画像が貼られていました。 なのでxファイルがおかしいのかな?、と思うのですがどうすればよいのかわかりません。 ちなみに、メタセコイア(フリーソフト、ver2.3)でやっています。
>>504 DirectXのサンプルの自分のプログラムを見比べればいいだけ
507 :
デフォルトの名無しさん :2006/10/19(木) 18:29:48
返答していただき、ありがとうございます。
UVマッピングはしています。
私はビリヤードの球を作っていまして、材質設定のところでマッピング方式をUV方式にして、
図形作成のときの詳細設定でもUVマッピングとしています。
>>505 サンプルに直接xファイルを入れています。
>506
ビリヤードの球を作っていまして、材質設定のところでマッピング方式をUV方式にして、
図形作成のときの詳細設定でもUVマッピングとしています。
あと、xファイルで保存するときは座標軸をDirect3Dにして、
xファイルオプションは法線とUVマッピングにチェックを入れてます。
情報が少なすぎる。
まともなモデリングソフトできちんとUVの調整をしろ。
>>507 Xファイルの中を覗いてみればいい
テクスチャやUVがどうなってるのか見てみるがよろし大根おろし
なんか加齢臭がする
そもそも球体に思い通りにUVを張るのは、かなり面倒な作業なんだが、 まさかテレパシーを送ると自動で作ってくれると思っているのか?
>そもそも球体に思い通りにUVを張るのは、かなり面倒な作業なんだが おいおい、ビリヤードの球にUV貼るなんて楽勝だろ(w
514 :
sage :2006/10/19(木) 22:45:23
皆さんありがとうございます。 xファイルのUVの調整ができるソフトを探してみます。
ん?メタセコでもなんら問題ないと思ったが
自己未解決しますた。
>>512 ,514
そんなに厳密なもん必要なの?
頭悪いんちゃう?w
メルカトル図法的になっちまうのは問題だろとか、そーいうことが言いたいのと違うのか。 いや、しらんけど。
519 :
デフォルトの名無しさん :2006/10/21(土) 07:32:36
DirectSoundで効果音再生すると 「ブッ」って音が最初に入るんだが普通? リソースからmmioとか使ってWAVEデータ読み込んでるんだが。
>>519 バッファをクリアすればいい
よくある方法→無音再生
ごめんオレが...(ry
DirectSoundの昔からの問題だな
524 :
519 :2006/10/21(土) 12:51:42
まだよくわかんね。 1. プライマリバッファを作る 2. セカンドバッファを作る 3. セカンドバッファにデータを書き込む 4. セカンドバッファをDuplicateSoundBufferでいくつかに複製 5. 複製したものを再生 ってやってるんだがどこで何のバッファを クリアしてやればおk?
525 :
519 :2006/10/22(日) 09:01:58
5秒の無音を無限ループしてみたら、
5秒ごとに「ブ」が来るわ。
これは
>>521 のせいってことでFA?
お、おならなんてしてないわよっ ちょっとお芋が美味しかっただけなんだからね・・・
526から離れるんだ、逃げろー
俺も、再生開始時のプッ音は何度も経験してる 環境依存っぽかったので、サウンドカードが古いのが原因だと勝手に思ってたけどな
使う前にバッファクリアしてみるとか
外部音源のときとかそうだったかな・・・ まあ、まずは自分の今の環境で他のサンプルがどうなってるか? を確認して、 それがなってなかったら、そのソースと動作を確認。 それもなるようなら環境依存ってことじゃね?
俺もだ。サウンドバッファは生成時に自動クリアしていて 問題ないと思うんだが、ときどき最初のサウンドの再生開始時に鳴る。 再現性がなくて全く問題ないときもあるのでお手上げ状態だわ。 ハード依存ということで割り切っている。
セカンダリを消してても、プライマリは古いデータが 残っていてそれが再生されるということがある。
>>534 最初の音でノイズが出ることがあるのは他のソフト(WIN含む)が使ったバッファが残ってるからだよ
537 :
519 :2006/10/22(日) 18:35:22
今帰った。
たくさんレスありがと!
>>528 WAVEデータはSoundEngineで作った無音データ。
リソースから読み込んでる。
バッファに書き込んでるデータを見てみると先頭が
"RIFF"ってなっとる。
これが原因?
>>530 プライマリ?セカンダリ?
>>531 DirectSoundのサンプルではノイズは出ないわ。
( ゚д゚)ポカーン
539 :
534 :2006/10/22(日) 19:17:17
>>535 >>536 あ、そういえばプライマリバッファのクリアはしていなかったです。
協調モード DSSCL_NORMAL なので SetFormat もしてなかったんですが・・・
(触らなくていいと思ってた。)
かまわずロックしてゼロクリアしてみました。おお、直ったような・・・?
再現性がないのでもう少し使ってみないと確実な結果はでませんが
改善されたような気がします! ご助言ありがとう!!
OpenGLでは フリーの人体モデルが結構みつかるのですが DirectXではないのでしょうか? OpenGLとdirectXの混合でコードを書くことはできますか?
OpenGL用? OpenGLって共用のモデルフォーマットなんて無かった気がするが・・・。
フリーの人体モデルで作るって Simsみたいなの、500ポリゴンのカクカク美少女が競演とかするのか
OpenGL専用ってわけじゃないけどソニーが音頭とってたフォーマットがあるじゃん
>>537 > バッファに書き込んでるデータを見てみると先頭が
> "RIFF"ってなっとる。
メチャメチャそれが原因なんだが、気付いてもらえるだろうか・・・(;´д`)
OpenGLって自前でモデルデータ読み込む必要があるから 「OpenGLのモデル」っていうのは存在しないよ。 根本的なところを理解してないから勉強しなおし!
>SONYが音頭とったフォーマット そんなものもあったねえ すげー久しぶりに思い出したよ 今でも生きてるだろうか
>>545 見逃してたw
なんでヘッダ部分までバッファに読み込んでるんだw
>>544 COLLADA?とかいうXML形式のファイルフォーマットだっけ?
いや、普通に注目集めてるし。 ゲームなんかじゃ導入事例増えまくりですよ。 DirectXとの相性は全然よくないけどなー。
どの辺で注目集めてるのか教えて。 あと、増えまくったという具体的な導入事例も。 XML関連はゲーム開発者(とくに日本の)からは敬遠されがちだし、 少なくとも俺の周りには注目してる人いないんだが・・・
エミュレータ関連だとOGL多いな
552 :
デフォルトの名無しさん :2006/10/23(月) 17:09:24
質問です! 3Dの話なんですが ある点Aから2点BCを通る直線に垂線を下して 垂線と直線が交わる点を求めたいんですが どうやればいいでしょうか?
中間フォーマットで利用してる人が実は多いといいたいんじゃない? いくらなんでも最終フォーマットとしてはありえないんだし。
>>552 X={A・BC}/|BY-AZ|
Y={A・BC}/|BZ-AY|
Z=|AX+BX|/{X・Y}
555 :
デフォルトの名無しさん :2006/10/23(月) 20:09:00
質問失礼です。 ユーザーによる複数行の書き込み処理を実装したいです。 CEdit等のWindowsコンポーネント(っていうんですか?)を組み込む事は可能でしょうか? なんとかして処理を軽減したいのですが、、、 環境を下記します。 2000 & XP VS2003 DX9.0 2005 April
言語何?
557 :
555 :2006/10/23(月) 21:10:18
C++ です。 失礼しました。
558 :
デフォルトの名無しさん :2006/10/23(月) 21:19:26
559 :
デフォルトの名無しさん :2006/10/23(月) 21:25:34
>>554 全てベクトルだとすると、XベクトルにAとBCの内積をBY-AZのベクトルの大きさで割った数値を入れるのは変ですし
X,Y,Zがそれぞれの成分だとすると、成分同士の内積を求めることはできませんよね?
560 :
デフォルトの名無しさん :2006/10/23(月) 21:52:33
なんかDirectXっていうより数学っぽいので数学板で聞いてきます
561 :
デフォルトの名無しさん :2006/10/23(月) 23:25:19
プリミティブ色 = デフューズ色 * デフューズ色の強さ + スペキュラ色 * スペキュラ色の強さ 現在ライティングを↑の式で求めているんですが、これに環境マップ色を加えたいんですが 一般的にはどうするのが普通なんでしょうか?
>>561 環境マップで何を貼るかによって違ってこない?
ハイライトとかライト系だったらスペキュラの代わりだろうし
背景の映り込みだったら↑とは違ってくるし。
そもそも、色テクスチャは考慮されてるの?ディフューズと差し替え?
アンビエント色とライト色が入ってないのも気になってみたり・・・・・
563 :
デフォルトの名無しさん :2006/10/23(月) 23:43:07
>>562 見やすくする為にいろいろ省いています。
実際のコードは以下の通り、D3Dのライティングモデルとほぼ同じです。
vColor.rgb= 0
vColor.rgb+= ( vMaterialDiffuse * light.vDiffuse * vDecal * sDiffuseFactor + vMaterialSpecular * light.vSpecular * sSpecularFactor) * sAttenFactor * sSpotFactor;
vColor.rgb+= light.vAmbient * vDecal;
これに環境色を掛けたり加えたりしたのですが、どれもいまいち不自然になってしまいます。
物理的に正しい観点からという方向も、そもそもこのライティングモデルは物理的根拠が無いですから
詰まってしまいます。
564 :
デフォルトの名無しさん :2006/10/23(月) 23:50:30
デフューズ色やスペキュラ色は、物体の色と光の色が掛け合わされたもの(物理的には違いますが) 物体の色には、物そのものの色に加え、物が反射して映り込む背景の色も含まれるはず つまり、vMaterialDiffuse *= vEnvironment、vMaterialSpecular *= vEnvironmentとするのが 最もうまくいく?
質問です。 四角ポリゴンに法線をつけようと思ってるんです。 ちゃんと平面なときはいいんですが、 平面じゃない四角ポリゴン(実際はD3DPT_TRIANGLEFANで二つに割ってる)の場合がうまくいきません。 きっちり法線取りたい場合は四角ポリゴンを三角にバラすしかないですかね?
>>565 四角形ポリゴンを三角形2つにばらすではなくて
三角形2つで四角形ポリゴンとみなすに、考え方を切り替えよう。
四角形ポリゴンは実際には作れないんだから、三角形2つの法線で近似するしかない。
>>564 深く考えると、Diffuse色とかSpecular色って何のことを指してるの?って思う。
(反射色?拡散反射色?反射と拡散反射の計算って?光源色は白として計算?)
厳密には、反射するもの全てが所謂「環境マップ」そのものとも言える。
反射色/反射率/拡散反射色/拡散反射率/色テクスチャ/環境マップ/光源色・・・
自然界をそのまま計算するには要素が多すぎるよね。
で、簡単に考えるとしたら、環境マップは反射色の代わりに使ったらいいんじゃん?
568 :
デフォルトの名無しさん :2006/10/24(火) 01:14:16
>>567 デフューズ色 * ( 1 - 鏡面反射強度 ) + 鏡面反射色 * 鏡面反射強度 + スペキュラ色
つまりこうですかね?
ちょっとこれで試してみます・・うまくいきそうな予感
厳密に考え進めると↑で良さそうな感じがするんだが、 > デフューズ色 * ( 1 - 鏡面反射強度 ) これで色が暗くなるんだよね・・・ Diffuseが、(反射してしかも)拡散した結果の色ってのがクセ物。 誰か「一般的」な方法を教えてあげてください・・・
570 :
デフォルトの名無しさん :2006/10/24(火) 02:03:32
また、複数のライトの場合どうすればいいのか・・ >鏡面反射色 * 鏡面反射強度 この部分はライトには依存しないので、ライトが何個あろうが 1回加えられるのみにしなければならない。 とすると以下のような感じ? + デフューズ色0 * ( 1 - 鏡面反射強度 ) + スペキュラ色0 + デフューズ色1 * ( 1 - 鏡面反射強度 ) + スペキュラ色1 + デフューズ色2 * ( 1 - 鏡面反射強度 ) + スペキュラ色2 + 鏡面反射色 * 鏡面反射強度 これに関する情報が手に入りにくいのは、実ははっきり決まってないからなのかなぁ
手に入りにくいも何も、単に描画モデルの古典例のひとつでしかないからだから… そもそもモデルとして正確でもなんでもないんだから、結果オーライで好きに実装すればいいと思うよ
572 :
デフォルトの名無しさん :2006/10/25(水) 10:28:00
DirectXのサンプルがビルド出来ません。
http://monsho.hp.infoseek.co.jp/dx/dx76.html ここのページを参考にVisual C++ 2005 Express EditionとDirectX SDK(October 2006)と
Platform SDK for Windows Server 2003 SP1をインストールして、インクルードファイル等の
設定をしました。このページのサンプルコードはビルド出来ました。
しかし、DirectXのサンプルがビルド出来ません。次のようなエラーが出てしまいます。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__DefWindowProcA@16 が関数 "long __stdcall MsgProc(struct HWND__ *,unsigned int,unsigned int,long)" (?MsgProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__PostQuitMessage@4 が関数 "long __stdcall MsgProc(struct HWND__ *,unsigned int,unsigned int,long)" (?MsgProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__UnregisterClassA@8 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__DispatchMessageA@4 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__TranslateMessage@4 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__PeekMessageA@20 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__UpdateWindow@4 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__ShowWindow@8 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__CreateWindowExA@48 が関数 _WinMain@16 で参照されました。
Vertices.obj : error LNK2019: 未解決の外部シンボル __imp__RegisterClassExA@4 が関数 _WinMain@16 で参照されました。
プロジェクトのプロパティの追加の依存ファイルは
d3dxof.lib dxguid.lib d3dx9d.lib d3d9.lib winmm.lib
となっています。
どこが原因となっているのでしょうか?
573 :
デフォルトの名無しさん :2006/10/25(水) 11:24:34
574 :
デフォルトの名無しさん :2006/10/25(水) 11:25:45
あ、すみません。これは地面に対してティーポットは半分だけめり込んでいるのはいいわけですが、 ティーポットが崩れたようになっているのが問題としている部分です。
575 :
572 :2006/10/25(水) 12:53:59
すいません。自己解決しました。 プロジェクトのプロパティの追加の依存ファイルにuser32.libを加えたらうまく行きました。
数値計算にGPU使えないかと思ってます 4次元以下の行列計算をGPUにやらせたら高速になるのか バスとの転送速度でかえって遅くなるのか そのへん、どうなのでしょうか
ボードで違う予感
578 :
あや :2006/10/25(水) 17:20:08
最近、はじめたばかりの初心者ですが よろしくおねがいします。 現在、オリジナルの3DCGビュワーを開発しようとおもっているのですが、 用途として、 オリジナルのフォーマットで既存の3Dソフトウェアから 書き出すことが可能で、たとえば、.objxみたいな拡張子で 書き出せ、そのファイルをビュワーで読み込み、 その形状をオブジェクト中心にぐるぐるまわしたいです。 また、カメラ画角の変更等に対応できれば、さらにうれしいのですが。 さらに、いうと、全画面ビューで、ある程度のパフォーマンス(スピード)も ほしいです。 まず、お聞きしたいのが、一般的に上記のような(漠然としすぎてますが。) ビュワー開発は敷居は高いのでしょうか? すこし、他言語等で、プログラムをかじっている程度で、 テストプログラムとして作れるレベルのものなのか? 3D系のプログラムのイメージが、今まで経験値が なかったので、どのような体系(手段等)があり、どのようなプロセスで 構築していき、つくっていくのか、見当違い(的外れ)な質問なのかも しれませんが、諸先輩方にアドバイス頂きたいと 思っております。何卒、よろしくお願いいたします
表示は簡単です。 ぐるぐる回すのも難易度高くないと思います。 むしろオリジナルのフォーマットを策定してその入出力を書く方が大変? あと、 > オリジナルのフォーマットで既存の3Dソフトウェアから書き出す これをどう実現するつもりか不明なんですが、既存ソフトウェアの プラグインを書くならそれが一番大変かも知れません。 最初は、とりあえずデータ形式や入出力は忘れて、 プログラムのソースコードに直接データを記述してしまい、 それを表示・ぐるぐるするのを目標にしてはどうでしょう。 適当な入門書を探すとサンプルに載ってそうな気もします。
580 :
デフォルトの名無しさん :2006/10/25(水) 17:47:28
578です。 ご回答ありがとうございます。 >既存ソフトウェアの >プラグインを書くならそれが一番大変かも知れません。 具体的に、何が大変なのでしょうか? たとえば、3Dフォーマットには、obj、max、mb等 いろいろあるとおもいますが、それぞれ、それに対応した ソフトウェアで読み込みができるとおもいますが、 なぜ、読み込みができるのでしょうか?何が、それぞれで ちがうのでしょうか? 各ソフトウェアの設定や、埋め込む情報が それぞれあるとはおもいますが、たとえば、純粋に形だけ読み込めれば いいとおもっています。ただし、他のソフトウェアで読み込むことは 不可能にしたいです。(そのビュワーのみで開くことができる。) たとえば、その適当な入門書で、オススメ等あれば お教えいただけないでしょうか? また、CG言語みたいなものがありますが、 ある程度ライブラリも豊富で、敷居は低いと聞いています。 評判はいかがなものでしょうか? たびたびすいませんが、よろしくおねがいします。
581 :
デフォルトの名無しさん :2006/10/25(水) 19:41:27
578です。 ちなみ表示させたいポリゴン数は、約10万ポリゴン近くあります。 これをリアルタイムに高速に動かすためには、どういった手段が あるでしょうか?
>>576 少なくとも俺のShader2.0カードでは
演算性能以前の問題で、試そうとすら思えないなぁ
とりあえずもっと短くまとめてこないと読む気にならない人も多いんじゃないか? と思わないでもない。 情報が足りなさ過ぎるのも困り物だが。
584 :
デフォルトの名無しさん :2006/10/25(水) 22:19:46
<プロジェクト名> error LNK2022: メタデータの操作に失敗しました(8013118D) : 重複する型に、適合しないレイアウト情報があります (IDirect3D9) : (0x02000047)。 <プロジェクト名> error LNK2022: メタデータの操作に失敗しました(8013118D) : 重複する型に、適合しないレイアウト情報があります (IDirect3DDevice9) : (0x0200002c)。 このビルドエラーはどういう状態を表していて、何が原因なのでしょうか。 DirectX3D(2006/Aug)のサンプルのCommonフォルダ内のファイルを自分のプロジェクトに加えて一緒にビルドしただけです。 サンプルの内容は変えていませんし、自分のプロジェクト単体ではエラーは出ません。 また、元のプロジェクト(自分のプロジェクト単体)でCommonフォルダ内のファイルの関数は使っていません。 関数の重複はちゃんと表記されているのですが、上記のエラーは全く見当が付きません。 原因に心当たりがあると言う方がいらっしゃればアドバイスをいただけるとありがたいです。 ちなみにリビルドやデバッグフォルダを削除しても上記のエラーは改善されませんでした。
リンクエラー♪
>>578 さん、目的の物を作るのにどうすれば作れるのか、
それが分からない段階ではプログラムを組むのは難しいと思います。
あなたはどうすれば実現できると思いますか?
それを考えるのがプログラマーの仕事なんです。
例えば、冷蔵庫を作ろうと思っても何をして良いか分からないでしょう。
出来合いの部品を組み込むにしても、使い方を覚えなければなりません。
独自仕様にしようと思ったら、自分で部品を作らなければいけません。
まずはビュアーでオブジェクトを表示する所から初めてはどうでしょう?
これが出来なければ話になりません。
ライブラリ等は
>>2 にリンクがあります。
自分が出来る簡単な所から初めてはいかがでしょうか?
…というのが、プログラムを挫折した初心者の俺からの意見です…orz
587 :
584 :2006/10/26(木) 01:02:02
>>585 レスありがとうございます。
サンプルをそのまま持ってきたのを付け足しただけなので、リンクエラーしている場所が全く把握できないままでした。
片っ端から設定弄ってますとマネージ云々をいいえにしたら解消されました。
とりあえず現状で問題ないようですが、この設定の変更で今後問題が起きて悩みそう(´`)
588 :
デフォルトの名無しさん :2006/10/26(木) 07:18:53
だれか573答えてやって(笑) どうしてああなるんだ?
ポリゴンがめりこんでるんじゃ? Z比較を切るか。ティーポット浮かすか
ソース見せて
>>573 Zバッファの精度が悪いときにああなるね。
Zバッファが16bitなのか、カメラのNearとFarが凄く広い(間が開いてる)か。
たぶんカメラの方だと思う。Farを1000とか5000くらいにしてみたら?
何かの精度が臭いな。
何かの。
>>573 バックバッファのフォーマットとか、Zのフォーマットとか晒してみたら?
とりあえず、X8R8G8B8 D24S8 にしてみ。
D3DFrm使ってるだろうから ModifyDeviceSettings 内で、
pDeviceSettings->AdapterFormat= D3DFMT_X8R8G8B8;
pDeviceSettings->pp.BackBufferFormat= D3DFMT_X8R8G8B8;
pDeviceSettings->pp.AutoDepthStencilFormat= D3DFMT_D24S8;
にするのだ。
593 :
573 :2006/10/26(木) 15:28:23
ありがとうございました! ご指摘のとおりZバッファの指定が16ビットでした。 D3DFMT_D24S8で無事表示ができました! 皆様ありがとうございました
594 :
デフォルトの名無しさん :2006/10/26(木) 15:52:38
DirectX version9.0ってどこでダウンロードするんですか? 良く分からないので誰かお願いします
sage忘れた… ごめん
現在、DirectX9.0+VC++6.0で少しづつプログラムを組んでいます。 最初は1つのファイルでプログラムを行っていました。 ある程度無事動くのを確認したので、 分割コンパイルをしようと思い、ファイルをわけました。 そこで、各ファイルで共通で使うクラスをグローバルで定義しようと したところ、既に定義されている・・・というようなエラーが出たため、 staticを使い、エラーを回避しました。 その後、プログラムをコンパイルが無事通り、実行しようと思ったら、 実行した直後にメモリアクセス系のエラーが出てしまい、 うまく実行できなくなりました。 なにかしら上手い方法や、調べる方法がありましたら、教えてください。 DirectXとは話がずれているかもしれませんが、 板違いだったらすみません。
599 :
597 :2006/10/26(木) 17:41:18
600 :
597 :2006/10/26(木) 17:43:34
>>598 インクルードガードという言葉を初めて知りました。
が、既に下記のようにやっています。
#pragma once
でやっていますが、これでは不十分でしょうか?
ヘッダに実体置いてないか?
602 :
597 :2006/10/26(木) 18:03:00
>>601 ヘッダに実態はおいてないと思います。
ちなみに、下記の場合は実態にあたりますか?
Hoge_Class Hoge;
上記のようなことは行っております。
>>598 #pragma once を止めて、全部
#ifndefにしたら、staticをはずしてもコンパイルが通るように
なりました。
しかし、現在もメモリアクセス系のエラーが続きます・・・。
プログラムのミスの可能性も高いので、
引き続き自分のコーディングを疑ってみます。
>>602 >Hoge_Class Hoge;
実体にあたるよ
ヘッダは宣言だけにしる
604 :
597 :2006/10/26(木) 18:23:01
>>603 実態の宣言をしており、申し訳ありません。
複数の .cpp ファイルから 共通の実態(クラス)にアクセスしたい
場合はどのように行うのか教えていただけませんでしょうか?
現在は下記のようにやろうとしています。
A.cpp #include A.h
B.cpp #include B.h
C.cpp #include C.h
A.h #include X.h
B.h #include X.h
C.h #include X.h
X.h static Hoge_Class Hoge
cppに実体置いてextern
606 :
597 :2006/10/26(木) 18:28:03
>>605 下記のようにするということでしょうか?
A.cpp #include A.h Hoge.・・・;
B.cpp #include B.h Hoge.・・・;
C.cpp #include C.h Hoge.・・・;
A.h #include X.h
B.h #include X.h
C.h #include X.h
X.cpp #include X.h Hoge_Class Hoge;
X.h extern Hoge_Class Hoge;
607 :
597 :2006/10/26(木) 18:35:27
今、
>>606 のようにやり
正常に動作したことを確認しました。
厚く御礼申し上げます。
スレ違いにもかかわらず、質問してしまい
申し訳ありませんでした。
また、回答していただいた諸兄には深く感謝いたします。
608 :
デフォルトの名無しさん :2006/10/27(金) 06:30:37
directx以前の話やってんなよ vc使い方からの話じゃねえか
最近のSDKにDirect3d10って文字見かけるんですけど、 DirectX10でプログラム組んでいる人っています?
さすがに最新GPU買ってVista入れてDirectXやってる奴は少ないんじゃない?
まあ、 9→10も 8→9程度の変更でいけるんでそ?
そもそもDX10対応のビデオカードが売られて無いしな。 げふぉ8800ですら来月あたりに詳細発表で、値段は10万超えるとか言われてるし。
別に10の機能をフルサポートする必要はないだろ。 9の機能だって全部サポートしてるもんってはじめは無かったじゃん。 nVidiaのシェーダー2.0+なんてどこが「+」なんだよ「−」ちゃうんかとwってもんだったしw
615 :
デフォルトの名無しさん :2006/10/28(土) 07:24:35
ところでGeForceって「ジーフォース」だろ?
GeってGeometryのGeだろ?
>>613 ←お前だっせぇw
>>614 それでいちいち開発者がサポートする機能をチェックしないといけない、
っつー状況を改善するためのVISTAでありDX10であるわけじゃん。
DX9対応ビデオカードと違ってDX10からはフル対応していない限り、
「DX10対応」とうたってはいけないことになってるんだよ。
>>615 「げふぉ」にマジレスが入るとは夢にも思わなかった。
あ、ごめんなさい、涙が出てきた。
もう荒らすしかない
ちょっとVIPで宣伝してくる。 やっぱやめた。
フルサポートしてるからって満足な動作速度とは限らないけどな
いちいちCAPS調べて根本的な部分のON用OFF用のコード書くよりましだ。 まだ速度ごとのシェーダー用意するほうがましだ。
そんなこといってさ、過渡期は 速度ごとのシェーダーと、機能の有無のシェーダー両方作る羽目になるんだろ
機能有無のシェーダー作るなら素直にDX9でやるっつー話ですよ。 DX10は機能チェックをしなくていいってのもウリの1つなんだから。
DirectX9だって、チェックったって、シェーダーのバージョンぐらいなもんでしょ?
>>626 俺はステンシルのサポートの有無、
HDRやポストエフェクト用のレンダリングターゲットのサーフェイスフォーマット、
サーフェイス間転送用ののフォーマット変換のハードウェアサポート、
違方性フィルタリングの有無と精度。
あとはPS/VSのバージョンチェックとPureDeviceの有無かな。
DirectInputについて質問があります。 (マウス入力について質問があります) DirectInputでマウスの移動量を取得できるプログラムはできるように なりました。 しかし、以下の2点のようなことをしたいと思いましたが、 調べてもよくわかりませんでした。 1.スクリーン座標の中だけ、マウスカーソルを消したい WinAPIのShowCursor()関数を使えばいいのでしょうか? DirectInputでなにかしら有用な関数などあれば、 ご教授ください。 2.マウス座標をスクリーン座標で取得したい WinAPIのGetCursorPos()関数を使えばいいのでしょうか? DirectInputでなにかしら有用な関数があれば、 ご教授ください。 DirectX自体が初心者のため、WinAPIとの併用について問題がないか 不安になり、上記のような質問をしました。 もし、問題ないようであれば、以後の質問はWinAPIスレに行ってきます。
>>627 ステンシルはZバッファがサポートされてればほぼまちがいなくサポートされてると思うよ。
630 :
628 :2006/10/29(日) 19:00:26
ファイルを1つにまとめたいんだけど、 よくわからないっす。 ライブラリがあれば、黙ってそれを使います。 以下の流れで考えてるんだけど、正しい? <パッキング編> 1.ヘッダーを作成 2.ファイル結合 3.結合したファイルを保存 <パッキングファイル読み込み編> 0.ゲーム起動 1.パッキングをファイルをとりあえず、全部読み込む 2.分解して、それぞれこっそりと保存する 3.こっそり保存したファイルを適宜読み込んだり、開放したり。 4.ゲーム終了時に分解したファイルを全部消去する。
パッキングは別にいいが、 読み込みでいちいちバラしてたら、 1GBとかの容量のゲームどうすんだよ。 ヘッダにデータがあるんだから1ファイル分切り出して 必要な分だけメモリ読み込みできるようにつくっておきんしゃい。
>>631 ちなみに手っ取り早いのはzip使うこと。
634 :
631 :2006/10/29(日) 19:37:56
>>632 レスありがd
>ヘッダにデータがあるんだから1ファイル分切り出して
>必要な分だけメモリ読み込みできるようにつくっておきんしゃい。
頭悪いので、自分なりにがんばって理解してみた。
以下の考え方で正しい?
<パッキングファイル読み込み編>
0.ゲーム起動
1.パッキングファイル(2ch.pak)の中にある、読み込みたいファイル(2ch.bmp)を
2ch.pakより分解して保存。
2.通常通りファイル(2ch.bmp)をメモリに読み込み、メモリに格納したら、保存していた
2ch.bmpを削除。
3.同様に適宜ファイルを読み込んだり、しなかったり。
4.ゲーム終了時にはファイルパッキングに関しては特になにもしない。
635 :
631 :2006/10/29(日) 19:39:01
>>633 手っ取り早いの熱烈歓迎。
zipって、ライブラリあんのかな?
ちょい、探してきます
なんでいちいち書き出すの? メモリに読み込んだんだったらそのまま使えよ。
637 :
631 :2006/10/29(日) 19:57:15
>>636 頭悪いんで、簡便してつかぁさい。
例えば、Xファイルを読み込む場合
D3DXLoadMeshFromX( "ファイル名.x", D3DXMESH_SYSTEMMEM,
pDevice, NULL, &pD3DXMtrlBuffer, NULL,
&dwNumMaterials, &pMesh ) ) )
漏れの場合上記のように"ファイル名"を指定して行ってるんだよ。
もちろん"ファイル名"を 2ch.x ではなく 2ch.pak で
行えれば理想的なんだが・・・、
やり方なんぞあれば、教えてほしぃ。
下衆なやりかたとしては、
パッキングファイルを指定→分解→保存→読み込み→保存したファイルを削除
→通常通り使う
のようになってしまう。
>>636 の言うように
パッキングファイルを指定→分解→読み込み→通常通り使う
ということができれば、理想的。
>>637 頭が悪いとかそういうレベルじゃねぇ。
リファレンス読むくらいは出来るだろ。
D3DXLoadMeshFromXInMemory
639 :
631 :2006/10/29(日) 20:07:43
>>637 レスありがd
>頭が悪いとかそういうレベルじゃねぇ。
>リファレンス読むくらいは出来るだろ。
OTL
D3DXLoadMeshFromXInMemory について今から全力で
調べまつ。
640 :
631 :2006/10/29(日) 20:17:51
639の
×
>>637 レスありがd
○
>>638 レスありがd
>>639 D3DXLoadMeshFromXInMemory関数について調べ、
いけそうだと確信しますた。
ちょい、がっつりコーディングします。
てか、バイナリで書いてデータがある場所のアドレス(データ先頭からのバイト数)覚えておけば(ファイルヘッダーに書いておく)いいだけだろ? まとめるのは時間かかるかもしれんけど、取り出すだけならfseekすればいいじゃん。 たまに客からそういう要望があるけどライブラリなんて使うまでもない。 普通にバイナリファイル使って読むだけだ。パッキングとかよくわからんけど。 何がしたいの?
>>630 DirectInputのマウスはあまり役に立たないよな。
相対値なんか拾っても使い道が無いし、何のためにあるんだろう。
643 :
631 :2006/10/30(月) 00:00:06
>>641 レスサンクス。
パッキングはなんとかいけそうでつ。
fseek関数なんていう便利な関数がそういえばあったっすね。
忘れてた・・・。
>何がしたいの?
ゲーム造りたいんだけど、ファイルをパッキングして
データ(bmpとか)を見られないようにしたいんです。
(もちろん、ちょっとプログラムかじっている人にはすぐばれるが・・・)
もう少しがんばってみます。
>>643 バイナリデータは書き込むときにエンディアンとアライメントに注意しろよ。
>>644 アドバイスがあるなら、もっと具体的に教えてやれよ。
CD-ROMとかならアライメントも気をつけようもんだけど
HDDだったらどうでもよくね?エンディアンもさ。
>>645 書き込みを構造体でまるまる書き込んで、
読み込みを?バイトで処理してたらハマルんじゃね?w
>>646 そんなアホなことは考えもつかなかった・・・_| ̄|○
あ、ひとつアライメント気をつける条件を思いついた。
パックするマシンと、データ使うマシンが違うとか・・・アリエネー(;´д`)
GetPrivateProfileString等の ファイル指定じゃなくメモリ指定版とか無いですか?
>>648 ざっと見た感じ無さげ。
自前でINIファイル解析したらいいんじゃね?
Registryはメモリー上にあるからそっち使えばおk
レジストリは弄られるの嫌う人もいるから、 フリーのゲーム程度では使わないほうがいいんでね? ただの設定とかコンフィグ程度なら構造体を適当に読み書きすればいいんだし。
652 :
デフォルトの名無しさん :2006/10/30(月) 21:19:30
LPDIRECT3DDEVICE型の変数をRelease()で開放すると戻り値が0にならないのは何故なのでしょうか。
馬鹿が解放しすぎないように見張り人が常駐してると予想します。
654 :
652 :2006/10/30(月) 23:23:17
ありがとうございます。 確かにXファイルの読み込みなどでカウントが増えているようです。 ということは0にするには全部正確に解放しないといけないということですよね。 これを強制的に0にする方法はないでしょうか。 DXのサンプル(Commonフォルダ内、DXUT.cpp/DXUTCleanup3DEnvironment関数)で if( pd3dDevice ) if( pd3dDevice-Release() > 0 ){ //(エラー処理) } } の記述がありまして、アプリケーションの終了毎に怒られます。 サンプルを変更させないようにしたいのですが、 DXUTSetDevice(NULL);でアドレスをNULLにしようとしても出来ません(関数の仕様でNULLだとエラー処理へ)。 一番は全て解放出来ればいいのですが・・。
それ単純にどこかでメモリの解放忘れてるだけだろ。
>>647 いや、そりゃ普通にある。
コンパイラオプションでもアライメント有と無と設定できるから
送り側と受け側(例えばバイナリファイルをはさんでの)が違うときも注意。
657 :
652 :2006/10/31(火) 00:38:03
>>655 戻り値が25672とかでて、全て解放するにもどこから手をつけたらいいか分からない件orz
解放できていないのは分かっているから一々エラー出さないようにしたいのですが・・・サンプルをコメントアウトするしかないのかな。
DirectInputでゲームコントローラの挙動を制御しているのですが なぜかPCによっては何もキーを入力していなくても左上キーが入っていることになってます。 原因としてありえそうなことって何ですか?
>>657 解放できていない場所を究明するのが一番だろう。
まぁDXUTILなんて見たこともないから知らんけど・・・。
テクスチャ作れば+1、頂点バッファ作れば+1されていくのは分かってるよね?
>>658 PCのパッドはちゃんとCAPSでニュートラル位置と
稼動範囲を調べて自分で範囲を調整しましょう。
(0,0)が中心じゃないパッドなんでいくらでもあります。
Setなんちゃらで範囲を指定する方法は使えないものもあるので、
デフォルトの稼動範囲を調べて、自分で調整するのが吉。
>>657 データの解放忘れでそんな数になる訳ないから、
どっかで毎フレーム参照カウンタ増やすような処理が入ってるんじゃないの?
GetDeviceとか使っててReleaseしてないとか。
>>658 マザーボードがBX
smartjoypadなどのコンシューマコントローラー変換機を装着してコントローラーつけてない
本当に左上に入ってる(アナログだとありがち)
DX8のヘルプにはReleaseの戻り値は 当てにするなって書いてあるよ
>>660 毎フレーム増えず、アプリケーションのさまざまな初期化部分で一気に増えていました。
>>662 ナンデストー(´・ω・`)
なら初期化んときにQueryInterfaceしまくってんだろ。 ちなみに俺はアプリケーション終了時のRelease()がメモリリーク以外で0にならなかったコトはないが。
665 :
デフォルトの名無しさん :2006/11/02(木) 00:25:35
質問です。 画像とTexture1とTexture2を用意する。 Texture1とTexture2はテクスチャで、レンダリングターゲットとしても使用可能。 1.Texture1をクリア 2.画像をTexture1に描画 3.Texture2をクリア ←――┐ 4.Texture1をTexture2に描画 | 5.Texture1をクリア | 6.Texture2をTexture1に描画 ―――┘ 以下3〜6を繰り返す(レンダリングターゲットの変更は省略) 2で描画する画像に半透明の部分がなければどれだけ繰り返しても形は変わりませんが、 アルファ値が255未満の部分があるとそこがだんだん薄くなって、終いには消えてしまいます。 何も描画していない部分は透明のままで、半透明の部分でも何らかの描画がされていれば上記を繰り返しても消えないようにしたいのですが SetRenderStateでどういう値を入れればいいのでしょうか。(もしくは不可能なのでしょうか)
>>665 何も目的で繰り返し描画してる(だけ?)のか分からないけど、
アルファブレンディングを切ればいいんじゃないかと思う。
全画面をただコピーしてるだけなら、クリアする必要はないなーとも思う。
× 何も ○ 何の
勘違いだったらスマソ。 ビルド→実行→デバッグ→ビルド→実行・・・というようなループで プログラムやってるんですが、 FPSが最初の方は60前後だったんだけど、 今、2時間くらい経ったら46〜50前後になってしまったんだけど、 これって、OS(WinXP)の問題? それとも単純になにかしら プログラムの組み方の問題?
671 :
670 :2006/11/02(木) 23:38:38
今、2chにカキコしてから もう一回実行したらFPSが60前後で安定した・・・。 これってしょぼいグラボ使っていると、 FPSの挙動が安定しない罠ですか?
>>671 ボトルネックがCPU側にあるのか、GPU側にあるのかで状況は変わる。
とりあえずどこでストールしてるか測定しれ。
だがフルスクリーンでやってんじゃないならそんなもんだ。
673 :
670 :2006/11/03(金) 09:48:10
>>672 レスありがとうっす。
デバッグモードでウィンドウで動かしてます。
そうか、FPSの挙動って安定しないのか・・・。
すげぇ焦ったよ。
>デバッグモードで おい。
675 :
670 :2006/11/03(金) 10:15:43
>>674 >おい。
な、なんかまずった?
OTL
正射影について教えてください。 「プログラミングの為の数学と算数」スレより 誘導されてきました。 マウス(2次元)座標をゲーム画面(3次元)の座標に 変換したいんだけれど、 やり方がわからないです。 [やりたいこと] 大航海時代Onlineのように、 「キャタクターの行先(目的地)」を「地面をマウスクリックする」ことにより 指定し、その後、キャラクターが動き出す。 ということをやりたいと考えています。
スクリーン座標(x,y,0)から(x,y,1)へのレイを ワールドビュープロジェクションの逆変換かまして地形との交点を求むる。
678 :
676 :2006/11/03(金) 18:44:06
>>677 レスありがとうございます。
677の発言内容を参考に、自分がやりたかったことが載っている
書籍を購入してきました。
これからプログラミングしてみます。
自分にあった本が見つかってよかったな。 頑張れよ。
680 :
676 :2006/11/04(土) 22:19:07
682 :
680 :2006/11/04(土) 23:38:36
>>681 orz
ある意味地雷かもしれないと気付きはじめている俺がいるw
プログラムのソースコード見てるんだけど、
(自分の実力のなさは棚上げするけど)
コメントが鬼のように少ない。
でも、ないより全然ましなので
すげぇありがたい書籍ではあります。
683 :
680 :2006/11/05(日) 00:54:24
>>683 D3DXLoadMeshFromXInMemory
これとか???
いきなり3DRPG作りたがる初心者が絶えないな。 最初は2Dで、テトリスとかブロック崩しにでもしたほうが良いんじゃない? つか>677で回答あるのに何で地形との交差判定に D3DXIntersectとか使うんだ?いらんだろ。
つーか、まあ、明らかにゲームが作れるほどのプログラムの下積みがあるとも思えないな。 じっくり入門書よんでDirectX初期化して画面にモデル表示してよろこんでればいいレベルだと思う。 つーか、常識的にいきなり作るなんてのがそもそも無理。 まずは、3Dの扱いに慣れろ。数学で遊べ。って感じか?
そのパターンから入ると途中で挫折して終了っていうの9割じゃない? 初心者が3Dでゲームって考えるなら、まずは既存のライブラリを使ってみろ、 って俺は言っておく。
ていうかいっそ仕事にしてしまえと言いたい。 挫折してる暇無いぞ。
得意不得意があるんだから自分にあった事をするべきだと思うよ。 プログラミングなんて優劣の個人差がありすぎるから、苦労に見合った分だけ楽しくなかったりする事もしばしばだし。 スレを見ている限り、はっきり言って向いてないよ。
690 :
680 :2006/11/06(月) 21:19:23
休日プログラムを組んでいました。 まだ、完成できていません。 たくさんのレスありがとうございます。 みなさんの意見を聞いて身の程を知りました。 個人的には3DRGPのような大それたものを 造るつもる技術もつもりもありません・・・。 みなさんからの厳しいつっこみを受け、 もう少し地に足のついたプログラム&勉強をしたいと思います。
>>686 ポインタすら理解せぬまま特攻して、どうにかなってゲーム作っている自分は常識はずれの存在なのだろうか?
>>691 ↑こういうことをいう奴に限って学習できた環境がいい罠。
今は資料は多いけど、教えてくれる奴が少ないからな。
掲示板でレスくれる奴もあきらかに昔よりすくない。
そうするとのびた的質問に解答をくれる奴が少なくて苦労すると思うぞ。
みんなも一緒に死のうよ
>691 別に常識はずれじゃないと思うが。 物事を順に考えられる思考力があれば言語の事前知識なんてなくても問題ない。 色んな言語強要されるPGなら普通。 VBしか分からんって新入でも、勘の良いやつはすぐにCぐらい使えるようになる。
自分に才能があるとは欠片ほども思わないが、プログラミングに向かない人は 本当にとことん向かなかったりするしな。 別段論理的思考に問題なくって、文章書くのも上手なのに、プログラミングはとことん下手って人もいる。 不思議なもんだ。
Cが分からないままC++に入って、難なく習得できた俺はちょっと勘が良いのか。 なんだか自信が持てた。ありがとう。 もちろんmallocなんて分かりません。
>>696 たぶん釣り人なんだとは思うんだが、
Javaから入った人では有り得そうな話。
698 :
デフォルトの名無しさん :2006/11/08(水) 19:14:32
はじめまして 質問なのですが、Xファイルが表示できるようになって 今度はアニメーションつきのXファイルを表示したいと思っています。 それで、3ds maxでXファイル作りたいんですが、キーフレームアニメーション をつけても出力してしまうとアニメーションがつきません・・・ うまく出力の仕方が分かる方いましたら、よろしくお願いします。
maxくれ。
>>700 >>698 は 3ds max でアニメ付きXファイルの作り方を聞いてるみたい。
激しくスレ違いなんだが、3ds max をくれたら調べなくもない。
俺も3dsmax欲しい。 流体力学研究所が変換作ってなかったっけ?
>>696 お、おまえなぁ・・・
deleteはしてるのか?
無料で使えるgMax
>704 そーいやgMaxってグローバル変数名っぽいな
レイ、gMax発動 レディ
707 :
デフォルトの名無しさん :2006/11/10(金) 19:28:39
>>700 返事ありがとうございます
やっぱり難しいですよね、アニメーション
でも、やっぱりMAXで出力したファイルにアニメーションがつかないので
それ以前の問題です・・・
いやDirectX付属のプラグインで普通につくだろ
709 :
デフォルトの名無しさん :2006/11/11(土) 10:22:57
maxなら普通にできないわけないようなきがするんだけどなー とりあえず取説よめば。
710 :
デフォルトの名無しさん :2006/11/11(土) 10:29:38
/⌒ヽ / ´_ゝ`) ちょっと通りまつよ〜 | / | /| | // | | U .U
取説よめない事情でもあるのか?(`・ω・´)
言いたいことがあるならはっきり言え
それ、コピー品じゃねーの?(`・ω・´)
われず死ね マジ死ね お前らみたいな屑でお荷物が沢山居るから業界が破綻しかねないんだよ
715 :
デフォルトの名無しさん :2006/11/13(月) 11:57:31
D3DXIntersectで当たった所のワールド座標x, y, zが欲しいんですけど、 どーしたらいいですか?
>>715 どのポリに当たったのか返ってくるんでロックしてそのポリの座標拾えばいい
DirectInput8で入力制御の実験をしているのですが キーコンフィグをしようと思ってモードレスダイアログを表示したところ GetDeviceStateが失敗するようになった(DIERR_NOTACQUIRED)ので メインウィンドウをアクティブにして見たら、GetDeviceStateが普通に動いてました DirectInput8はプロセスのメインウィンドウがアクティブじゃないとダメなんでしょうか?
協調レベルは?
>>718 NONEXCLUSIVEのFOREGROUNDでした
協調レベルと言われて、BACKGROUNDというものも有ったのを思い出して変えてみたら失敗しなくなりました
どうも視野狭窄してたようです
ありがとうございました
すいません、質問です。 DirectXのプログラミングを始めてみようと思うのですが、 調べてみたところC++、C#、Delphiこの三つの言語でDirectXの プログラムができるみたいなんですけど、どの言語が一番良いのでしょうか? この3つの言語でDirectXのプログラムを組む場合のデメリットとメリット というのがあれば教えていただきたいです。
それはC++、C#、Delphiの利点欠点を教えろというのであって、このスレの話題であるDirectXはほぼ関係ない。 詳しい回答は期待するな。
C++: 言語がマンドクセ C#: 環境がマンドクセ Delphi: メーカーがマンドクセ
>>698 MAXのXファイル関連のプラグインは4つほど知っているんだが、結局どれを使ったかすら書かないんだよな。
724 :
デフォルトの名無しさん :2006/11/14(火) 16:54:40
725 :
デフォルトの名無しさん :2006/11/14(火) 17:07:38
>>720 DirectX勉強したいって、言語も何も分からない状態だよね?
それじゃあ話にならんし、そもそもDirectX勉強してどうするの?
ゲーム?君には無理だからやめとけ。
726 :
デフォルトの名無しさん :2006/11/14(火) 17:14:26
Cの知識しかないんですが、C++でタイピングソフトを作る事になりました まず何をやったらいいか分からないのでアドバイス下さい
>>726 作らなければいいと思います。
Cの知識しかなくてC++で作りたいなら、まずやるのはC++を勉強する事だろ。
それすらもしないお前には無理。
そもそもスレ違い。
729 :
デフォルトの名無しさん :2006/11/14(火) 17:24:36
すいません、C++の本を買って勉強します それから、ミカタイプ並のタイピングソフトはCだけで作れますか?
>>729 ミカタイプがどんなのか知らんけど、Cの知識があるっていうんだから
作れるかどうかは当然分かるはずだろ。
知識といっても、授業で1年半やった程度です 卒業課題でタイピングソフトを作る事にしたんですが、どうやらスレ違いですね すみませんでした
タイピングソフトなんてDXつかわんでもできるわい
>>731 その学校何なんだ?
Cを一年半もやってタイピングソフト?
いったい何を学んだんだ…
>>733 いや、課題は俺が勝手に決めただけです
オザワケンみたいなソフトを作りたいと思いまして
>>734 まずはWin32APIに触れるところから。
>>731 ゲームっぽいのが作りたいならスプライトから
勉強するといいぉ
一年半もCをやって
>>720 の質問をしてるレベルなら
卒業までにタイピングゲーム作るのさえ無謀。
完成出来そうなものに課題変えたほうがいいよ。
煽りじゃなくてまじで。
中学生の頃 誰からも学ばず 1年たたずにテトリス作れた 本も読まずにやってた。 1行ずつ実行して試してた 配列とか後で知った
俺は誰からも学ばずにC++ win32でゲームを造った。 分割コンパイルとか後で知った。
741 :
デフォルトの名無しさん :2006/11/15(水) 06:30:34
DirectInputのフォースフィードバックについて質問です。 パッドタイプのコントローラをただ振動させたいのですが、強さを変えても反映されません。 void refreshFF(){ DICONSTANTFORCE cf; cf.lMagnitude = 変更した値; DIEFFECT eff; ZeroMemory( &eff, sizeof(eff) ); eff.dwSize = sizeof(DIEFFECT); eff.dwFlags = DIEFF_CARTESIAN | DIEFF_OBJECTOFFSETS; eff.cAxes = g_dwNumForceFeedbackAxis; eff.rglDirection = rglDirection; eff.lpEnvelope = 0; eff.cbTypeSpecificParams = sizeof(DICONSTANTFORCE); eff.lpvTypeSpecificParams = &cf; eff.dwStartDelay = 0; g_pEffect->SetParameters( &eff, DIEP_DIRECTION | DIEP_TYPESPECIFICPARAMS | DIEP_START ); } としてプログラム中で変更させているのですが、初期値で振動するだけで反映されません。 ご存知の方教えていただけると助かります。
>>741 FFBはコントローラによって挙動が違うよ
>>740 おれもそんな組み方してた時代があったな・・・。
オレも何も知らない所から、基本的な3Dの本(PC98でワイヤフレームとフラットシェーディング)を見た後に、独自でテクスチャマッピングを編み出したが 素人が良くやる歯抜け状態に…U・V座標から直にスクリーンのX・Y座標に描画していたのだ 仕方ないので描画ドットを適当に大きくしたりして力技でしのいだ 後にX・Y座標からU・V座標を得るという逆の発想でやるという事を知り目から鱗だった
>>740 外部のライブラリを利用してだが、
6年前に製作ゲームで
cpp : 4000行 / h : 3000行 2ファイルのみで構成されたコードがある。
今の俺には書けない。
やり始めた頃はcpp4000行程度の1ファイルでシューティングゲーム作ったな。 もちろん、コードは今見るとめちゃくちゃだしクラスも使ってなかった。 やっぱ皆も始めた頃はそんな感じ?
>>745 惚れた
俺はCPPひとつに.hが数十とかだった。
クラスの実装も定義も別のファイルなんだけど、全部.hでw
自分も最初に作ったシューティングゲームはcpp1つ約14000行の大作だった もちろん、746の云うとおりクラスなんぞ全くつかっていないし、 サウンドのストリーミング再生なんてこともしらなかったから、ファイルまるごとメモリに読み込ませてたなw ソースは意外と今でも読めるが、重複している内容がかなり多い
cppを増やすとチームメンバーにソースファイルををプロジェクトに追加してもらわねばならないが しかしhならパスさえ通しておけばいい。という理由でダミーのcppと無数のヘッダで開発。
みんな何千何万行ってスゲーなあ(;´д`) 俺なんか最初に作ったプログラムは、40バイトくらいの機械語だぜ。 アセンブラなんかないからハンドアセンブル・・・知らんか若いやつには(´Д`lli)ゞ
>>749 最近のマシンは高速だから、分割コンパイルなんかしなくてもいいんだな・・(;´д`)
いや速度だけの問題でもないっしょ
SDKチュートリアルを1から始めて、Xファイルの表示まで出来るようになりました。 表示したモデルを動かせるようにもなりました。 …が、次はどこに向かうのがいいんでしょう アニメ付きXファイル再生をしようかと思いましたが、なんのことやら全くで。 「何がわからないのかわからない」状態です。 それとも、画面上に地面を作って、その上に立たせるのが手頃でしょうか。 (地面のXファイルを作って、当たり判定を取る??)
作りたいものを作ればいいよ 何のために Direct3D を学ぼうとしたのか? を考えてみるべし
さっきからI君がレンダラーのことを レンダリンガー と言ってます 笑いをこらえながら仕事するのも限界に達したので書き込みました I君にシステムエンジン作らせて大丈夫なんでしょうか
>>755 スレ違いの日記を書き込むヤツが作るよりはマシだと思う。
757 :
デフォルトの名無しさん :2006/11/17(金) 02:28:48
×宜しければ一度で良いので拝見して頂きたいです ○宜しければ一度ご覧下さい。 相手に対して「拝見」はおかしいだろ、とマジレス
ゲーム作りたいと思ってプログラムはじめたのはいいが プログラムの勉強ばっかりやってて ゲームつくりの勉強(構想)を怠ってて 気がついたら何が作りたいのかわからなくなってた
>>759 YOU!本職になっちまいなYO!
仕事だけは腐るほどあるから、悩んでる暇ないぞ!
>>760 759じゃないけどゲームプログラマって結構働き口あるもの?
エロゲーでもなんでもいいのでゲーム関係やりたいんだけど、
採用されやすいところとかあるのかな。
メーカーとかよく知らないし、どうすりゃいいかさっぱり。
762 :
デフォルトの名無しさん :2006/11/17(金) 16:51:55
マ板でやれ
給料むちゃくちゃ安い上に、将来性0だけどな。
ヒューレットもしくはパッカード並の才能があるとしてもエロゲメーカーに入った時点で終了だからね。
766 :
759 :2006/11/17(金) 22:22:41
>>760 一応、本職です><。
趣味で個人作成したいけど
思いつかないんだ。
>>761 大手は、
とりあえず入れるところが多い。
試用して駄目だったら捨てる感じ
中小でも、人手が足りないところ多い。
>>764 実力があれば
金も将来性も
院上がりの研究屋どもには、あまりのしょっぱい仕事っぷりに あきれられたりもするが、それでもがんばりゃ何とか年一千万前後は行くし、 このご時世そう捨てた商売でもないよ。 将来性については聞くな!
そもそもプログラマの将来なんて考えるなよ ゲームプログラマより将来が無いプログラマなんてたくさんあるぞ
大学生がバイトの延長で入った外食なんて酷いな。
>>768 下を見てどうすんだ、下をw
何の慰めにもならないだろ
親に養ってもらいつつゲーム作ってる人は俺だけじゃない
ゲーム(エロゲ、小さな企業除く)より将来性のあるプログラムな仕事って何よ?
でも会社に入るとさ、「std::vectorは断片化するから使用禁止」とか言われる世界なんだろ
そんなん自分でメモリプールでもつくっときゃいーじゃん。 最近はゲームのPGは就職するための最低レベルが上がってるせいで どこも人手不足って話はよくきけけどねぇ。 デザイナはデッサンさえ出来れば2Dだろうが3Dだろうが割とすぐ習得できるけど、 PGは2Dと3Dで越えられない壁があるからなぁ。
2Dしかできない状態で会社入るとどうやっても3Dができるようにはならないな。
んなことはない
>>777 人の作ってくれたライブラリ使って座標弄るので精一杯な奴しかいないけどな。
極稀に死ぬ思いで習得する奴もいるけどやっぱりそれなりに苦労はするな。
仕事しながらってのは辛い。
大抵の奴はできないまま。
でかい会社ならスペシャリスト思考って感じで、 3D出来なくても他に得意な分野があれば問題なかったりするんだけどね。 まぁ3Dできないままな事に変わりはないが。
>>775 どれくらいできれば就職できるんでしょうか?
抽象的過ぎる質問ですが
>>780 最低ラインを聞いてるならC言語でテトリスでもつくってくりゃタイミング次第でどこでも入れるぜ。
実際、そういう場面ってあるしな。
逆にタイミング悪いと、どんなにできても駄目なときは駄目。
例えば、どこぞのベテランとテトリスが作れるぐらいの腕の学生を比べても そのとき抱えてる案件が携帯ゲームの開発だったりしたら どっちがどの程度だろうとあんまり違いってないじゃん。 で、ノルマとして、3ヶ月で10個ぐらい作るって話になったら 単純にプログラマの数だけそろえたいじゃん。そんな感じ。 大作でも○○画面?個なんて話になると、もうベテランだろうとなんだろうと違いなんてないね。
>>780 まじめにPGってんならうちの会社だと、
1.ツール作れる
そのまんまの意味
2.3Dできる
既存のライブラリ(例EL・DX・Lunaあたり)でいいから
それつかってゲーム作る(自分でDirectX叩いたほうが評価はいいけど)
3.ネットワークできる
Peer2PeerとかClient-Server型のいわゆるネトゲ的なヤツ
4.携帯電話のアプリ組める
そのままiAppli、Brewとか
どれか1つでも出来ればとってると思う。
肝心なのはちゃんと完成してるものである事かねぇ。
5. 2DSTGできる 既存のライブラリ(例EL・DX・Luna・BulletMLあたり)でいいから それつかってゲーム作る(自分でDirectX叩いたほうが評価はいいけど) は?
>>784 STGって時点で起動すらしてない・・・ところもあるw
技術を判断しにくいだろ? 3D組んでもさ、3D特有の嫌らしさってでないしさ。 別にSTGとしてたのしいもん作ってもらってもいいけど それはそれ、これはこれ、じゃん。 仕事で求められるのってちょっと違うし。 そうとういいもん作っても、見る奴が変な奴だと、 いきなり「こいつはSTGをちっともわかってない!」とか技術判定ほったらかしで怒りだして 気分悪くしてそのまま不採用にしちゃうSTGキチガイもいるからかなり危険。 なんかね。妙なスイッチ入るんだよw普段はおとなしいんだけど・・・
キチガイが人事担当してる会社に採用されるくらいなら 不採用になったほうがまだマシだな。
>>787 いや、ちょい昔の(PS世代の俺よりチョイ上ぐらい)PGのSTGのこだわり方って半端じゃないよ。
普段は話が通じる人でも、STGになると豹変するからやめた方がいい。
どうせSTG作っていきたいって奴だって変なこだわりがあるからSTGでもっていきたいんだろ?
無駄に敷居が高いから止めたほうが無難だぞ。
最初は人事担当と面接してたのに プログラマ志望ということで一番上のプログラマがやってきた 「あれさぁ〜〜ェッタ、ボク的にェッタは受け付けなェッタいねぇ〜ェッタ、ェッタ、わかるよね?言ってる意味ェッタ」 なんだよその ェッタ って 即帰らせてもらった
2DでSTG作るくらいなら、表示を全部ポリゴンで Gダラみたいにしたほうがはるかに評価が高い現実。 まぁゲーム自体は結局2DSTGだけど、ポリゴンを使えるってだけで評価あがるもんだよ。 STG自体が作るのが簡単なジャンルだし作ってる会社もほとんどないから 就職作品にするならかなり気合入ってないと厳しいかもね。 ただアホみたいに弾幕飛ばすだけのゲームなんて即効ALT+F4だな。
DirectX使わずに3Dエンジン自作してる俺は負け組み。
>>791 それはそれで評価される罠。
まぁそれでゲーム作るのはキツイかもしれんが・・・。
>>791 スキニングができるかどうかが分かれ目か?
簡単な3Dエンジンなら中卒でも三角関数乱用すれば直ぐにできるが、流石にスキンメッシュは無理だろ。
>>795 俺が就職するときはもってったぞ。>スキンメッシュ
同時にバンプも掛けてた。
デモ作ってもってったら採用された。
ちなみにゲー専卒。
2年間の有り余る時間をすべてゲームの勉強に注いだ。
スキンメッシュなんてSDKのサンプルにあるだろ。
>>797 最初から用意されてるなんとかHierarchyとか使わないで読み込むんじゃねーの?
全部自力で読み込んで、自力で描画。IKとかの話じゃないの…?
そうじゃなかったら、その会社普通に誰でも入れそうだな。
全部ソフトウエアレンダリングでスキンじゃないの_
面接ネタを一つ。 ゲームを終了させたら自動的にアンインストールが始まる作品があった。 そのアンインストールというのが無条件にフォルダ内を消しまくるやつだった。 (d:\test\01072にインストールしたのにtestごと消された。) 見事他の人の作品まで消してくれた。 不採用。
>>801 なんか、そういうエロゲあったな。
ProgramFilesの中身全部消された
Dドライブが消えるのもあったな
みずいろのことかー
インストーラーやアンインストーラーを自分で書く神経が信じがたいわけだが、 そういう手合いはMSDN読んだりとかしないのだろうか???
インストーラーにも遊びを入れたかったんだよ きっと
>>804 もう、インストーラって言う、レベルじゃねーぞ!!
,, ―- 、_
/ '' - ,,
/ '' - ,,
/ ヽ
i / /ヽ !
,i ./ / ''―、 !
i ,、 n て'' ノノ ヾ !
i ノノノ ノ ノ ''´ ! /
j ' ´ ノ ( ヽ |
>-,, / ,,=━━・!' ,ノ━== ! ノ
!・ ヽ | ’ニ( ●)iii、 :::::i( ●)ii=i )
\(てi iヽ ^' ~ -' /}
`i_ 、 \ i_ l_j
`┐ i /(,,, ,n 〉 /\\
 ̄ ̄へ ! ' T'' l | \
| ! i ン=ェェi) i ソ )
| i´\! ,, -ェ`、_ン ノノ 〈
| | \\,, `―''´// |
| つ !、_''''''''''''' / 7
インストーラッティ=イウレ=ベルジャネーゾ(革命家)
[1965~2006]
今年で死んだのか
アンインストーラーにデリートされますた。
ええ。あの行列に巻き込まれて逝きました。
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::。::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::。::::::...... ... --─- :::::::::::::::::::: ..::::: . ..:::::::: :::::::::::::::::...... ....:::::::゜::::::::::.. (___ )(___ ) ::::。::::::::::::::::: ゜.:::::::::::: :. .:::::。:::........ . .::::::::::::::::: _ i/ = =ヽi :::::::::::::。::::::::::: . . . ..:::: :::: :::::::::.....:☆彡:::: //[|| 」 ||] ::::::::::゜:::::::::: ...:: ::::: :::::::::::::::::: . . . ..: :::: / ヘ | | ____,ヽ | | :::::::::::.... .... .. .:::::::::::::: ::::::...゜ . .::::::::: /ヽ ノ ヽ__/ ....... . .::::::::::::........ ..:::: :.... .... .. . く / 三三三∠⌒>:.... .... .. .:.... .... .. :.... .... ..:.... .... ..... .... .. .:.... .... .. ..... .... .. ..... ............. .. . ........ ...... :.... . ∧∧ ∧∧ ∧∧ ∧∧ .... .... .. .:.... .... ..... .... .. . ... ..:( )ゝ ( )ゝ( )ゝ( )ゝ無茶しやがって… .......... .... i⌒ / i⌒ / i⌒ / i⌒ / .. ..... ................... .. . ... .. 三 | 三 | 三 | 三 | ... ............. ........... . ..... ... ∪ ∪ ∪ ∪ ∪ ∪ ∪ ∪ ............. ............. .. ........ ... 三三 三三 三三 三三 三三 三三 三三 三三
ワラタ
DirectSoundを使いたいと思い、
ttp://www.nk.rim.or.jp/~m_iida/programming/directX/BCB_DX9.html を見てbuilderとのリンク(?)までは上手くいったのですが、
その後、どうしてよいのかわかりません。
初期化やらなんやらが必要なことはわかったのですが、
初期化もどうやっていのかわからずという状態です。
決まった時間に決まった音声を鳴らせればそれでいいのですが、
そのために必要な情報が載っている詳しいサイトか本などを紹介していただけないでしょうか?
プログラム暦はC言語を数ヶ月と、Visual C++で作ったDirectXのサンプルプログラムをいじったことがある程度です。
今回はスクロールバー等を多用するのでC++builderとDirectSoundでプログラムを作りたいと思っています。
>>814 二等兵よ、まず開発するDirectXのバージョンは何だ?目的地はDirectX8か?
二等兵よ、対応するSDKとヘルプは持っているか
行軍の必須装備だ なければ Microsoft DirectX 開発者ページにイって確保してこい
DirectSoundの仕様はDirectX8のヘルプに記載されている
ヘルプで仕様を一通り眺めたら、偵察機グーグルで飛べ
http://www.google.co.jp/ 作戦コードは DirectSound だ。間違って エロ画像 と入力するんじゃないぞ
先達部隊のヴェテランどもが DirectSound との交戦記録を持っている
驚くことに講座まで開いているぞ
合流してチュートリアルで学べ、そして戦え、二等兵よ!
メディーック!
サカタハルミジャン
>>806 全部自前で書きたくなるのが本物のプログラマ
そういう奴は仕事では使えない奴だったりする。
いやただのバカ 本物のプログラマだったらむしろできるだけ書くことをサボろうとする
サボろうと思えば100%サボれる時代になに言ってんの
生きるのをサボりたい
DirectXの本についていたサンプルをコンパイルすると以下のようなエラーがでます。 error C2039: 'CreateDevice' : 'IDirect3D9' のメンバではありません。 g:\program files\microsoft directx sdk (october 2006)\include\d3d9.h(254) : 'IDirect3D9' の宣言を確認してください。 オブジェクト宣言してアロー演算子使っているのですが、間違っていないと思うのですが、わかりません。 よろしくお願いします。
そのDirectX本はDirectX9 october2006に対応しているの?
826 :
824 :2006/11/23(木) 08:04:43
827 :
824 :2006/11/23(木) 08:05:49
追記 コンパイラはVS2005proです
そもそもソレってincludeパス通ってないんじゃないの?
VS2005のアカデミックとかEEとかならわかるが、 Proなんて相当高いもん使うくらいなのにそんな質問が出てくるのか。
どうせ割ってんだろ
DirectXを割ってるらしいよ
学生でSpoke買ったやつなら、2005proをタダでゲットできた。
833 :
824 :2006/11/23(木) 09:52:50
>>826 パスは通っています
それから、割れではありません
そもそもさ、何でエラーが出てる行のソースを晒さないのさ。 Pro なんていいもの使ってるなら、それくらいの脳は持ってくれ。
その本でつかってるバージョンと、インストールしてあるバージョンが違うとしかおもえぬ
DirextXを利用したスクリーンセーバーを作りたいのですが、 scrnsave.lib を使ったイベントで作画を呼ぶタイプの解説は たくさん見つかるのですが、自分でループを回すような構造 (DXUTのような構造) のスクリーンセーバーってどうやって 作ればよいか説明されているサイトってどこかにありませんか?
関係ないけど、省電力しない3Dスクリーンセーバーなんて使う人いるの?
スクリーンセーバーは逃げだと思うんだ。 「デモ」はと映像や音楽と組み合わせたプログラムの技巧がものをいうけど、 「スクリーンセーバー」はセンス悪くてごめんなさい放っておいてよって感じ。
>836 ScreenSaverProcでWM_TIMERやWM_USERなりを拾ってループを回せばよくない? >838 チラ裏にでも書いてろ
>839 WM_TIMERで作ってみたんだけど動きがスムーズじゃないんだよね。 DXUTだとスムーズなのに。
>>837 つ デュープリズムのスクリーンセーバー
>>837 用途によってはアリ。
追加ボードで パワーマネージ非サポートの省電力の行ったり来たりを許さないのがある。
843 :
デフォルトの名無しさん :2006/11/26(日) 15:51:34
質問です。 描画時にスケール変換して描画しているメッシュとのレイ判定ってどのように行えば良いのでしょうか? 現在、D3DXIntersectを使用しています。 分かる方お願いします。
これまでどうやってたの? 描画時に回転と平行移動はかかってなかったの?
>>843 つーかお前ずっと同じような質問してるだろ。
>>677 に書いてあることは理解できたのか?
初心者でも三日もかければ理解出来る。理屈が分からずにD3DX使うより結局早道だぞ。
レイとポリゴンの交差判定なんてググればいっぱい出てくるんだし。
846 :
843 :2006/11/28(火) 12:59:05
>>844 返答ありがとうございます。
書き込み遅くなってすいません。
回転と平行移動は、レイ発射点の回転・平行移動により再現しています。
意味不明
こ れ は ひ ど い
イ ン タ ー ネ ッ コ で す ね
850 :
デフォルトの名無しさん :2006/11/29(水) 17:57:12
d3dx9_30.dllをスタティックリンクできるのって SDKのバージョンどれまでだっけ?
D3DX9をスタティックリンクなら、October 2004。
dec
くだすれでも質問したのですが、3日経っても返信がないのでこちらにも書きませてもらいます。 スプライトの中心に2D絵を描画したいのですが どうすればよいでしょうか? よろしくお願いします。
>>855 質問するときには何がわからないのか書かないと、まともな返事は期待できない。
''';;';';;'';;;,., ''';;';'';';''';;'';;;,., ;;''';;';'';';';;;'';;'';;; ;;'';';';;'';;';'';';';;;'';;'';;; vymyvwymyvymyvy、 ヽ(゚д゚)vヽ(゚д゚)yヽ(゚д゚)v(゚д゚)っ ⊂( ゚д゚ ) と( ゚д゚ ) 〃ミ ( ゚д゚ )っ ( ゚д゚ )つ ゝηミ ( ゚д゚ )っ ミ) ⊂( ゚д゚ ) .(彡η r しu(彡η r⊂( ゚д゚ ) .ゝ.η.ミ) i_ノ┘ . i_ノ┘ ヽ ηミ)しu (⌒) .| 三`J
1. 「スプライトエディタ」をgoogleで検索するといろいろ出ます 2. スプライトエディタを起動 3. 中心に何か絵を描く。 4. 出来上がり。
859 :
デフォルトの名無しさん :2006/11/29(水) 21:28:26
>>856 そうですね、失礼しました
DirectXを使ってサイズが不定なテクスチャの中央を
描画可能領域の中央に合わせて表示したいのですが、どのようなコードを書けばいいのでしょうか?
現在はこうしていて、どうしてもテクスチャの左上が描画可能領域の中央に来てしまいズレてしまいます。
position.x=d3dpp.BackBufferWidth/2;
position.y=d3dpp.BackBufferHeight/2;
Sprite.Draw(Texture,NULL,NULL,&position,D3DCOLOR_ARGB(0,0,0,0));
よろしくお願いします。
position.x=(d3dpp.BackBufferWidth - SpriteWidth)/2; position.y=(d3dpp.BackBufferHeight - SpriteHeight)/2;
>>860 プログラムじゃなくて算数からやり直した方がいいよ。
>>861 テクスチャの幅=スプライトの幅ということですか?
あとSpriteWidthでは、変数名しかわからないのでもう少し情報をください。
よろしくお願いします。
>>863 画用紙にクレヨンで四角を書け。それが描画可能領域だ。
その四角の真ん中に、少し小さめの四角を書け。それがスプライトのテクスチャだ。
スプライトの左上の点がどこになるか、絵を描いて考えろ。
これはさすがに釣りだろ。
もう、こういうサンプルもみたこと無いようなのはスルーにしよう。
>>864 >その四角の真ん中に、少し小さめの四角を書け。
描画可能領域の真ん中に少し小さめの四角の左上が
>>866 >>1 >>867 position.x=d3dpp.BackBufferWidth/2;
position.y=d3dpp.BackBufferHeight/2;
ならそうなるな、スプライトの幅も計算に入れろ
と思ったけど、スプライトの幅のサイズが先に分かってる場合の方法しか俺は知らない
サンプル見て回ったけど、どこも定数入れてるし、スプライトのサイズが分からない場合の方法はないんじゃないか?
俺DX暦3年だからまず間違いない
869 :
デフォルトの名無しさん :2006/11/30(木) 13:20:39
質問です。 スクリーンセーバーから回復すると、以降 IDirect3DDevice9::Presentが成功しません。解決方法を教えて下さい。 if(SUCCEEDED(m_pd3dDevice->BeginScene())){ //描画・・・ m_pd3dDevice->EndScene(); } m_pd3dDevice->Present(NULL, NULL, NULL, NULL); ←これ
質問です。最近DXライブラリを使ってゲームを作りだしたんでけど
http://lacc.biz/cpp/cpp05.html このソースを使ってコンパイルして実行すると一回目は正常?なんですけど
2回目実行するとハングアップしてしまいます。(電源を切るしかありません)
他にもDirectXを使ってるゲームを二回目起動すると同様の現象が起きます。
どなたか教えていただけませんでしょうか?
Windows XP です。
>>871 まずプログラム側の問題(大多数の環境で再現するトラブル)と
環境側の問題(特定の環境で再現するトラブル)のどちらか確認せな
他のDirectXゲームでも同じ症状が起きるところを見ると環境側の問題っぽいが
環境側の問題ならビデオドライバをアップデートするとか
メーカーに問い合わせるとか、パーツやマシンを替えることになる
873 :
871 :2006/11/30(木) 14:25:08
>>872 メーカーに聞いてみます。ありがとうこざいました。
普通は違うバージョンのドライバをいろいろ試すところだが・・・・・・・・ ど こ の メ ー カ ー に 問 い 合 わ せ る つ も り な ん だ ?
875 :
871 :2006/11/30(木) 14:50:06
NECです。
リカバリしてくださいで終わりだな。
こういう自分で調べないヤツの対応せなならんのだからサポセンも大変だな。 ドライバどうこう言われてもドライバの意味も分からないんじゃないか? そもそもWindowsXPですとか言われても関係ないし。 せめてビデオカード何使ってるかくらいは明記してもらいたいものだが。
ちゃんと問い合わせの前に、調べる手段として2chを使ってるじゃないか それだけでも十分偉いよ
DirectDrawで全画面のゲームの上に、定規アプリとかを重ねたいのですが そもそも可能でしょうか(´・ω・`)色々調べてみたけど万策尽きた
D3DXCreateTextureFromFireExの第3,4引数(UINT Width, UINT Height) にD3DX_DEFAULT_NONPOW2を指定すると読み込んだテクスチャが2の乗数にならんと風の噂で聞いたんだが SDK9.0bでやっても効果なかった ググってもほとんど引っ掛からなかったんだけど誰か詳しくわかる人ますか?
ビデオカードが 2^n ではないテクスチャをサポートしているか確認はしたんだろうな?
DirectXで外部のbmpファイルなどを読み込んで表示する際に TextureとSprite、Surfaceなどが出てきますが、これらの違いがよく理解できません。 これらの相違点について分かるサイトがあったら教えてください。 よろしくお願いします。
普通に作ったウィンドウの背景色を半透明にしたくて、 lpD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOLOR_ARGB(128,128,0,0),1.0f,0); とかしてみたのですが、全然透けてくれません。 lpD3DXSprite->Begin(D3DXSPRITE_ALPHABLEND); で描いたtextureなんかは半透明になるのですが……。 もしかして背景は透けられないものなのでしょうか。
884 :
882 :2006/12/01(金) 05:19:49
>>882 ですが自己解決しそうなので一時取り下げします
相違点というか、意味がハッキリわかって関連性も書けそうになったら追記します
885 :
882 :2006/12/01(金) 05:30:51
あんまハッキリとは分からないですね… スプライトが画像のみを扱い2Dである テクスチャーは画像を3D(サーフェイス)の一部として扱う その為テクスチャーを使っての2Dという方法で画像を表示する事もできる textureを扱う為にsurfaceを用いなければならない って感じかなぁ まだ分からないけどDirectXを2Dのみで扱いたいならスプライトって事かな
>>881 すまん確認してなかったorz
結局ハードの問題になるなら現実的なコードじゃないな…
スプライトなんて虚構。 やっぱ癌だな。初心者が変な思い込みをして騒ぐ。 うざいことこの上ない。
>>887 スプライトがウザいのか?
スプライトに関する質問者がウザいのか?
DirectXに限った解釈をすると Surface 画像データそのもの Texture Surfaceに各種情報を持たせたもの つまりTextureの画像データの部分がSurface Sprite Textureにスプライト操作に必要な情報を持たせたもの
>>890 なるほどです…
Surface < Texture < Sprite といった感じですね
Easy Link Libraryを使っていた時にスプライト=画像みたいな解釈してたので凄いこんがらがりました
今凄いすっきりしました、ありがとうござざいます
892 :
デフォルトの名無しさん :2006/12/01(金) 11:04:04
ウィンドウのサイズを変更してもメッシュの縦横比を一定に保つには どこら辺のパラメータをいじってあげれば良いですか? メッシュの縦横比を常にウィンドウが正方形の時の形に保ちたいんです。
893 :
871 :2006/12/01(金) 11:19:28
みなさんありがとうこざいました。 windows/system32/dxなんとか.exeを起動したら前回問題があったとかでて いろいろテストとかしたら問題がおこらなくなりました。 ありがとうこざいました。
>>892 たとえばD3DXMatrixPerspectiveFovLHとかのアスペクト比
>>879 荒業でいいならDLLInjectionとかでDirectDraw乗っ取って
その上に描画とか。
>>895 なるほど。
まだ何とも言えませんが、鋭意調べてみます!(`・ω・´)
あまりwindowsシステムに関わったぷ〜を組んだことが無いので〜
うわー…ホント訳わからん >891での解釈も少し違うような気がするなぁ ((Surface) Texture) 画像を描画できる最小の単位 Spriteを使用すると描画の際に色んな効果を加えられる…のかな 駄目だな俺、Dx才能ねぇや
何度も連投すみません 俺の買った DART社のサンプルで学ぶDirectX9プログラミングテクニックというのが分かりづらいのかもしれないです・・・
再度連投スマソ DirectX SDK Document 日本語が上手くインストールできないもんだから 日本語ドキュメント諦めてたけど インストールせずに解凍して読んでみたが、日本語ドキュメント無いと絶対DirectX使えるはずないな… Managed 日本語の ・DirectX 9.0 for Managed Code の紹介 └・Direct3D グラフィックス └・Direct3D の基礎知識 └・Direct3Dサーフェイス └サーフェイス フォーマット を今読んでるけど、分かりやすいわ… スレ汚ししまくって失礼しました…
スプライトっていうと昔のハードについてた描画機能だしな・・・ DirectDrawでカラーキー抜きするようなやつを思い浮かべる人が多いのだろうけど、 DirectX8以降はスプライトなんてものは一切無くて、 ポリゴンにテクスチャを張りつけて描画しているだけの事。
Direct3Dで動的に作成した絵を、普通のウィンドウの中にアイコンのように貼り付けて表示したり、 ウィンドウの背景絵のように貼り付けたりすることはできますか? どういったキーワードでググればいいでしょうか・・・
>>204 のlunaのやつがどうなったのか知りたい
きょうびがハード的な実装の話じゃなくって、 ソフトウエア的な運用上のパラダイムになってるからな、スプライトって。 年寄りがぎゃーすか騒ぎ出したら、口ん中にマウスカーソルかNintendoDSでも突っ込んで 黙らせてしまえ。
>>903 wiiなら突っ込まれてもいい。
…ごめん、そんな大きいの、入らないよ。
らめぇ
segment->SetStartPoint(mtStart) 後に performance->PlaySegmentEx(segment,NULL,NULL,0,0,&state,NULL,NULL)で再生しているのですが、 必ずセグメントの初めから再生されてしまいます。 初期化辺りで既にミスっているのでしょうか。 SDKはAugust2006を使用しています。よろしくお願いします。
>>906 すっかり覚えてないが DMUS_SEGF_VALID_START_*** が必要じゃなかったかな?
>>907 レスありがとうございます。
DMUS_SEGF_ALIGN | DMUS_SEGF_VALID_START_* を指定してみましたが残念ながら結果は同じでした。
この際、それっぽいフラグは全部試してみたのですがどれもうまくいきませんでした。
書き忘れていましたが、WAVファイルをセグメントに読み込んでいます。
調べていると、MIDIなら成功するらしいのですがWAVだとダメだったという方が結構いるようで・・
頑張ってもう少し調べてみます。
>>908 WAVEはSetLengthしないとダメでは?
>>909 SetStartPointの前にという事ですよね。
MSDNの方に「セグメントの長さを現在のオフセットより少なくとも 1 チックだけ大きい値に設定する必要がある」
とあるのですが、オフセットというのはそのセグメントの演奏開始からの現在までの時間といった解釈でよろしいのでしょうか。
合っていると仮定して、オフセット+1の値を引数にSetLengthを呼び出してみたのですが、うまくいきませんでした。
引数を色々な値に変えて試してみましたがやはりダメでした。
SetLengthの引数が正しい値ではないという事でしょうか。
HRESULT SetWAVLength(IDirectMusicSegment8* pSeg, DWORD tempo, // 1 分あたりの拍数 float wavLength) // 秒数 { if (pSeg) { MUSIC_TIME mt; mt = (wavLength * DMUS_PPQ * tempo) / 60; return pSeg->SetLength(mt); } else return E_POINTER; }
waveだったらDirectShow使ったほうが楽じゃね?
ネットを巡回し影付けの事を調べていたところ D3DXMatrixShadow() D3DXPlaneFromPointNormal() のような関数を使えば影を付けられるという事が分かったのですが、 これらの関数が行っている計算式はかかれていませんでした。 計算式を教えて頂きたいのと、このような関数だけに限らず、 Microsoftが用意している関数が行っている計算などを知るには何を調べればいいのでしょうか?
幾何代数の本
g_lpD3DDevice->SetFVF(FVF_TLVERTEX);
Direct3D9: (ERROR) :Vertex shader declaration is not set DXから親切なエラーメッセージが出てるんだからちゃんと読もうぜ。
実際問題、DirectXの問題のほとんどは、デバッグレベル最大にして メッセージ読めばあらかた解決しちゃうんだよね。 かなり微妙な問題についても突っ込んでくれるし、MSDNに書いてない様なことにも メッセージを出してくれる。 そんな仕様ならドキュメントしとけや!と切れそうになることもしばしばなくらい。 そんなわけでデバッグ版DLL使用に切り替えて、デバッグレベル上げれ。 設定はコンパネから。 これそろそろテンプレに入れてもよくなくね?
設定によってはその場でBreakできっから便利だよなー
multianimationの注目しているtiny君を自分で動かしたいんだけど、参考になるサイトはないですか?
最近、意味の分からない日本語を話す質問者ばかりだ
SDKのサンプルそのままでいいだろ。 どうでもいいがTinyって女じゃないか?
USBカメラからの動画に3Dオブジェクトを重ねたいのですがうまくいきません。 Bmpを背景に3Dオブジェクトを重ねて表示するにはどうすればよいのでしょうか? tex = Texture.FromBitmap(device, bmpimage, Usage.None, Pool.Managed); でテクスチャに毎フレームごとテクスチャにビットマップ を割り当ててスプライトで表示してみたのですがFromBitmapの処理が遅すぎて使い物になりません。
ここはC++スレだ
初心者イラネ
>>923 まずはZ座標を一番奥にしたスクリーン座標のポリゴンにカメラからの映像を表示する
そのうえに普通にDirect3Dのモデルをレンダすればいいだけ
ビットマップする必要なんてない
つまり映像をテクスチャにすればいいだけな話
>>927 ビットマップにする必要が無いというのは気づきませんでした。
どうも、ありがとうございます。
今カメラ画像はメモリ上にあるのですが、それをテクスチャに貼り付ける部分で
どうしてよいのか分からない状態です。
テクスチャへの割り当てはTextureLoader.FromFile();
か、texture.FromBitmap();がメインのようで他に見つかりませんでした。
それとも、他の方法としてカメラ画像を直接テクスチャに再生する方法があるのでしょうか?
調べたところMicrosoft.DirectX.AudioVideoPlayback の中のVideoクラスは
"動画ファイル"を直接テクスチャにレンダできるようです。
しかしリアルタイムのカメラ画像のテクスチャへの割り当ては解決できませんでした。
アドバイスいただけますでしょうか。
>>883 GDIならSetLayeredWindowAttributesで半透明ウィンドウが作れる。
そこにDirect3Dの描画結果を自分で転送すればいける。
αも転送したかったら、自前で処理しないといかんが。
Vistaを睨んで全部Direct3Dでやりたい、って人はどうするんだろうな。
俺も知りたい。
930 :
デフォルトの名無しさん :2006/12/04(月) 15:02:15
>>915 ですが携帯からのカキコですみません。
M/Bがショートして煙がモヤりして、PCが起動できなくなりました。
せっかく回答を頂いたのに申し訳有りません…
スレを読む分には問題ないので頂いたレスに対してカキコします。
ただアンカはつけられませんが。。。
デバッグで…と言う方法は凄いいいですね。
全然知らなかったので…無知は失敗の元ですね
その方法をきちんと広めれば"何を調べればいいのか対象がハッキリして"
質問の質がきっとあがる!!
と、初心者がいっとります>(゚ロ゚*
回答してくださった方、本当に申し訳ないであります。
>>929 ちょうど似たようなものを作ったところ。D3DPRESENTFLAG_LOCKABLE_BACKBUFFER必要。
hwMain = CreateWindowEx(WS_EX_LAYERED, ...);
SetLayeredWindowAttributes(hwMain, RGB(0, 0, 0), 0, LWA_COLORKEY);
hdcMain = GetDC(hwMain);
lpD3DDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &lpD3DSurface)
これで背景通過のウィンドウを作り、
lpD3DDevice->EndScene();
したら Present の替わりに、
lpD3DSurface->GetDC(&hdcD3D);
BitBlt(hdcMain, 0, 0, cx, cy, hdcD3D, 0, 0, SRCCOPY);
lpD3DSurface->ReleaseDC(hdcD3D);
で転送。
背景を半透明にしたければ、さらにCreateWindowExで別の半透明ウィンドウを作って下敷きにする。
正しいかどうかは分からないけど、動いてる。
自分が使ってるヴァージョンを確認するのってどうやるの?
コントロールパネル→DirectX
>>933 誰もそんなこと聞いてねぇよw
SDKの話をしてんだが?
>>934 知ってるが
お前の態度が
気に入らない
>>932 膜があるかどうか、というのも不確実だしなぁ。
とりあえず自己申告を信じろ。
GetDXVersion
してねーよと言おうと思ったらコンシューマの方か
941 :
デフォルトの名無しさん :2006/12/06(水) 15:51:54
DirectX使ったフルスクリーンのプログラムで、 IMEで日本語入力させたいときはどうしたらいい? 変換候補とか入力中文字がちらついて見えない。
テクスチャについて質問させてください。以下のTipsを読んだのですが >アプリケーションが4つの128x128のテクスチャを使うなら, >同じパレットにして1つの256x256のテクスチャの中に入るとよいでしょう。 1つのテクスチャに4つのテクスチャをまとめて テクスチャマッピングの際に線形補間フィルタリングをかけると ポリゴンのエッジ部分に他のテクスチャのテクセルが干渉してしまいます。 2005年のエントリークラスのVGAを使用することを想定した場合に、 どのような解決策を使用したほうが良いでしょうか。どうか教えてください。 自分で解決方法を調べてみた結果としては、2つの方法が思いつきました。 (1)1つのテクスチャにまとめない(Tipsを無視する) (2)サンプリングされる4点が目当てのテクスチャの範囲に収まるように テクスチャ座標(u,v)を調整する 自分としては、(2)は広範なVGAで確実に調整できるか疑問が残りますし、 Tipsに縛られずに(1)で良いのかなと考えています。
944 :
942 :2006/12/06(水) 17:35:35
>>943 ご回答ありがとうございます m(__)m
(1)の方法で解決してみたいと思います。
>>934 手首切断して出血多量で死ねよ
>>941 IME用のWM_を使う
ネット上にソース転がってる
>>942 おれは(2)にしてる。
とくに2Dで大量に描画するような時は(1)の方法だと死ねる。
だが(2)はUVをズラサナキャならない分CPUに負荷がかかるので
どっちもどっちで状況に応じて帰るのが最強だと思うんだな。
(2)でたしかにVGAによっては若干ごみが出ることはある。
だがそんなものは画像を作る時に端1ドットは使わないようにすればいいだけだったりもする。
でも面倒なときはやっぱり(1)使ったりもする。
>>941 描画も自分で管理したいならIme*系の関数で全部できる。
>>941 DirectXSDKの中にずばりのサンプルがある。探しなさい。
ただ、基本は「IMEの機能で描画はさせず、入力コンテキストの描画は自己責任で行う」、これに尽きる。
つまりフォント周り一式とかをちゃんと面倒見る体勢まで整えてからじゃないと、
いわゆる製品品質のアプリとかは作れない。
つってもそんなに大したことじゃない。
先にも書いたとおり、DirectXSDKの中にずばりのサンプルがある。
UI関連のコードで、サンプルブラウザからすぐ見つけられる。
そう悪くないサンプルなので、しばらくコードと戯れてみるのがいいと思うよ。
頑張れ。
950 :
942 :2006/12/07(木) 07:04:46
>>947 ご回答ありがとうございます m(__)m
大変勉強になります。申し訳ありませんが、質問を重ねてもよろしいでしょうか。
(1)の問題点を挙げるとすると、どのようなものでしょうか。
a. テクスチャが多くなることで作成や管理の手間が増大する
b. SetTexture, テクスチャ切り替えのオーバヘッドが増大する
c. 最大テクスチャ数など何らかの制限がある
d. その他
製作にあたり注意点として留めておきたいと思いますので
ご教示よろしくお願いします。
>だがそんなものは画像を作る時に端1ドットは使わないようにすればいいだけだったりもする。
その通りだと思います。
しかしながら…、画像を作るときに注意を払う必要がでてきますし
フィルタリングやVGAによっては1ドットで済むのかどうか疑問であります…。
コーディングや注意の手間を考えると(1)の方法をとるのとどちらが良いのか
悩ましいところです。状況に応じて考えないといけないのですね。
ご指摘いただいて勉強になりました。ありがとうございます。 m(__)m
バイリニアフィルタのアルゴリズムでは どうサンプリングしても上下左右1ドットまでしか参照されないよ。 それ以上参照される場合はそもそも座標やUVの指定がおかしい。 (0,0)-(100,100)に描画する時に頂点座標を(0,0)-(100,100)って 指定したらいけないのはわかるっしょ。
>>951 >どうサンプリングしても上下左右1ドットまでしか参照されないよ。
ミップマップテクスチャの存在を忘れてはいけないだろ
953 :
942 :2006/12/07(木) 12:38:06
>>951 ご指摘ありがとうございます。 m(__)m
なるほど1ドット空けておけば大丈夫なんですね。
調べてみたところ(2)の方法は、転送元を0.5テクセル内側に
するらしいですが…画像がぼけたりしないのでしょうか。
>>952 ミップマップというと距離によってテクスチャを縮小する技法ですよね。
よく分からないので…理解できるように勉強してみます。
ありがとうございます。
>>952 あれ?2D描画の話じゃなかったの?
2Dならミップマップなんて使わないから別にイーヤ的な感じだった。
3Dでも最近はミップマップ使うよりミップマップは1,2レベル程度しか使わずに
異方性フィルタ使うほうが格段にきれいになるからそっち使ってるなぁ。
>>953 そりゃぼやけるさ。
だがバイリニアフィルタ使ってる時点でぼやけるの確定なんだから同じコト。
まぁバイリニアでも正しい位置に正しいUVを指定すればぼやけずにきちんと表示されるがね。
955 :
デフォルトの名無しさん :2006/12/08(金) 01:35:02
質問です。 初期時の解像度って何を参照して決めるのが一般的なんでしょうか?
↓ESP発動。これが結論
初期時ってのがなんかわからんが、アプリ起動直後なら Win32APIのMonitorFromWindow()で、ウインドウハンドルから 現在ウインドウが描画されてるモニタのハンドルが手に入る。 これを同じくWin32APIのGetMonitorInfo()に食わせると、 マルチディスプレイ含めた全体画面上のモニタの位置およびサイズが手に入る。 解像度が欲しいだけなら、ここから拾える。 で、IDirect3D9のGetAdapterCount()で得られるアダプタの数だけ GetAdapterMonitor()を回してやれば、アダプタ番号も手に入る。 D3DDeviceは、アダプタ番号指定してリセットかけてやらないと マルチディスプレイ環境等では極端に動作速度が落ちる場合があるので、 この指定は必須(無くても動くには動くが、滅茶苦茶遅くなるかもしれない)。 ウインドウ移動のイベントなんかの中でも、本当はアダプタ番号を逐次検索するべき。 面倒くさければマルチ対応しませんって言い切って、放置すんのも手だけど。 こんなんでいいか?
DirectXじゃなくて恐縮だがGDI+使ってる人っている? これ使って描画すると描画したもんのまわりにαがかかるんだけど なんか回避方法知ってる人いない? 普通の画像でもそれなりにわかるんだけど、 一番わかりやすいのが幅、高さともに1ドットぐらいのビットマップを読み込んで 拡大描画すると滲む。何故か右下から広がるようにαが入ってる。
そいつは流石にスレ違いなんじゃないかなあ。 すまんが有効な情報の持ち合わせはないぞ。
960 :
デフォルトの名無しさん :2006/12/10(日) 01:12:43
USB接続されたPS2のコントローラのバイブレーション機能を使うにはフォースフィールドバックと同じ設定でよろしいのでしょうか? EnumDevicesは通っています。 必要なのか分かりませんがSetPropertyでオートセンサーの無効にするのは失敗しました。 これをコメントアウトしてそのまま処理を進めると、CreateEffectの部分で失敗してしまいます。 PS2のコントローラのバイブレーション機能を使えるかどうか、 使える場合何か特殊な設定が必要なのかレスを頂けると有難いです。 SDK:2006Aug
>PS2のコントローラ 既にわかっていることかもしれんが、 「PS2のコントローラをUSB接続するデバイス」およびそのドライバに 標準の規格なんて一切無い。 普通のフォースフィードバック扱いで動かなければ、最悪デバイス及びドライバ側の 問題の可能性は大いにある。 むしろ2〜3個買ってきて検証してみてくれ。
962 :
960 :2006/12/10(日) 01:46:13
レスありがとうございます。 手元にFF(この略し方でいいのかな)対応のコントローラがないので、先にプログラムが正常かどうか試して見ます。 ちなみにFF対応のプログラムは「DirectX実践プログラミング」の項にあるものを打ち込んでいます。
963 :
960 :2006/12/10(日) 20:03:38
アフターバーナーIIを接続してみました。
オートセンサーの無効は正常に通りましたが、やはりCreateEffectで失敗してしまいます。
LPDIRECTINPUTEFFECT g_pDIEffect = NULL;
〜エフェクトの設定など〜
hr = g_pDIDevice->CreateEffect( GUID_ConstantForce, &eff, &g_pDIEffect, NULL);
問題がなければg_pDIEffectに何らかのアドレスが入るはずなのですがNULLのまま。
effの値は以下の通りです。
http://a-draw.com/uploader/src/up8240.txt 何か間違っているのでしょうか。
振動機能はコントローラー毎のドライバをインスコしないと使えるようにならんとおもったが
FF11は別なのかな、PS2のコントローラならソニー製HORI製関わらず接続さえすれば振動するけど。
いや、普通は振動する。 チャンネルが違ったりすることはあるかもしれんが。
967 :
960 :2006/12/10(日) 23:00:02
振動云々以前にエフェクトの生成で詰んでる俺って・・orz
ボッチーさんのライブラリで勉強しています。
970 :
960 :2006/12/11(月) 21:35:26
>>969 すみません、その方のサイト?やDL出来る場所はどこにあるのでしょうか。
調べても出てきませんでしたので教えていただけるとありがたいですorz
なぜだ。なぜ 作者も放棄したモノを使い続ける
973 :
960 :2006/12/11(月) 23:14:02
>>971 ありがとうございます。
ただ見た限りではジョイスティック(ゲームコントローラ)の設定のみでFF関連のプログラムが見当たりません。
CreateEffectで失敗するということはなんらかのドライバが必要?
ドライバ無しでも対応のゲームでは動くので必須ではなさそうですよね。
もしかしてPS2のコントローラのバイブレーション機能を使うには別の手段があるのでしょうか。
DX8の時代のものですし、DX9では9で新しいものがあってもおかしくはないのですが。
>CreateEffectで失敗する エラーみろ エラーの見方がわからないならそう言え >もしかしてPS2のコントローラのバイブレーション機能を使うには別の手段があるのでしょうか。 他のFF対応機器と同じと考えてよい ただし、変換アダプタがフォースフィードバックに対応していること 当然ながらPS2のコントローラーも振動に対応していることを確認しろ >DX8の時代のものですし、DX9では9で新しいものがあっても DirectInputは変更なし 対応しているかどうかを心配しているのなら、まずはじめにやって欲しいのは なんらかの方法で実際に揺らしてみることだ どんな変換アダプタを使っているのか知らないが テストモードで揺らすことが出来るものもある どんな変換アダプタを使っているのか? SDKのバージョンは? 再現する最低限のコード せめてこれぐらい書いてくれ
975 :
960 :2006/12/12(火) 00:18:10
>>974 上にも書いていますがSDKは2006Aug、ソースは968さんが書いてくださっているURL先にあるのと同じです。
変換コネクタはLOAS JOX-U301、コントローラはソニーのデュアルショック2。
USBからの電力供給でバイブレーション機能は問題なく働いています(振動対応ゲームにて確認)。
EnumDevicesのDIEDFL_FORCEFEEDBACKフラグを通っているのでFF対応と認識されているのでしょうが、
CreateEffectで失敗(E_INVALIDARG)するためこのプログラムで振動させるまでには至っておりません。
>>975 DXのサンプルは動くかな?
そのプログラムは同じところで動かなかったけどDXのサンプルだと動いたよ。
つ【デバッグレベル最大】 まあ頑張れ。
実践なんたらの本のエフェクトのところでDIPERIODICが使われているけどDirectXのサンプルに組み込もうとすると生成できないな。 前処理必要だったっけ?
979 :
960 :2006/12/13(水) 01:39:21
レスありがとうございます。 DirectXのFFサンプルが動きましたのでそちらのプログラムをベースにしてみました。 原因を調べようとソースを比べましたが978さんの内容の部分で引っかかります。 別に設定する必要性もないのでDirectXのサンプルのコードを使って回避しています。
はじめましてこんにちは。 LunaというDirectXライブラリを使用してゲームを制作しているのですが テクスチャを読み込んだスプライトを拡大しまくると変になります。 パソコンAでは ある一定のサイズに達するとスプライトが消える パソコンBでは ある一定のサイズに達するとスプライトが右下に動く(座標に変化は無い) パソコンCでは 永久に拡大可能。問題無し という状況です。 原因がまったくわからず、どうすればいいのかもわからないので 質問させていただきました。 DirectXをよく知っている方で、この現象を理解できる方がいれば ぜひ助言の方お願いします。
Lunaのサイトで聞いてください。
>>980 LunaのサイトにいくにしてもそのPCのグラボがどんな性能かわからんと話にならんな。
>>981 >>982 ありがとうございました。
Luna製作者に聞いてみますね。
とりあえず聞く前にDirectXの不具合ではなかったようなので
よかったです。
ありがとうございましたー。
directx8と9でvisualcでゲームを作ろうと思い立った時に ひな型のサンプルプログラムはどういうのにしましたか? LUNAとか内部の処理が分からないのは除外します。
Lunaはオープンソースなんだから中身全部分かるだろw
雛形なんか使わない。いつも空のプロジェクト。
DXUTばらしたら。 ゼロから書いても、結局ああなる。 デバイスの復元処理とか。
初心者がDXUT読んだら発狂しそうだなオイ
そうはいってもSimpleSampleとかもDXUTだしなあ。 工学社の本とかのサンプルだと、載ってる情報量もイマイチだし。
DXライブラリでいんじゃね?
3Dモデルぐらいは使えてくれないと・・・
メッシュのドラッグ&ドロップをやりたいのですが、いまいちやり方がわかりません。 マウスのレイとの接触判定はできているのですが、サンプルのEffectEditのようにやろうとすると X軸とY軸方向には動かせるものの、カメラを回転させるとマウスの移動方向とメッシュの移動方向が あわなくなるようでどうにも。 2Dと同じような感覚で3DにおいてD&Dを行うにはどのようにすればよいのでしょうか?
移動量(x, y, 0)にカメラの回転を掛けてから加算
994 :
992 :2006/12/22(金) 04:12:27
>>993 ありがとうございます。
お陰様でZ軸方向にも移動するようになりましたが、カメラの向きによっては明後日の方向に移動したり、
距離の変化によってマウスに追従してるとは言い難い移動量だったりでまだまだ練る余地がありそうです。
メタセコイアでの移動の具合がそのものズバリだったのでこれを参考に模索していきたいところです。
初めまして。 質問なのですがDirectX9実践プログラミングと言う本の DirectX Graphicsのサンプルを実行すると 何故かウィンドウがすぐに消えてしまい何も出来ません。 どこを直すとちゃんとファイルが読み込めるのでしょうか。
997 :
995 :2006/12/23(土) 11:35:37
>>996 ありがとうございました。
問い合わせしてみます。
X
B
次スレないよ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。