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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
※回答する人も、質問する人も必ず読んでください

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

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

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

【C++】 DirectX初心者質問スレ Part14 【C】
http://pc11.2ch.net/test/read.cgi/tech/1189257706/
21:2007/11/27(火) 16:57:10
【関連サイト】

MSDN DirectX
http://www.microsoft.com/japan/msdn/directx/default.aspx

DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.mspx

BBX (掲示板)
ttp://isweb8.infoseek.co.jp/computer/bbx/

DXライブラリ置き場
ttp://homepage2.nifty.com/natupaji/DxLib/

Lamp:ゲーム開発とその学習をサポートするミドルウェア
ttp://lamp.sourceforge.jp/

TWINTAIL LOVERS.
ttp://www.twin-tail.jp/

Pastel's Laboratory
ttp://www.roy.hi-ho.ne.jp/pastel/home/index.html

GamDevPukiWiki - DirectX総合スレ (過去ログ等)
http://gamdev.org/w/?%5B%5BDirectX%C1%ED%B9%E7%A5%B9%A5%EC%5D%5D

GamDevPukiWiki - 3DCG製作ソフト (過去ログ等)
http://gamdev.org/w/?%5B%5B3DCG%C0%BD%BA%EE%A5%BD%A5%D5%A5%C8%5D%5D

ゲームを作るための素材を集めよう まとめサイト
http://paw.my-sv.net/index.html
31:2007/11/27(火) 18:28:32
次スレがなかったようなので、適当に建てました。
14のヤツをそのまま(前スレだけ変えた)持ってきたので、必要なヤツは↓で追加してくれ。
4デフォルトの名無しさん:2007/11/28(水) 10:45:46
おつ
5デフォルトの名無しさん:2007/11/28(水) 18:19:22
DirectXのアプリケーションウィザードってVisualStudio2005じゃ使えないのでしょうか?
6デフォルトの名無しさん:2007/11/29(木) 18:25:57
使えないし、使う必要性もない。
7デフォルトの名無しさん:2007/11/29(木) 18:31:05
SDKのサンプルに入ってる
DXUT使えば同じくらい低コストで導入できるんじゃね?
85:2007/11/29(木) 18:45:59
>>6
それを使わないとほとんどの内容がムダになってしまう本を読んでいるんですよ・・・。
>>7
・・・さっきネットオークションで旧バージョンのVSを3万近くで入札しちゃってそのまま
落札しそうなんですが、すっごいムダなことしてしまったでしょうか(多汗)
9デフォルトの名無しさん:2007/11/29(木) 19:43:52
ソフトじゃなくて本を変えればいいのに
10デフォルトの名無しさん:2007/11/29(木) 20:02:10
質問です
現在STGを作っていてBGMとSE再生にDirectMusicを使っています
BGMに10秒程度のwaveデータをループ再生で使用しているのですが
FPSが60を下回る程度に重くなると頻繁に音飛びしてしまいます
どうすれば音飛びをなくせますか?
115:2007/11/29(木) 20:07:17
>>9
滅多にない名書なんです。
12デフォルトの名無しさん:2007/11/29(木) 20:28:22
その書籍の名前は?
13デフォルトの名無しさん:2007/11/29(木) 20:29:57
>>10
その程度の量ならDirectSoundでバッファに全部詰めてループ再生すべき
14デフォルトの名無しさん:2007/11/29(木) 21:27:27
>>13
waveの再生にはDirectSoundの方が適していると言う事でしょうか。やってみます
155:2007/11/29(木) 21:36:42
>>12
今給黎さんの書かれたDirectX9シェーダプログラミングブックという本です。
16デフォルトの名無しさん:2007/11/29(木) 23:36:30
>>15
つーかお前50ページくらいしか読んでないだろ
その本もってるけど
ぜんぜんアプリケーションウィザードが必須って内容じゃないぞ
たぶんお前のこの本は早すぎる
もうちょっとWindowsプログラミングの知識をつけてからにしたほうがいいぞ



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


17デフォルトの名無しさん:2007/11/30(金) 00:08:09
ウィザード?何それ?
そんなもの使ったことないけど、今じゃDirectX10で開発している俺様が通りますよっと。
185:2007/11/30(金) 00:19:06
>>16
72Pまで読みました。
まずはシェーダ記述の部分を学びたいので、それ以外の枠組み的なところはできるだけ
著者の説明に沿うカタチで進めたいんです。
そうしながらシェーダ記述が構造全体の中のどの位置でどのように働くかの理解も深まると
期待しています。

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

というか.net 2002を落札しそうです・・・。
19デフォルトの名無しさん:2007/11/30(金) 01:11:18
こんな単純な構造も扱えないなんて・・・
20デフォルトの名無しさん:2007/11/30(金) 02:18:27
割り込みで質問すいません。Visual C++ 2005を使っているのですが、下記のプログラムを書いたところDirect3Dデバイスが作成されませんでした。
D3DCREATE_MIXED_VERTEXPROCESSINGの部分を色々いじってみたのですが駄目でしたorz
どなたか解決策をご教授いただけたら助かります。
PCのスペックはCore2Duo E6600、Geforce 8600GTSです。
問題のところだけ抜粋してみました。
HRESULT InitD3d(HWND hWnd)
{
if( NULL == ( pD3d = Direct3DCreate9( D3D_SDK_VERSION ) ) )
{
MessageBox(0,"Direct3Dの作成に失敗しました","",MB_OK);
return E_FAIL;
}
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.BackBufferFormat =D3DFMT_UNKNOWN;
d3dpp.BackBufferCount=1;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.Windowed = TRUE;
if( FAILED( pD3d->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_MIXED_VERTEXPROCESSING ,
&d3dpp, &pDevice ) ) )
{
MessageBox(0,"HALモードでDIRECT3Dデバイスを作成できません\nREFモードで再試行します",NULL,MB_OK);
if( FAILED( pD3d->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_REF, hWnd,
D3DCREATE_MIXED_VERTEXPROCESSING ,
&d3dpp, &pDevice ) ) )
{
MessageBox(0,"DIRECT3Dデバイスの作成に失敗しました",NULL,MB_OK);
return E_FAIL;
}
}
21デフォルトの名無しさん:2007/11/30(金) 03:06:56
>>18
>著者の説明に沿うカタチで進めたいんです。
進めたいっていうか知識がないから
そうするしか手段がないだけだろ
素直に入門書から入れって
その後にもう一度その本を読んだほうが絶対に身になるから

>>20
GeForce6世代以降だと
そもそもREFがサポートされてないボードもある
CapsViewerでReferenceがサポートされてるかチェック
8600なら頂点シェーダが使えるから
HALでD3DCREATE_HARDWARE_VERTEXPROCESSINGで作ればいいんじゃね?
もうちょっと汎用でつくるなら
頂点シェーダのバージョンを調べて
2.0以上ならD3DCREATE_HARDWARE_VERTEXPROCESSING
未満ならD3DCREATE_SOFTWARE_VERTEXPROCESSING
で切り替えるとか
22デフォルトの名無しさん:2007/11/30(金) 17:44:21
初めて質問させていただきます。
Visual C++ 2005 Express Editionを使って「Microsoft DirectX SDK (Nov 2007)」をインストールしてパスも通しました。
解説HP等を巡ってサンプルをいじったりしていたのですが、

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

という風なエラーが出てしまいます。
DirectXのIncludeフォルダの中にも'dmusici.h'というファイルは見つかりません。
インストールを失敗したかと思い、インストールしなおしましたが同じ結果になってしまいます。
Directxのバージョンとかは関係ないですよね?
よろしくお願いします。
23デフォルトの名無しさん:2007/11/30(金) 17:53:53
ttp://www.microsoft.com/japan/msdn/directx/Releasenotes/dxreadmeNov07J.aspx

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

Direct3D8 およびそれ以前の全てのバージョン
Direct3D RM
DirectAnimation
DirectMusic
DirectInput7 およびそれ以前の全てのバージョン
DirectPlay
DirectPlayVoice
DirectX8 時代の HRESULT 変換ルーチン
Managed DirectX サンプルとドキュメント
これらのコンポーネントを使いたい開発者は、MSDN から August 2007 DirectX SDK をダウンロードする必要があります。
2422:2007/11/30(金) 19:02:54
>>23
素早い回答ありがとうございます。
結果は見事エラーが消えてくれました!

ですが、コンパイラのほうでエラーが出たので修正にいそしみます・・・
25デフォルトの名無しさん:2007/11/30(金) 20:26:35
22じゃないんだけどAugust 2007 DirectX SDKはMicrosoft DirectX SDK (Nov 2007)に上書きしていいの?
26デフォルトの名無しさん:2007/11/30(金) 21:55:54
この本に付いてたソースを弄って現在DirectXについて勉強中です。
http://www.sbcr.jp/books/products/detail.asp?sku=4797329807

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

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



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

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


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

どのようにすれば3Dオブジェクトを操作できるように出来るのか、どなたかお教え頂けませんか?
27デフォルトの名無しさん:2007/11/30(金) 21:56:36
ちなみに、グローバル変数も使おうとしたんですけどなぜかダメでした。

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

Scene.hでグローバル変数x,yを宣言して、Scene.cppの最初にまず0入れて、
Window.cppのWindowProc内にて
     case WM_DOWN():
       if(wParam==38){
          ここにx+=1;
       }
みたいな方法でグローバル変数操作しようとしたんですがだめっぽくて・・・どうすればいいんでしょうか。。
28デフォルトの名無しさん:2007/11/30(金) 22:48:11
>>26
せめてエラーのないソースを上げようよ
29デフォルトの名無しさん:2007/11/30(金) 22:51:58
>>27
ここはWindowsプログラム初心者スレじゃない。
基礎からやり直せ。
30デフォルトの名無しさん:2007/11/30(金) 23:01:59
Windowsプログラム以前の問題だな
C言語そのものをよく理解してないだろ

とりあえず
WinMain内の

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

をグローバルにして

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

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

また、Direct3D9の固定機能パイプラインで、テクスチャ座標値をそのままピクセル色として
出力することは可能ですか?ピクセルシェーダを使わないと無理でしょうか?
32デフォルトの名無しさん:2007/12/01(土) 11:55:35
DirectXに関してはまったくの初心者なのですが、どうしても分からないことがあるので質問させて下さい。

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

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

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

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

簡単ですがレポートと再現コードをまとめておきました。
参考にご覧ください。
http://kissho.xii.jp/1/src/1jyou20706.zip.html
33デフォルトの名無しさん:2007/12/01(土) 19:13:53
DirectSoundの質問です。
waveファイルを扱うとき、mmioOpenで開き、ファイル形式、チャンクのチェック等という処理をしていくと思います。
このファイルを開く処理の時、ハードディスク上のファイルではなく、メモリに読み込んだデータを
使いたいのですが、可能でしょうか?また、どのようにすればいいのでしょうか?
宜しくお願いします。
3433:2007/12/02(日) 02:31:42
自己解決しますた
35デフォルトの名無しさん:2007/12/02(日) 19:37:59
>>10で質問した者ですが、DirectSoundを使うことで音飛びしなくなりました。
しかし同時に複数の音が再生できないようなので、BGMはSound、SEはMusicで再生しています。
DirectSoundとDirectMusicを同時に使っても不具合が起こったりしないでしょうか?
36デフォルトの名無しさん:2007/12/03(月) 01:22:03
質問です。
画像をキーボードを使って移動できるようにしたのですが、
Alt + Tabでデバイスをロストすると、画像はちゃんと表示されるのに、キーボードを使っての画像の移動ができなくなってしまいます。
何が原因でしょうか。
移動にはDirectInputを使って直接キーボードからの入力を取得しています。
37デフォルトの名無しさん:2007/12/03(月) 07:58:20
>>36
画面が復帰したときに
Acquireしなおせばいいんじゃね?
38デフォルトの名無しさん:2007/12/03(月) 18:38:44
DirectXの導入について質問です。

http://www.plustarnet.com/aspil/Programming/
を見ながらDirectXをBCC Developerで使おうとしているのですが、DirectX Novenber 2007をインストールしてもコントロールパネルにDirectXの項目が出てきません。
この状態で上記サイトのサンプルプログラム(2D編の始めのところにあるsampleSTG)が出来るかどうか試してみたのですが、エラーが大量に出て上手くいきません。
これはそもそもDirectXのインストールをやり直すべきなのでしょうか、それともサイトが古いから仕様が変わったのでしょうか。
39デフォルトの名無しさん:2007/12/03(月) 20:43:08
>>38
いつからだったかコンパネにはでなくなったような
プログラムメニューの
DirectX Utilitiesの
DirectX Control Panelで同じのがみれるよ
ただNovenber2007は見てないのでなかったらすまん

おそらくエラーと上記は無関係
とりあえずincludeのパスは通したのかい?
通してエラーがでてるのなら
エラーコードをいくつか書いてみそ
話はそれからだ
40デフォルトの名無しさん:2007/12/04(火) 08:05:33
VistaとD3DCREATE_SOFTWARE_VERTEXPROCESSINGについての質問です。

DirectXのサンプルプログラム SkinnedMesh を例であげますが、
Vista(GF8600GT,AthlonX2 5000+)だと
D3DDEVTYPE_HALにおいて
D3DCREATE_HARDWARE_VERTEXPROCESSINGと
D3DCREATE_SOFTWARE_VERTEXPROCESSINGでのパフォーマンスの差が30倍以上出るのですが、
Vista?ではこんなものでしょうか?
自宅で確認できる他の環境では
XP(R9600, P4 2.8G)だと倍程度の差しかでないようなので・・・
D3DCREATE_SOFTWARE_VERTEXPROCESSINGだけですが、
2000(onBoardGF4MX, Athlon 1G)の方がVistaの3倍以上のパフォーマンスが出ています。
41デフォルトの名無しさん:2007/12/04(火) 10:02:12
>>40
すまん、お前の日本語はどうも理解しがたい
具体的に書いてくれ
4240:2007/12/04(火) 10:30:05
VistaでのSoftware vertex processing処理は遅いのでしょうか?

Hardware vertex processingだと840fps以上でるのですが、
Software vertex processingだと28fps程度まで落ちます。
XPや2000だと性能の低いGPUを使ってSoftware vertex processingを指定しても
100fps前後が出るのに・・・
Vsitaなのか他の条件なのかがはっきりしなくて質問しました。
動作プログラムは DirectXのサンプルプログラム SkinnedMesh です。
43デフォルトの名無しさん:2007/12/04(火) 11:05:25
28は遅すぎる
REFで動いてないか?
44デフォルトの名無しさん:2007/12/04(火) 11:13:05
あとSDKのライブラリのリンクは
きちんとx64のほうを指定しているのかい?
4540:2007/12/04(火) 11:56:04
REFだと1fps程度ですね。
x64でリンクってのは、この場合はサンプルexeなので
SDK付属のexeを実行してるだけです。
参考までに、Vista環境の方で、どの程度のfpsが出るのでしょうか?
46デフォルトの名無しさん:2007/12/04(火) 12:35:03
ノートですまんが
32bitVista Cor2DuoT7500 GeForce8600GTM
スキニングのタイプで多少は前後する
SOFTWARE 300fps
HARDWARE 350fps
くらい
4740:2007/12/04(火) 14:25:29
どうやら私の環境だけのようですね。
自分がコーディングしたプログラムだけなら何かミスがあるのかなと考えたのですが、
SDK付属のサンプルexeでも同じような状態だったので・・・。
どなたかご指摘の点とかないでしょうか?
一応、Debug/Retail Runtimeは確認しています。
48デフォルトの名無しさん:2007/12/04(火) 18:59:52
初心者なので変なことを言ってたらすみません。

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

壁にぶつかる角度などで、向き変えたい方向が違うのでif文での場合わけがわかりません。
よろしくお願いします。
49デフォルトの名無しさん:2007/12/04(火) 19:03:08
if (vector==0) {
//右へ移動する
//壁にぶつかると変数vectorの値を変える
} else {
//上へ移動する
}
50デフォルトの名無しさん:2007/12/04(火) 19:19:16
>>48
お前はDirectXとかうレベルではなく、それ以前の問題。
そんな初歩的なアルゴリズム、管質いってやってくれ。
51デフォルトの名無しさん:2007/12/04(火) 19:40:16
3Dでやっていて、どのような角度で壁にぶつかっているのかがわかりません。
進む方向は回転行列を使って変えていて。。

バイオハザードの、壁にぶつかってもキャラクターは走っているのに、
ぶつかった時の入射角によって左右のどちらかに、
キャラクタの座標がずれていくようにしたいのですが。。
52デフォルトの名無しさん:2007/12/04(火) 19:44:40
回転行列に使ってる角度はどこに消えたんだよw
53デフォルトの名無しさん:2007/12/04(火) 20:34:18
「壁ずり」でググるんだ。
ここはDirectXの質問スレであって、ゲーム開発の質問スレじゃないんだ。
だからもう迷い込むなよ。
54デフォルトの名無しさん:2007/12/04(火) 20:38:24
壁ずりを理解したら次は床ずりも理解してくれ
55デフォルトの名無しさん:2007/12/05(水) 22:56:55
ライトを設定しないでも、読み込んだモデルは色付きで表示されて見える状態ですけど、
ライトの光が当たる部分だけ照らされて、当たらない部分は真っ暗にするにはどうすれば良いでしょうか?
56デフォルトの名無しさん:2007/12/05(水) 23:18:28
>>55
すげぇ抽象的な質問だな

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


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

すっかり課題を忘れてて手をつけていない
よろしくお願いします
60デフォルトの名無しさん:2007/12/06(木) 10:28:08
ここは宿題を片付けますスレではないんだが・・・

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

いくらか出してくれるなら話は別だが
61デフォルトの名無しさん:2007/12/06(木) 12:24:12
そもそも設計がおかしくね?

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

単に静的メンバの使い方の学習の一環でこんなことしてるのだろうか?
6259:2007/12/06(木) 13:52:40
>>60、61
そうなんですね。

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

うpしたファイル見て頂いただけでもありがたいです。
63デフォルトの名無しさん:2007/12/06(木) 14:07:09
>>62
ゲーセン乙。
64デフォルトの名無しさん:2007/12/06(木) 19:29:58
こんな授業に金出してるのか・・・。
しかも、聞いてなくて課題ができないとかって。

君、学校(?)に行く目的は課題の達成なの?
それとも、学校に行くのが目的になってるの?
どっちにしても、すでに健全な状態ではないよね。
65デフォルトの名無しさん:2007/12/06(木) 19:52:13
プログラム実行時に

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

って出るんですが原因と解決法とかわかりませんか?
とりあえず見た目は正常に動いてるようには見えるんですが気になります。
66デフォルトの名無しさん:2007/12/06(木) 23:22:34
何も無いところにエラーは出るはずないので
必ずそのエラーを吐いている関数があるはず
とりあえずデバックで順次実行してみて
そのエラーを吐いてる箇所を絞り込んでみたら?
67デフォルトの名無しさん:2007/12/06(木) 23:41:17
俺にはハードウェアを(その環境が)サポートしてないっていうエラーに見えるんだけど。
エラーの発生源ってデバイスの初期化部分じゃないか?
グラボを積んだ環境で試してみろよ。それかソフトウェアエミュレートに切り替えればいいはず。
68デフォルトの名無しさん:2007/12/08(土) 16:12:52
自宅のノートパソコンでプログラムを起動すると起こるバグなのですが。
『アニメーションメッシュを表示した途端に、その他のただのメッシュやテクスチャが全て表示されなくなる』というバグです。

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

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


要領を得ず、長文で申し訳ありませんが回答をいただけたら幸いです。
69デフォルトの名無しさん:2007/12/08(土) 16:28:41
>>68
その自宅のノートのGPUはどこの会社のどのバージョンよ。
話からするとハードウェアに問題があるのは間違いなさそうだけど、公表されんといいようがない。
70デフォルトの名無しさん:2007/12/08(土) 19:35:00
>>69さん

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

パソコンの種類が
http://dynabook.com/pc/catalog/support/search/user/cgi-bin/disp.cgi?pid=PATX760LS&dir=DBs
スペックが
http://dynabook.com/pc/catalog/dynabook/051219tx/spec.htm
です。
7155:2007/12/08(土) 19:40:45
>>58
ありがとうございました。
72デフォルトの名無しさん:2007/12/08(土) 19:42:57
>>70
単なるスペック不足
3Dの開発ができるVGAではないな
73デフォルトの名無しさん:2007/12/08(土) 20:00:31
>>72さん
やっぱりそうなんですか…。
ありがとうございました^−^




ただ、何とか「勝手に消す」→「カクカクでもいいから動く」ようにしたいのですが
そこの辺りはDirectX側で変更できないのでしょうか?
74デフォルトの名無しさん:2007/12/08(土) 20:13:33
>>73
なんとも判断に困る。

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

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

対策としては、PCを変えるのが一番手っ取り早いけど、
それでもノートでしたいならBIOSの設定でSDRAMのグラフィックメモリ割り当てサイズを増やしてみたら?
一回最大割り当てでやってみて、それでも無理ならほかの要因かもしれん。
75デフォルトの名無しさん:2007/12/08(土) 21:25:39
>>74さん
とにかく、何か特殊な事をしなければ動かないということですよね。
ここはやっぱり「万能に」は諦めて説明書に「他の3Dゲームが出来る事を確認した上で起動をお願いします」
と注意書きを入れるべきですね…。

卒業生の代表作品として、体験入学参加者などに配られる予定なので
何とかして、せめてカクカクでもいいからどこでも動くようにしたかったんです。
7674:2007/12/08(土) 21:35:16
>>75
ものすごい面倒だが、もしかすると旧DirectXのバージョンでコンパイルすると行けるかもしれん。
俺はやったことないから保証は出来んが、DirectX8とかなら古いPCでも通るかも。

まあノートでゲームの性能を期待するなっていうのも本当だが。
7768:2007/12/08(土) 23:03:39
>>74さん
返信が遅くなって申し訳ありません。
SDKの方は旧バージョンがあったのでやってみたのですがやはり動きませんでした。
僕のプログラムだとDirectX8ではちょっと動かない関数を使っているので無理です;

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

新聞奨学生なので今日はもう眠らなくてはいけませんが、治らなかった場合、また後日より詳しい状態を調べた上で書かせていただきます。
それでは長らくお付き合いいただき、誠にありがとうございました。
78デフォルトの名無しさん:2007/12/09(日) 00:09:19
> 本当にカクカクではあったのですが
REF なんじゃろうなぁ...
79デフォルトの名無しさん:2007/12/10(月) 20:15:23
HLSLでfor文回してるんですけど、
かなりの数ループできないんですが・・
命令数って限られてるんでしょうか?
そうだとしたらその理由は?
80デフォルトの名無しさん:2007/12/10(月) 20:53:50
お前はもう終わってる。
マルチポストは死亡フラグなんだよ。
81デフォルトの名無しさん:2007/12/10(月) 21:36:31
普通のプログラムでも1Gもサイズがあったら動かなくなるんじゃない?
82デフォルトの名無しさん:2007/12/10(月) 21:43:51
マルチポストとはどういう意味?
83デフォルトの名無しさん:2007/12/10(月) 22:59:11
浮気者
84デフォルトの名無しさん:2007/12/12(水) 00:50:11
誠氏ね
85デフォルトの名無しさん:2007/12/13(木) 01:34:46
http://pc11.2ch.net/test/read.cgi/gamedev/1179516297/468-470
がいし感←なぜか変換dけいなf
86デフォルトの名無しさん:2007/12/13(木) 16:40:23
ちょっと聞きたいのだけど、Directxと32Apiを組み合わせてプログラム
を組めますか?
Win32Apiのラジオボタン等の機能と組み合わせて作れれば良いなあ
と思ったもので・・・
87デフォルトの名無しさん:2007/12/13(木) 17:16:49
Win32APIっていうか
GUIにアクセスして
Windowsコントロールを描画することはできるけど
GUIの速度がDirectXと比べ物にならないくらい低速だから
DirectXを使うメリットを殺すことになる
88デフォルトの名無しさん:2007/12/14(金) 04:12:49
>>87
有難うございます。
何と言うか漠然としすぎて何とも言え無いです。
出直してきます
89デフォルトの名無しさん:2007/12/15(土) 21:06:58
自分のPCにはSDK9.0が入ってます。
あるサンプルをダウンロード、中を確認したらd3d8.hとd3dx8.hがインクルードされてたので
これをd3d9.h、d3dx9.hに直し、追加の依存ファイルも8から9に直してコンパイル
したら何百ものエラーが出てきました。
色々試したけど原因が全く分からないのでよろしければ誰か教えてください><
90デフォルトの名無しさん:2007/12/15(土) 21:14:32
バリバリ原因が丸わかりだろ。
91デフォルトの名無しさん:2007/12/15(土) 21:16:10
>>89
完全下位互換と言うわけではないからファイルが違うと全くの別物と考えたほうがいい。
同じファイル名でも中身は何度も添削しているから当時のバージョンじゃないと使えない場合もあるし。
92デフォルトの名無しさん:2007/12/15(土) 21:27:34
>>91
そうだったんですか・・・
9.0以前のものは全て使えると思ってました^^:
ご返答ありがとうございました。
93デフォルトの名無しさん:2007/12/15(土) 22:23:52
Xファイルに関して質問です。
ひとつのモデルに対し、複数のアニメーションをさせることはできるのでしょうか?
たとえば、あるキャラクターで、Aを押したらパンチ、Bを押したらキック、という風にしたいのです。
やはり、パンチ用とキック用でXファイルをわけるしかないのでしょうか。
94デフォルトの名無しさん:2007/12/15(土) 22:29:24
>>93
二つのアニメーションを連結して、それぞれのアニメーションでフレームを補正して使う。
例えば、AとBのアニメーションを連結したら、
Aの初めは、0
Bの真ん中は、0.75
っといった感じ。
95デフォルトの名無しさん:2007/12/15(土) 22:41:53
>>93
できる
SDKサンプルのtinyも実は
複数アニメーションを持ったXファイルだ
ただし切り替えに関して詳しく説明されてるところはあまりない
ID3DXAnimationControllerでぐぐればヒントくらいはみつかるかも
96デフォルトの名無しさん:2007/12/16(日) 17:29:57
HLSLを使ったサンプルでLPD3DXEFFECTのPassを使おうとしてエラーが出ます。
LPD3DXEFFECTにPassが無いのですが別のものに替わったのでしょうか。
97デフォルトの名無しさん:2007/12/16(日) 17:44:24
BeginPass
EndPass
98デフォルトの名無しさん:2007/12/16(日) 18:50:11
メジャーバージョン変えずにAPI蛙のやめれって感じですよねほんと
99デフォルトの名無しさん:2007/12/16(日) 23:31:10
どうしても1パス終了ごとに
PassEndを入れさせたい「事情」があって
開始時の互換性をなくすことで
両方セットで変更させようとした。ってオチじゃねぇの?
100デフォルトの名無しさん:2007/12/17(月) 06:19:42
地獄への道は善意で敷き詰められている。
職場では変更を極力抑えるのが美徳だけれど、その繰り返しが死の行軍を生み出すのが常である。
101デフォルトの名無しさん:2007/12/18(火) 22:22:44
SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
これらの引数を使いこなしたいんだけど分かりやすく解説している
ページないべ?
102デフォルトの名無しさん:2007/12/18(火) 23:45:27
これはひどい
103化石発掘:2007/12/19(水) 02:37:51
104デフォルトの名無しさん:2007/12/21(金) 11:00:39
ttp://wisdom.sakura.ne.jp/system/directx/dxg2.html
ここのページ下部にある背景が緑の部分のソースをまるごとコピーして、VisualStudio2005の無料版でコンパイルしました。ところが
「fatal error C1010: プリコンパイル ヘッダーを検索中に不明な EOF が見つかりました。'#include "stdafx.h"' をソースに追加しましたか?」
というエラーが出てコンパイルできません。エラーで検索してみたところ、ソースの最上段に #include "stdafx.h"
を加えればコンパイルが通るらしいので試してみた所
「fatal error C1083: include ファイルを開けません。'd3d8.h': No such file or directory」
と表示されてコンパイルが通りません。

DirectXSDKはさっき落とした最新版(サンプルみたらDirectX10も使えそう)で、パスはたぶん通ってます。
どうしたらコンパイルができるようになりますか?
105デフォルトの名無しさん:2007/12/21(金) 12:58:24
まず、stdafx.h関連はスレ違い。DirectX以前の話なんで、よそで勉強して頂戴。
で、最新のDirectX SDKって何?November2007ならリリースノートに

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

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

ってあるから、Direct3D8はサポート外なんじゃないの?
もしインストールしたSDKのIncludeディレクトリにd3d8.hがあるんなら、Includeパスの設定を再確認しれ。
あと、少なくともJune2006にはd3d8.hは入ってるのを確認した。
106デフォルトの名無しさん:2007/12/21(金) 20:10:39
November2007です、d3d8.hがなくて、代わりにd3d10.hが入ってました。
アンインストールしてJune2006入れてきます。ありがとうございました。
107デフォルトの名無しさん:2007/12/21(金) 21:01:44
June2006にもd3dx10.hはあるけどね。
あと、そのページはDirectX8について記されてるんだけど
DX10がやりたいならよそを見たほうが良いよ。
初期化まわりは8→9→10で全然変わったからやり直しになるし。

あと、DX10は動かすにはVistaがいるから。念のために。
108デフォルトの名無しさん:2007/12/22(土) 22:01:46
すいません
2Dでゲーム作成をしているんですが

LPD3DXSPRITE gSprite;

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

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

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


109デフォルトの名無しさん:2007/12/22(土) 22:07:23
Direct3DでWM_PAINTで描くのはありですか?
110デフォルトの名無しさん:2007/12/22(土) 22:07:59
108ですが、読み込み部分です

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

// スプライトに表示するテクスチャの初期化
if ( !key ){
hr = D3DXCreateTextureFromFileEx(
g_pD3DDevice, name, Width,Height,1,0,
D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,
D3DX_DEFAULT,D3DCOLOR_ARGB(255,0,0,0),NULL,NULL,&Texture);
}
111108:2007/12/22(土) 22:11:38
連投すいません
問題点の大元が判明いたしました

D3DXCreateTextureFromFileEx(
g_pD3DDevice, name, Width,Height,1,0,
D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,
D3DX_DEFAULT,D3DCOLOR_ARGB(255,0,0,0),NULL,NULL,&Texture);
}
widthとheightに大きな値を入れると重くなりました
1とか10だと正常です・・・
112デフォルトの名無しさん:2007/12/23(日) 07:34:04
プロファイリングしたら?
D3DXSpriteなんてただでさえDirectXのバージョンに依存するからみんな回避してるのに、
この情報だけで分かるエスパーは居ないと思う。

つPIX for Windows
つDevPartner Profiler

まずは、どこで処理時間が落ちてるか見たほうが早いよ。
113108:2007/12/23(日) 09:34:36
>>112
ありがとうございます
その後の調べでどうも大きな絵を大量に呼び出すと落ちる様子
たとえ呼び出し側での大きさの縦横は1*1でも、元の絵が大きいと
どのPCどんな処理でも避けられないらしいので
妥協して少し絵の大きさを改善してみますm(_ _)m
お答えありがとうございました
114デフォルトの名無しさん:2007/12/23(日) 11:35:36
てか、元のテクスチャのサイズがでかかったら
パフォーマンスが落ちるのは当たり前じゃ
115デフォルトの名無しさん:2007/12/23(日) 11:37:43
あなるほど
116108:2007/12/23(日) 11:43:53
>>114
いや、initでの呼び出しで重くなるのはわかるんですが
メインループの中では1*1でも重いんですよ・・・
117デフォルトの名無しさん:2007/12/23(日) 12:00:51
表示で小さくしてるってことは
内部的に縮小してるってことだ
LPD3DXSPRITEがどういうアルゴリズムで
拡縮してるかはしらんがバイリニアってことはないだろうし
ぼけたりすることを考えるとなんらかのフィルターをかけているのは想像つく
それを巨大なテクスチャに適用してるんだから重いのは当たり前
118108:2007/12/23(日) 12:11:19
私の書き方がわかりにくくてすいません
要は2000*2000の画像をinitで読み込んで
1*1の部分しか表示していないのにそれを10個ほど並べたら重いんです
3個くらいなら正常なんですが・・・・

フィルタ関連で重くなるようなら少し見直して見ますm(_ _)m
ありがとうございました
119デフォルトの名無しさん:2007/12/23(日) 12:19:52
だから・・・

>2000*2000の画像をinitで読み込んで

この時点で重い処理がすべて終わってるわけではない
簡単に言うとここではVRAM上に
2000x2000の領域を確保して画像の色情報を格納してるだけ

基本的には毎回描画のたびにこの
2000x2000の領域にアクセスして
そこの情報をバックバッファに転送することになる

元のサイズが大きければ大きいほど
転送のための時間がかかるし
何らかの処理をかければ当然重くなる

基本的には表示するサイズでテクスチャを作るのが普通
120デフォルトの名無しさん:2007/12/23(日) 12:23:03
ビデオカードによっては
2048×2048にしたら多少は改善されるかもね
121108:2007/12/23(日) 13:17:50
>>119
>>120

そうですか・・・initで読み込んだら以降はもう関係ないものだと勘違いしておりました
スキル不足を痛感いたします
ご教授本当にありがとうございました
122デフォルトの名無しさん:2007/12/23(日) 13:22:14
リファレンスでやってるだけでね?
123デフォルトの名無しさん:2007/12/23(日) 13:50:19
たかだか2048のテクスチャで最近のビデオカードが遅くなるかね〜?
なんか、致命的な間違いをしていると思われ。
124108:2007/12/23(日) 14:28:32
>>123
それを15〜23個くらい呼んでます
125デフォルトの名無しさん:2007/12/23(日) 17:00:04
そもそもVRAMが足りなくなってて
システムメモリ上に作られてるとか
あるいは
システムメモリとVRAMが共用になってて
バス速度がボトルネックになってるとか
126デフォルトの名無しさん:2007/12/23(日) 17:42:47
実はDX8で開発していますとか言い出すんじゃないだろうな。
127デフォルトの名無しさん:2007/12/23(日) 17:59:09
DirectXを使ってWindowsのゲームを作りたいのですが、
お勧めの入門書を教えてもらえませんか?

作りたいのはビートマニアのように音とシンクした、
シューティングゲームです。
3Dグラフィックは使いません。
128デフォルトの名無しさん:2007/12/23(日) 18:00:57
今のDirectXで3D使わずに絵描くのって無理じゃ
129デフォルトの名無しさん:2007/12/23(日) 18:08:07
ぶっちゃけ
DirectX関連で「これ1冊あれば」って本はないんだよなぁ
3〜4冊やってようやく
あ、なんとなく分かってきたかも。となる

どの本もだいたい「サンプルを動かすための」ソースになってるから
なんでそうなってるのかが説明されてないし
応用しようとするととたんに動かなくなったり・・・

数をこなすと何をやってるのかがだんだんわかってくるので
自分でいろいろ応用することができるようになる
130127:2007/12/23(日) 19:02:13
何も知らない状態で、何から始めるのがいいか、
アドバイスをもらいたいです。

>>128
3D描画しかできないんでしょうか?
3Dを使って2Dの描画ができるならいいんですが、
あまり効率がよくないならDirectXを使うこと自体考え直します。
メインでやりたいのは音の制御なので、描画はそんなに凝りません。
シューティングゲームなので、図形の衝突判定ができると便利かもしれませんが。

>>129
それじゃあ、とっかかりとして何を参考にするのがいいんでしょうか?
サンプルを見て数をこなして、少しずつ把握していくしかないんでしょうか?
131デフォルトの名無しさん:2007/12/23(日) 19:06:45
>>130
ゲーム製作初心者なのか
DirectX初心者なのかにもよる
132デフォルトの名無しさん:2007/12/23(日) 19:14:48
>>130
3Dを使って2Dの描画ができるならいいんですが

OK
133デフォルトの名無しさん:2007/12/23(日) 19:19:08
>>130
DirectX9でスプライトが一番お手軽だと思われ。
134デフォルトの名無しさん:2007/12/23(日) 19:37:25
>>130
シューティングゲーム製作本出てるぞ
それを参考にすれば?
135デフォルトの名無しさん:2007/12/23(日) 19:59:17
>>124
なるほど。VRAM足りてないね。
1024*1024のA8R8G8B8テクスチャが大体4MByteね。
2048テクスチャだと4倍の16M。それが15個で240M。23個なら368M。

ちょっと無茶な設計になってると思われ。
不要なテクスチャは必要な時だけ確保するようにした方が良いし、
テクスチャは効率的に隙間無く活用した方が良いよ。
136127:2007/12/23(日) 21:10:44
>>131
>>131
ゲーム制作初心者です。プログラミング歴も1年程度です。
ただ、Javaで簡単なシューティングゲームを作ったことはあるので、
シューティングゲームのアルゴリズムに関してはだいたいどうやるか決めています。

分からないのは音の精密な制御で、ゲームの進行と正確にシンクさせる部分です。
その部分をどうやっていいのか、イマイチ当たりがつかない状況です。
137デフォルトの名無しさん:2007/12/23(日) 21:19:44
>>136
入門書の枠からは外れてるかな。
再生時間'(再生位置)を取得させれば良いだけの話だけど、
この手のゲーム以外で使うことはほとんど無いため扱わない。
ストリーミングバッファの解説が載っていればそれを応用すれば出来ることに気付くかも知れんが。
138デフォルトの名無しさん:2007/12/23(日) 23:48:37
広大なマップを作りたいんですが、バカ正直にモデルを作って読み込んだら物凄く重たくなってしまいました。
程よいメッシュ数で一定区画毎のモデルを用意して、必要分だけ読み込んで表示するのでしょうか??
139デフォルトの名無しさん:2007/12/24(月) 00:16:12
>>138
東京から大阪へ行くのに新幹線で行くのでしょうか?   という質問をされてどう答えろと。
140デフォルトの名無しさん:2007/12/24(月) 00:31:31
東京の六本木を歩いてるだけのシーンでも、ニューヨークとかパリとか地球全部描いてるわけか?
そんな恐るべき無駄は止めた方がいい
141138:2007/12/24(月) 01:09:58
>>139
??
夜行バスでも行ける、ってことですか??
でも、新幹線で行けるならそれに越したことはないですし、>>138の方法でイイってことかな・・・。
>>140
そ、そんなことはしません(汗)

今までゲームをしてきて、当たり前のように見てきた広大なフィールドを実現するのがこんなにも
たいへんなことだなんて・・・
ゲーム開発者の人を改めて尊敬します。

ttp://www.acecombat.jp/ace6/feature/images/ace6_image14.jpg
これとか、すごすぎです(;´д`)
142デフォルトの名無しさん:2007/12/24(月) 01:20:10
地面はまっ平ら
木はビルボードにしか見えないんだが
143デフォルトの名無しさん:2007/12/24(月) 01:32:33
ワラタ
144デフォルトの名無しさん:2007/12/24(月) 08:39:45
>>141
アプリケーションに正解なんて無いぜ?
>程よいメッシュ数で一定区画毎のモデルを用意して、必要分だけ読み込んで表示するのでしょうか??
つまり>>139の例で言うと新幹線で行くのも正解だし、バスで行くのも正解、歩いていくのも正解だろ。
自分の案があるならそれを試した上で軽くなる方法が無いか聞かないと。
145デフォルトの名無しさん:2007/12/24(月) 10:02:56
DX9 2007Nov .Net
HLSLについての質問です。
以前PassがBeginPassとEndPassに変わったと言うやりとりがありましたが
上がっているHLSLのサンプルがことごとくエラーを出して正常に実行できません。
サンプルにSDKのバージョンを合わせれば動くでしょうが、そこから最新のバージョンに動かすように修正が出来ませんでした。
現在のバージョンで動くHLSLのシンプルなソースや解説をしているサイトは無いでしょうか。
せめてHLSL部分だけでもあればいいのですが、fxファイルが正常に読み込めエラーが出たりとか・・orz
146デフォルトの名無しさん:2007/12/24(月) 10:12:49
きちんとヘルプが付いてきているだろ。
それで何が問題なんだ?
147デフォルトの名無しさん:2007/12/24(月) 10:53:43
>>145
別にHLSLの部分は何もかわってないぞ
fxファイルが読み込めないのは
どっかに構文エラーがあるからじゃね?
148デフォルトの名無しさん:2007/12/24(月) 11:13:46
>>145
>上がっているHLSLのサンプル

どこのサンプルだよ?
149デフォルトの名無しさん:2007/12/24(月) 11:44:39
>>148
Pass()のままのところもあります(修正してもメモリ周りでエラーが出たり)

t-pot『HLSL』   (画像の下辺りにサンプル)
ttp://tpot.jpn.ph/t-pot/program/72_HLSL/index.html

DirectX9での上位レベルシェーダー言語(HLSL)  (最下にサンプル)
ttp://www001.upp.so-net.ne.jp/y_yutaka/labo/directx/shader_hlsl.html

Shader.jp - Articles-第4回「HLSL スタート」   (上から1/5程の位置にある赤字文の下にサンプル)
ttp://www.shader.jp/xoops/html/modules/xfsection/article.php?articleid=14

その7 HLSLによる極短レンダリング:サンプルプログラム   (画像の下辺りにサンプル)
ttp://marupeke296.com/DXPSSMP_No7_HLSLRendering.html
150138:2007/12/24(月) 12:31:45
>>144
分かりました。
ありがとうございました。
151デフォルトの名無しさん:2007/12/24(月) 21:55:38
>>149
俺もうごかねぇや。
てか自前のでさえ動かなくなってた。
詳しく調べてないから分からんが仕様が数箇所で変更されてエラーが複雑化しているように思える。
ぶっちゃけ去年辺りのSDK使えばいいんじゃね?
152デフォルトの名無しさん:2007/12/24(月) 22:36:33
VC++2005、windowsSDK、DirectX9 SDK(October 2006)の環境で
2Dの簡単なゲームを作ろうとしている所です

フルスクリーンモードでSetDialogBoxModeを使用している
全ソース付きのサンプルプログラムはどこかにありませんでしょうか?
できればフルスクリーンモードでのメニューバー表示のサンプルがあると助かります。

一応自分でもこれを実現するために
こちらの方のページを参考にしてほぼ丸写し状態でやってはみたのですが、
どうもメニューが表示されません。
ttp://www.geocities.jp/is3000nx/reading/dev/dev.html

ただ、SetDialogBoxModeを呼び出しても呼び出さなくても、
メニュー自体は存在しているようで、マウスで画面の上のあたりを
クリックなどしますと、瞬間的にメニューが現れ、メニューコマンドが実行されますが^^;

こちらに書いていない部分(DX初期化関連、ウィンドーモード、メッセージ処理etc…)
などで何か気をつける点でもあるのでしょうか???
153デフォルトの名無しさん:2007/12/24(月) 22:48:55
あ、VC++2005はExpressEditionです。よろしくお願いします
154デフォルトの名無しさん:2007/12/24(月) 23:54:06
板ポリゴンとかにテクスチャを貼ると、テクスチャが何故か右下にずれるのですが、何故なのでしょうか?
どうすれば直りますか?
155デフォルトの名無しさん:2007/12/25(火) 00:28:43
>>154
何かを間違っているから。
156デフォルトの名無しさん:2007/12/25(火) 05:24:58
どうすれば直りますか?
157デフォルトの名無しさん:2007/12/25(火) 05:29:57
間違いを修正する
158デフォルトの名無しさん:2007/12/25(火) 05:49:02
どうすれば間違いを
159デフォルトの名無しさん:2007/12/25(火) 06:32:38
どうやって貼りましたか?
160デフォルトの名無しさん:2007/12/25(火) 08:12:48
161デフォルトの名無しさん:2007/12/25(火) 09:11:08
DirectX9.0bSDK(2004October)付属サンプル2の、虹色の三角形表示プログラムについての質問です。

改造して四角形を表示させたいのですが、うまくいきません。

CUSTOMVERTEX vertices[] = に
{ 50.0f, 50.0f, 0.5f, 1.0f, 0xff0000ff, },
を追加することで頂点を4つにし、

Void Render()内の
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); を
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
にすることで、2つの三角形を連続して描画し、結果的に四角形になるかと思ったのですが
三角形一つしか表示されません。

また、
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 ); を
g_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLESTRIP, 0, 0, 4, 0, 2 );
にすることで上記と同じ効果になるのかと思ったのですが、今度は三角形自体消えてしまいます。

どうしたら四角形が表示されますか?
162デフォルトの名無しさん:2007/12/25(火) 09:26:56
カリングされてるんじゃないかね?
SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE)
163161:2007/12/25(火) 10:00:08
できました!
あと頂点の順番?がおかしかったみたいで |X| ←こんな形になったけど、頂点入れ替えたら四角形になりました!
ありがとうございます!              ̄
164デフォルトの名無しさん:2007/12/25(火) 10:35:15
は?
頂点の順序が間違ってたのが原因、って事?
165161:2007/12/25(火) 10:52:03
>>164
三角形が一つしか表示されないという問題は
->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
で解決したんですが、今度は頂点の順番がおかしいせいか欠けた四角形になったんです。
/|  と  |\  の三角形の組み合わせで |X| こんな形に
 ̄       ̄                     ̄
166デフォルトの名無しさん:2007/12/25(火) 14:42:39
>>161
どうでもいいけどoct2004は9.0cだったと思うが
167デフォルトの名無しさん:2007/12/25(火) 15:46:06
疑問に思ったんだけど、四角形を描画する場合、頂点バッファを作ってDrawPrimitive()で描画するのと、
作らないでDrawPrimitiveUP()で描画するのとどっちが速いですか?
頂点バッファは頂点数が多いほど効果を発揮すると聞いたような気がするのですがどうなのでしょうか?
168デフォルトの名無しさん:2007/12/25(火) 15:57:45
疑問に思ったんだけど、なんで自分で試さないんですか?
169デフォルトの名無しさん:2007/12/25(火) 20:21:12
>>167

DrawPrimitiveUPのほうが早いですよ。
多くの方が様々なOSやビデオカードで検証済みです。










とか言ったらこいつは何も考えずにDrawPrimitiveUP使うんだろな。
170デフォルトの名無しさん:2007/12/25(火) 22:21:13
>>169
ありがとうございます。
やはり、頂点バッファは頂点数が多いほど効果を発揮すると言う事でしょうか?
171デフォルトの名無しさん:2007/12/25(火) 22:23:17
>>170
そうです。Microsoftが検証済みです。
172デフォルトの名無しさん:2007/12/26(水) 01:31:37
>>152
私も同じ事やろうとしたけど、どうも上手くいかないですね
でもこの人の作ったゲームだと実装されているっぽいし…
本当にSetDialogBoxModeを使ってるのかなぁ

この関数使ってまともにメニューが表示できた人っていますか?
というかフルスクリーンのメニュー表示はみなさんどうやってます?
173デフォルトの名無しさん:2007/12/26(水) 01:40:45
ステートブロックがいまいち良く理解できません。
1.普通のステート変更を最小限に抑えて変更する
2.(CreateStateBlock()で)キャプチャしたステートブロックを毎回適用する
3.カスタムステートシーケンス(BeginStateBlock()〜End...()まで)を適切に使用する
と三つのやり方があると思うんですが、
何も考えずに2.のやり方でも効率的にできるんでしょうか。
それとも多少のやりくりは必要なんでしょうか。
ピュアデバイスだとステート変更は変更するたびに行われるんでしたっけ?
ステートブロックの仕組みとかがわからないのでちょっと迷ってます。
174デフォルトの名無しさん:2007/12/26(水) 02:30:21
効率いいかなんてやってみればわかるだろ。アホか
175デフォルトの名無しさん:2007/12/26(水) 02:47:54
このスレっていったいどんな質問なら答えてくれるの?w
176デフォルトの名無しさん:2007/12/26(水) 03:02:27
パラドックス
177デフォルトの名無しさん:2007/12/26(水) 04:01:19
初心者ホイホイなのかな
178デフォルトの名無しさん:2007/12/26(水) 07:20:42
初心者であろうがなかろうが、自分で試せるものを試さないってのは単なる怠慢だと思うが。

やり方が分からないんであれば、どっちが効率的?などと聞くんじゃなく素直にやり方そのものを質問すべき。
179デフォルトの名無しさん:2007/12/26(水) 13:52:41
このスレいらねーなwwwww
180デフォルトの名無しさん:2007/12/26(水) 14:13:55
レンダリングステートを変更する事は、結構重いコストとして扱われるので、
Dx6まではコロコロ変化させずに、同じレンダリングステートのメッシュやターゲットを纏めて
レンダリングしたり、ステートの変化が最小になる順番でステート郡をレンダリングしてたりしたんだけど、
ステートブロックを使えば、複数のレンダリングステートの変化を一度にデバイスに適用出きるので、
上記の事をあまり意識しなくて良いレンダリングループが作れるようになったわけ。

でも、別にレンダリングするターゲットやステートの種類によってはステートブロックを使わなくても
そんなに処理が重くならないのも事実で、自分が作成しているプログラムでステートの変更が
重い処理だな、と思ったらステートブロックを試してみれば良いんじゃないの?
GPUとGPUへのバスの帯域、レンダリングするプリミティブの数、ステートの変更量といった要因が
あって、トータルで考える必要があるから、なんでもかんでも管理するのは効率的ともいえないし、
大規模エンジンを作るのに、ステートの管理コストを嫌って管理しないのも効率が逆に悪くなるし。

ケースバイで。効率的ってのは目的が無いと決定しない項目だから。
181デフォルトの名無しさん:2007/12/26(水) 14:22:58
>重い処理だな、と思ったらステートブロックを試してみれば良いんじゃないの?

そうなんだが、それを自分で試そうとしない輩が多すぎるな
182デフォルトの名無しさん:2007/12/26(水) 19:19:34
VisualC++2005、DirectX9.0c SDK、Windows SDKの環境です。

キャラクターのアニメーション等をさせる場合、
画面を毎秒60とか30フレームとかで更新、のような処理をしなければならないと思うのですが
その毎回の画面の更新タイミングはどのような手順で取るのでしょうか
183デフォルトの名無しさん:2007/12/26(水) 19:38:29
>>182
自分で試せ
184デフォルトの名無しさん:2007/12/26(水) 19:49:08
何を試せばいいのでしょうか
185デフォルトの名無しさん:2007/12/26(水) 19:57:16
「ゲームループ」でぐぐれ
186デフォルトの名無しさん:2007/12/26(水) 19:58:02
>>184
それを自分で試せ
187デフォルトの名無しさん:2007/12/26(水) 20:00:24
少し荒れてる状況で質問したのはタイミングが悪かったな
188デフォルトの名無しさん:2007/12/26(水) 20:06:30
>>187
自分で試せよ
189デフォルトの名無しさん:2007/12/26(水) 20:19:19
>>188
>>187に言うなよ!w
190デフォルトの名無しさん:2007/12/26(水) 20:21:58
マルチコア設計の描画エンジンだとステートブロック使うのは問題外の糞www
というnVidiaあたりのプレゼン資料なかったっけ
191180:2007/12/26(水) 20:58:26
>>190
まあ、実はステートブロックは、固定パイプライン時代の産物だから、基本的に
レンダリングステートなんてほとんど変えずに、シェーダでやれってのがDirectX9以降の
正しいGPUの使い方なんだと思う。

こんなの、実は悩むところじゃないと思うな。
固定パイプライン使ってても、レンダリングステートの変更なんて大した
負荷になってないっぽいもんね。所詮DirectX7時代の話だし。
一々ステートブロック作らなくても十分高速に動いてるし。
ステートブロックの解説も怪しいところあるから、普通利用を避けるんじゃないかな。

>>173は何故こんな事に疑問を持ったのか、謎だ。
(どこかの処理で実際に遅くなった、とかならわかるけど。)
192173:2007/12/26(水) 23:38:39
え、いや、普通な感じで
実装前にセオリーとか聞きたいなって…荒れさせたようでごめん
忘れて

>>180さん、なんかすいません…とても参考になりました…どうもでした
>>180さん、ごめん、俺のせいで
193173:2007/12/26(水) 23:39:49
>> >>180さん、ごめん、俺のせいで
>>182さん、ごめん、俺のせいで の間違いです ホント申し訳ないw
194182:2007/12/27(木) 00:22:56
>>185
ありがとうございます。_tWinMainの中でtimeGetTimeを使って
60分の1秒を数える方法を使ってみました
Windowsゲーは同期とかはキニシナイでいいんでしょうかね

>>193
いえいえキニシナイでください
195デフォルトの名無しさん:2007/12/27(木) 02:19:50
>>194
いや、同期取らないと駄目だろ。
196182:2007/12/27(木) 02:55:23
え?そうなんですか?>>195さんはどういった手順でやってるんでしょうか
197デフォルトの名無しさん:2007/12/27(木) 03:00:18
俺は可変フレームレートのが好きだな
要は1フレームでどんだけ時間が進んだかで
アニメーションの進行速度を変えればいいわけだから
そんでフレームの終わりにフリップすれば
198デフォルトの名無しさん:2007/12/27(木) 03:15:47
>>197
あれってどうやって実装してるの?
フレーム間の時間をグローバル変数にでも格納して参照するんだろうか。
199デフォルトの名無しさん:2007/12/27(木) 04:22:17
DirectX9SDKを入れて、バージョンは8で開発したいんだけど、d3dx8.hとかないのね
d3d8.hとかはあるのに。

どうすればいいんだろ。どっかでDirectX8SDKを見つけてこないと駄目かな?
200デフォルトの名無しさん:2007/12/27(木) 04:41:19
9のOct2004だけど、d3dx8.hあるよ。
201デフォルトの名無しさん:2007/12/27(木) 07:28:08
仕事でどうしても必要じゃなきゃ9使った方がいいと思うけど。
まあ9x系対応とかだとDx9のOct2006までじゃないとダメらしいが
202デフォルトの名無しさん:2007/12/27(木) 10:23:51
>>199
リリースノートくらい読めよ・・せっかく日本語に訳してくれてるんだから。

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

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

これらのコンポーネントを使いたい開発者は、
MSDN から August 2007 DirectX SDK をダウンロードする必要があります。
        ~~~~~~~~~~~~~~~~~~~~~~~~~
203デフォルトの名無しさん:2007/12/27(木) 10:26:15
まあオーガスト2007だと8で作る意味が全くなくなるけどな
204デフォルトの名無しさん:2007/12/27(木) 11:12:48
DirectX9でゲームを作ってたんだけど、DirectX9の独自の機能使ってないし、誰でもすぐに遊べる様にしたいからDirectX8にしたかったのさ。

>>200
>>202

サンクス。
とりあえず古いバージョン拾ってみよう。古いバージョンで上書き出来ればいいけど

>>203
そうなの?
結局XPの初期状態とかで動かないのかな?


205デフォルトの名無しさん:2007/12/27(木) 11:56:09
>>204
だからリリースノートを読めと。

----
すべてのプラットフォームでのインストール上の注意

・現在の DirectX SDK をインストールする前に、DirectX SDK の前バージョンを削除することを推奨します。
----

どのバージョンがどのOSに対応しているかも全てリリースノートに書かれている。
206デフォルトの名無しさん:2007/12/27(木) 12:19:57
もう、ほっといた方がいいかと。
一度受けた注意を怠るわ、質問している立場なのに偉そうだわ。
d3dx8.hの話にしても、>>104-105 で出てた話題なのに、
同じスレ内ですら検索かけてないし。
207デフォルトの名無しさん:2007/12/27(木) 14:19:57
2Dの描画で描画数がかなり多くなるため(1フレームに3000程度の数字テクスチャを描画)頂点バッファを利用して
1フレームに頂点バッファ一括ロック→memcpy→アンロック→DrawIndexedPrimitive
としているのですが、3000個描画するとシーン時間が6〜7ms程掛かってしまいます(それなりに良いスペックのPCで)
6000ポリゴン程度の描画でこんなに時間が掛かるはずがないと思うのですがやり方が間違っているのでしょうか?
208デフォルトの名無しさん:2007/12/27(木) 14:40:20
なんかmemcpyがボトルネックになってそうだけど
どの処理に一番時間がかかってるのか
もうちょっと絞り込んだ方がいいんじゃない?
209デフォルトの名無しさん:2007/12/27(木) 14:43:44
まず対照実験として、画面をクリアするだけで何も描画しない場合の速度を計るべきだと思う。
210デフォルトの名無しさん:2007/12/27(木) 16:53:43
ロック/アンロックが臭いと思うな。変なロックは速度に影響でかいから。
ロックを止めて、ダミーバッファにmemcpyする処理に置き換えてフレームレートを計測したら?
あと、頂点バッファは、まとめてる?ロックがボトルネックなら、頂点をまとめて1フレームにロックする回数を
1回にしてしまった方が良いよ。
それと、毎回コピーする頂点の計算処理は重くない?
211デフォルトの名無しさん:2007/12/27(木) 20:04:19
ところで、そろそろ>>152の質問に回答してくれる方はおりませんでしょうか?

ネットを漁り、アキバでDirectX関連の参考書を読みふけりましたが
どこもこの問題についてはあえて避けてるようにしか思えません

SetDialogBoxModeをマスターされました神様、いらっしゃいましたらお願いします

とりあえず、フルスクリーンでメニューとダイアログが表示できるようになればいいので
いい解決方を知っている方でも大歓迎です
212デフォルトの名無しさん:2007/12/27(木) 20:05:35
斜め投影した場合、投影されたCGがあえて歪んで見えるようにしたいです。
どこをいじればいいか教えてください。
213デフォルトの名無しさん:2007/12/27(木) 20:16:28
>>211
全ソース付のサンプル、か。

google code search で SetDialogBoxMode で検索したら結構引っかかったんだけど、やってみた?
検索結果の始めのほうはラッパのヘッダとか意味ないのばっかだけど
結果の後の方まで見てみると結構有用っぽいのがちらほら。Lunaとかも引っかかってたり。
ただライブラリ系ばっかでサンプルになるかどうかは分からん。
214207:2007/12/27(木) 20:43:50
レスありがとうございます
やはり描画部分が結構重いみたいです…
1フレーム当たりの時間が
ロック/memcpy/Drawを一切しない → 80μs
ロック→16000頂点分memcpy→アンロックでDrawしない → 450μs
一つ上の条件でスプライトを2000個描画 → 3210μs
いずれも他の描画以外の処理を含む時間で、memcpyは実際には描く分だけのサイズで行うので最悪条件でテストしています
215デフォルトの名無しさん:2007/12/27(木) 21:46:38
ロックしない/memcpyしない/アンロックしない/Drawする
っていうのも測った方がいいと思う。
頂点データがないのはアレなんで、計測外で初期化時にでも放り込んでおいて。
216デフォルトの名無しさん:2007/12/27(木) 21:56:46
PIXで、実際どのAPIが時間食ってるか調べてみたら?
GPUが忙しいのか、CPUが忙しいのか、プログラムが悪くってどっちも
遊んでる状態になってるのか、それを切り分けないと始まんないと思う。
あと、スペックに対しての期待値がどれくらいで、3210はどの位そこから遅いのか?

SDK付属ドキュメントの「Direct3D API 呼び出しの正確なプロファイル」あたりは一回読んでる?
217デフォルトの名無しさん:2007/12/27(木) 22:23:55
>>211
今てきとーに使ってみたら一応表示はできるみたいだがのー。
D3DPRESENTFLAG_LOCKABLE_BACKBUFFER忘れてるとかそんなオチじゃないよね?
しかし案の定XPとVistaじゃ挙動違うっぽいし、あんまし深入りしたくねぇなこれ。
218デフォルトの名無しさん:2007/12/27(木) 22:35:28
Dialogは普通に表示出来たけどメニューは
あんまりメリット感じないから使った事無いや。
219デフォルトの名無しさん:2007/12/27(木) 23:35:17
PIXの使い方がわからねぇ
220デフォルトの名無しさん:2007/12/28(金) 02:02:20
おれもおれも
まぁちょっとだけならわかるけど
つっこんでは分からねぇ
221デフォルトの名無しさん:2007/12/28(金) 03:43:50
助けて

頂点テクスチャフェッチのためにVertexShaderでtex2Dlod(Sampler,float4(In.tex,0,1))すると真っ黒になってしまいます
float4(In.tex,0,0)、float4(0,0,0,1)などでも同様でした
テクスチャのフォーマットはA32B32G32R32Fで、SM3.0にも対応しているのですが

tex2Dlodなどでぐぐってみたところ、MSのフォーラムなどで似たような症例がありましたが解決策がよくわからず・・・
原因に何か心当たりある方はいないでしょうか?
222221:2007/12/28(金) 04:29:27
ちなみにサンプラーは
MinFilter = Point;
MagFilter = Point;
MipFilter = None;
AddressU = Clamp;
AddressV = Clamp;
です
223デフォルトの名無しさん:2007/12/28(金) 12:36:06
等高線の形どおりに厚紙を切って重ねると、立体地図が作れますよね
この立体地図をプログラムで描画したいのですが、躓いてしまいました
今手元には等高線が書かれた白地図があるので
「等高線ごとに領域を分割し、各々に高さを与える」
といった処理にしようと思ったのですが、等高線ごとに領域を分割というのがどうしたらよいのか見当がつきません
このような処理の実現のしかたを教えてください
よろしくお願いします
224デフォルトの名無しさん:2007/12/28(金) 13:06:56
ダイレクトX関係ないじゃんといいたいが

・等高線が作る一つの輪を1リングとし、リング毎の高さと領域情報を保持
・高さの同じリングをまとめたものを1グループとして管理する
・グループ毎にY座標を変えて表示する
でいいだろ

もちろん、外壁も表示するのには各リングの輪郭線から頂点を自動算出して
外壁ポリゴンも作らんといかんけど
225デフォルトの名無しさん:2007/12/28(金) 14:00:34
すみません
3次元空間内の物体をピック処理をして、マウスの移動量で移動させたいのですが

ピックするところまでいったのですが
その後マウスの移動分動かすのはどうしたらいいのかわかりません。

初期値→移動後のマウス座標を得て、それをどのように3次元空間の座標に戻すのか
視点が回転したときに、xyzの移動量と向きはどうしたらいいのか

この二つがわからなくて壁に当たってしまいました。
ご指南お願いします
226デフォルトの名無しさん:2007/12/28(金) 15:16:38
>>225
視点から注視点の面上にあるポイントを結んだ物がマウスポインタのベクトル。
そのベクトルを対象オブジェクトまで伸ばし、ベクトルが変化した分だけ移動させればいい。
227デフォルトの名無しさん:2007/12/28(金) 16:45:15
すいません>>212もお願いします。
228デフォルトの名無しさん:2007/12/28(金) 16:48:14
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 |   お断りします  |
 |________|
    ハ,,ハ ||
    ( ゚ω゚)||
    / づΦ
229デフォルトの名無しさん:2007/12/28(金) 17:02:14
>>227
質問が抽象的すぎ

>斜め投影した場合
>投影されたCG
>歪んで

それぞれ具体的に
230デフォルトの名無しさん:2007/12/28(金) 17:16:14
>>212
誘導
ttp://pc11.2ch.net/test/read.cgi/tech/1187922645/

自分の質問を読んで、他人が内容を把握出来なければ、
ただでさえ少ない回答が0になるだけだよ。

>>223
>>224
もし、等高線毎に外周形状のみ与え、後は自動って言うのなら、
等高線が穴を含む形状の場合にめんどくさくなると思う。
形状に含まれる穴の数(トポロジー)に応じて、輪郭に対する
三角分割のアルゴリズムが変わるんじゃないかな?
穴が無ければD3DPT_TRIANGLEFANで外周頂点を与えれば良いので楽だが・・。
231224:2007/12/28(金) 17:42:08
>>230
山の事しか考えてなかったな
穴がある形状を考えるのを忘れてた

まあ、そもそも論として線だけ書かれたデータをそのまま読み込んで
処理しようとすんなら無理があるわな
232デフォルトの名無しさん:2007/12/28(金) 18:33:17
頂点テクスチャフェッチ使えばできる
等高線の領域ごとにハイトデータで塗って
細分化した平面ポリゴンに適用すればできる
線のみからでもハイトデータを領域の関数で割り当てればできなくもない

自分ができないだけなのに威張ってるプログラマってカコワルイよね
233デフォルトの名無しさん:2007/12/28(金) 19:39:05
すみません、始めたばかりのところで理解できないのがあるのですが

デプスバッファの深度を書き込む/書き込まない
というのがあったのですが、そうすることでどうなるのでしょうか

デプスバッファ、というバッファ(1枚?)にZ値を書き込むというのはわかったのですが
書き込まないと、そこはどうなるのでしょうか?

いまいち何をしてるのか、したいのかが把握できなくて
234デフォルトの名無しさん:2007/12/28(金) 19:39:36
抽象的すぎてすいませんでした。

Xファイルを読み込んでCGを画面の中央に描画しているのですが、
そのCGを映しているカメラの位置をキー操作で変更できるようにしています。
で、カメラの位置を変更した場合に、
http://www.beamax.co.jp/Projec/PROJECframe.html の「斜め投影」の項にあるように歪んでみえるようにしたいのです。

D3DXMatrixIdentity(&m_view);
D3DXMatrixLookAtLH(&m_view,
&D3DXVECTOR3( cameraX, cameraY, cameraZ),//カメラの位置
&D3DXVECTOR3( 0.0f, 0.0f, 0.0f),//カメラの向き
&D3DXVECTOR3( 0.0f, 1.0f, 0.0f));//カメラの傾き
pD3DDevice->SetTransform(D3DTS_VIEW, &m_view);

一部ですが今こんな感じでカメラ配置をしています。
cameraX,cameraY,cameraZ はキー操作で増減するようにしています。
プログラムは、ソフトバンクの「DirectXゲームグラフィックスプログラミングVer.2.1Vista」という本を参考にしています。

よろしくお願いします。
235デフォルトの名無しさん:2007/12/28(金) 19:57:46
>>232
そりゃ失礼。
236デフォルトの名無しさん:2007/12/28(金) 19:58:40
まぁ、>>232も最後の1文は余計な一言だな
237デフォルトの名無しさん:2007/12/28(金) 20:10:41
>>233
最終的にスクリーンに描画するときに
各ピクセルに色を塗ると同時にそこにある物体が
カメラからどれくらいの距離にあるかをZバッファに記録しておく
そうすると
別の物体を同じピクセルに描画しようとしたときに
Zバッファの値を参照して
以前の値よりカメラに近ければ
新たな色を塗りZバッファの値も書き直す
以前より奥にあるものなら色をぬらない、という処理が可能になる

これをしないと後から描画したものでどんどん色を上書してしまうので
奥にあるはずのものが手前にあるものの上に描画されてしまう
したがって描画するときに奥にあるものから描画するというようなソート処理が必要になる
238デフォルトの名無しさん:2007/12/28(金) 20:38:08
>>234
それはビューの設定とは無関係
カメラの位置を変えたって、そんな変化は起こさないだろ
オブジェクト側を調整しろ
239デフォルトの名無しさん:2007/12/28(金) 20:45:34
>>237さん 回答ありがとうございます
つまり
 ______
|近 遠 近 …


Z値が書き込まれていって、それを参照するわけですね。
これは2次元平面に射影された状態ですよね

ある物体○△□が 奥行き方向に1列に並んでたとき
物体ごとにデプスバッファに

○ 書き込む    遠い
△ 書き込まない  ↓
□ 書き込まない 近い

としたら、最終的に一番近いのは□ですが、○が描画される、ということになるのですよね?
240デフォルトの名無しさん:2007/12/28(金) 22:27:37
>>232

線のみから求めてるわけじゃないじゃん
結局手動で山と穴の区別をつけたデータが必要だろ?
241223:2007/12/28(金) 22:31:06
>>223です
皆さんありがとうございます
231さんが仰るように「線だけ書かれたデータをそのまま読み込んで処理」というものを想定していました
穴を含む形状については今は考えず、概形が出来上がった後に改めて考えることにします
頂点テクスチャフェッチなど初めてきく言葉が沢山あるので、まずは片端から調べてみます
ありがとうございました
242デフォルトの名無しさん:2007/12/28(金) 22:41:03
>>239
違う

基本的に描画関数を呼んだ順に描画されるので
○△□の順番で描画した場合は問題ないが
□△○や△□○の順で描画した場合
一番遠いところにあるはずの○が一番上に描画されてしまう
それを防ぐために先に近いものが描画されていたら
それより遠いものを描画しないためのもの
243デフォルトの名無しさん:2007/12/28(金) 22:56:49
>>242さん
何度もありがとうございます。その点は理解できました。

描画の時にデプスバッファに書き込む物体と
書き込まない物体が混在したときにどうなるのでしょうか。
そこがわからなくて。

最終的にデプスバッファに書き込んでいる物体がちゃんとならんで
デプスバッファに書き込まない物体は描画順ということになるのですよね
244デフォルトの名無しさん:2007/12/28(金) 22:58:38
>>213
>>217
ありがとうございます
そのオプションをつけてウィンドウスタイルなどをいじってみたら、
開発環境のXPマシンだと、一応は表示されるようにはなりました

ですが、フルスクリーン→ウィンドウへと切り替えた場合に
ウィンドウ化しなかったり、古い98マシンで試してみた所
メニューを表示した瞬間に画面が激しくちらつくようになってしまったり
ダイアログは表示されなかったりと、挙動が酷くおかしいようです

とりあえずもう少しだけ教えていただいたサンプル等と見比べて
頑張ってみようと思います

最近のエロゲーとか、ホントこれどうやってるんでしょう?
やっぱり、DirectXで描画したなんちゃってメニュー&ダイアログなんですかねぇ
245デフォルトの名無しさん:2007/12/28(金) 23:07:58
そもそも標準のメニューを使っているようなエロゲーはDirect3Dなど使っていない。
246デフォルトの名無しさん:2007/12/28(金) 23:23:28
いや最近のエロゲは結構DirectX使ってるよ
とりあえず今入ってるはぴねすってエロゲーはDirectXで動作してるし
フルスクリーンメニューもちゃんと出てる
247デフォルトの名無しさん:2007/12/28(金) 23:28:55
もはや3Dも2DもDirectGraphicsで統合されてるし
248デフォルトの名無しさん:2007/12/28(金) 23:32:23
メニューやダイアログを表示中に
ゲーム画面が変化しているやつは見た事無いから、
そこに解決の糸口があるんじゃないかな。
249デフォルトの名無しさん:2007/12/28(金) 23:47:57
メニューループにはいったら普通に他は止まるだろ
250デフォルトの名無しさん:2007/12/28(金) 23:50:33
まさかとは思うが、メニューがある場所に、自分で別の物を描画しておきながら、
ちらつくとか表示されないとか馬鹿なことをぬかしているわけじゃないよな?
251デフォルトの名無しさん:2007/12/29(土) 00:13:29
>>250
ちらつく、というのはWin98環境の方だけで、XPでは画面上に
しっかりと表示されているので、それはないかと思います

>>248
いくつかフルスクリーンメニューのあるゲームを起動してみたところ
どうもメニューが出た時に画面が下にずれているものが多いようです

なんとなく思うのは、これはDirectXでのフルスクリーンモードではなくて
実際にはウィンドウモードなのではないかと。
画面いっぱいのクライアント領域をもつメニュー付きの通常ウィンドウを作って、
必要に応じてウィンドウを縦方向にずらしてメニュー表示しているのでは?

それが可能だとすると、環境によって挙動があやしげなSetDialogModeに
たよるよりも安定しそうな気もします
SetDialogModeはおいといて、まずこの方法でできるかどうか試してみようかと思います
252デフォルトの名無しさん:2007/12/29(土) 00:53:25
システムに依存することは止めたらどうかね?
253デフォルトの名無しさん:2007/12/29(土) 01:02:19
となるとダイレクトXなんて使えたもんじゃありませんな
254デフォルトの名無しさん:2007/12/29(土) 01:04:43
システムに依存しないWindowsプログラムってどんなんだよ
255デフォルトの名無しさん:2007/12/29(土) 13:56:38
問: 次の条件を満たすプログラムを作成せよ。(30点)

1) システムに依存しない
2) Windows上で動作する
256デフォルトの名無しさん:2007/12/29(土) 14:06:22
Javaを使うお
257デフォルトの名無しさん:2007/12/29(土) 14:53:21
Javaか
258デフォルトの名無しさん:2007/12/29(土) 16:42:42
DirectXのサイトって数が多い分今の自分に合ってるの探すのがきつい・・・
せめてSDKの日付とかあって欲しい。
あの,Direct3Dのプログラミング始めたいんですが何をそろえればいいですか?
バージョンは9.0でやろうとしているんですが、パッケージによって違いとかあるんですか?

もう1週間くらいネットを這いずってるんですが良く分かりません・・・お願いします。
259デフォルトの名無しさん:2007/12/29(土) 16:47:00
Javaだな
260デフォルトの名無しさん:2007/12/29(土) 16:51:05
>>258
ネットが活用できないのなら本屋に行け。
261デフォルトの名無しさん:2007/12/29(土) 17:04:48
さすがJavaだな
262デフォルトの名無しさん:2007/12/29(土) 17:06:21
実際Javaって使い物になるの?
携帯ゲームなら有りかもしれないけどさ
263デフォルトの名無しさん:2007/12/29(土) 17:11:38
何を作るかによる。
目的を定めずに手段だけを論じるのは愚か者の極み。
264デフォルトの名無しさん:2007/12/29(土) 18:16:38
>>263
そういうのはいいから。
265デフォルトの名無しさん:2007/12/29(土) 18:24:36
スレ違いの質問に対して答えをいただけただけでもありがたいと思え
266デフォルトの名無しさん:2007/12/29(土) 18:37:54
>>258
もう書かれているがマジレスすると、AmazonでDirectXで検索して、
初心者向けで売れてる本を一冊でも買ったほうがいいと思う。

別に本が優れてるとかじゃなく、ネットの活用が上手くなくて、SDKについても何も分からないんであれば
本に頼るしかないだろう。
267デフォルトの名無しさん:2007/12/29(土) 19:00:02
>>266
ご指南ありがとうございます。
どうか最後にこれだけ教えてもらえないでしょうか?
Microsoft DirectX SDK (November 2007)だけあればできますか?
268デフォルトの名無しさん:2007/12/29(土) 19:12:20
Visual Studioが必要です。
269デフォルトの名無しさん:2007/12/29(土) 19:13:35
パソコンも必要です
270デフォルトの名無しさん:2007/12/29(土) 19:27:50
気力も
271デフォルトの名無しさん:2007/12/29(土) 19:28:26
あとはJavaだな
272デフォルトの名無しさん:2007/12/29(土) 19:35:57
>>267
Windows上でここに書き込んでいるんだとすれば、ソフトウェアとして最低限必要なのは開発環境とSDKだけ
273デフォルトの名無しさん:2007/12/29(土) 20:08:24
Macなのですが、無理ですか?
274デフォルトの名無しさん:2007/12/29(土) 20:12:36
Intel Mac なら Windows をインスコすればいい。
275デフォルトの名無しさん:2007/12/29(土) 20:13:12
>>273
Javaならok
276デフォルトの名無しさん:2007/12/29(土) 20:15:34
何この流れ
釣りは無視しろよ
277デフォルトの名無しさん:2007/12/29(土) 20:16:09
Javaの人気に嫉妬
278デフォルトの名無しさん:2007/12/29(土) 20:17:10
>>256がJavaを使うなんて言ったばっかりに・・・
279デフォルトの名無しさん:2007/12/29(土) 21:17:34
>>272
まじであざーした!
がんばってみます。
280デフォルトの名無しさん:2007/12/30(日) 00:05:22
xファイルから得たポリゴンの任意の点の座標を変更する、ってのはどうやったらできる?
281デフォルトの名無しさん:2007/12/30(日) 00:09:44
データが入っている場所の頂点データをいじれよ。
282デフォルトの名無しさん:2007/12/30(日) 00:33:38
>>280
メッシュというと複雑そうにみえるが、中身は頂点バッファやインデックスバッファその他もろもろが集まってるだけ
なんでまずはロックなど頂点バッファの基本的な操作さえ覚えてしまえば後は流れ的にJavaが全て解決してくれる
283デフォルトの名無しさん:2007/12/30(日) 01:14:12
JABAすげー
284デフォルトの名無しさん:2007/12/30(日) 01:17:13
Japan Amateur Baseball Associationか
285152:2007/12/30(日) 01:39:13
こんばんは、>>152です。
画面いっぱいのウィンドウの方はできないこともなさそうな感じではありましたが
大きい→小さい画面への変更で、デスクトップアイコンや他アプリの位置等がずれるため
やめることにしました

その後もう一度SetDialogBoxModeのやり方でウィンドウのフラグをあれこれいじってみたら
フルスクリーン→ウィンドウでも上手くいくようになりました

うちにある家族用の別メーカーのXPマシンでも正常動作したようなので、
まあ、今時Win98で動かなくてもしょうがないかなぁと自分を納得させる事にしました

ささっていたビデオカードも、 GeForce4 MX440 SE というかなり昔のボードで
ドライバの配布すら終了している代物でしたので
このボードのドライバがDirectX9.0cに完全対応していなかったのかも知れません

質問に答えてくれた方々、どうもありがとうございました。
286デフォルトの名無しさん:2007/12/30(日) 01:45:57
XP以上のみサポートでぶっちゃけ問題ないよ。
287デフォルトの名無しさん:2007/12/30(日) 02:10:30
シェーダで3次元テクスチャを二つ載せようとしたのですが
なぜか片方しか表示されません。

3次元テクスチャ1つと1次元テクスチャ1つは問題なかったのですが
なぜ…

やり方教えてください
288デフォルトの名無しさん:2007/12/30(日) 14:51:57
DXライブラリみたいにビデオメモリに
直接アクセスするのってどうやるんでしょうか?
289デフォルトの名無しさん:2007/12/30(日) 15:01:00
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/programmingguide/tutorialsandsamplesandtoolsandtips/samples/clipvolume.asp

すいません、これを試してみたいのですが
どこからDLしていいのかわかりません。
といいますか、どのSDKなのかわかりません

これの実行ファイルかソースうpってもらえませんか?
290デフォルトの名無しさん:2007/12/30(日) 15:46:13
>>289
DirectXのSDKをインストールすると入ってるよ
291デフォルトの名無しさん:2007/12/30(日) 16:24:52
>>290
前にインスコしたSDKには入ってなかったのです。
Microsoft Platform SDK for Windows Server 2003 R2

また400MBも落とすのに○時間も掛かるのはシンドイっす
292デフォルトの名無しさん:2007/12/30(日) 16:50:44
  _, ._
(;゚ Д゚)
293デフォルトの名無しさん:2007/12/30(日) 17:08:18
PlatformSDKは、まぁ、ボケなんだろうけど
サンプルはSDKのバージョンによって中身がかわってるからな
少なくともAugust2007には入ってなかった
でも手元にあった9.0bSDKのCDには入ってたので
デベロッパセンターに行って
Updata〜とついてないSDKを落とせばたぶんついてくるんじゃね?
294デフォルトの名無しさん:2007/12/30(日) 17:43:16
>>291
軽量版があるからこっち使え
http://java.sun.com/j2se/1.4.2/download.html
295デフォルトの名無しさん:2007/12/30(日) 19:25:24
JAVAネタ、いい加減にしつこい
296デフォルトの名無しさん:2007/12/30(日) 21:00:51
>>292-293
ボケたつもりはなくて、、、これがSDKだと思ってました。。。

>>294
ありがとうございます。見てみます
297デフォルトの名無しさん:2007/12/30(日) 21:01:26
…JAVAですか。
確認する前に書き込んでしまいました
298デフォルトの名無しさん:2007/12/31(月) 08:36:54
自機・フィールド共にXファイルから読み込んで、3Dゲームを作っています。
自機と地面や壁との衝突判定をさせたいんですが、Xファイルから自動的に描画されているので、自分でも壁の座標が分からないです。
壁や地面の座標はどうやって求めればいいんでしょうか?
299デフォルトの名無しさん:2007/12/31(月) 09:00:36
そもそも自動で描画されるなどあり得ない。
300298:2007/12/31(月) 09:56:49
すみません。自動的というのは、頂点の座標を自分で把握していなくても描画ができるという意味です。
SDK Tutorial6のソースをほとんどそのまま利用しています。
計算式はぐぐれば出てくるんですが、計算するための座標がどこなのかが分かりません。
301デフォルトの名無しさん:2007/12/31(月) 10:01:01
まさかチュートリアルの1から5を飛ばして6やってるって
オチじゃあるまいな?
302298:2007/12/31(月) 10:10:29

4,5飛ばしてました。
今から見てきます。
303デフォルトの名無しさん:2007/12/31(月) 14:35:16
たまにエスパーが現れるから困る
304デフォルトの名無しさん:2007/12/31(月) 15:32:44
OpenGLのglFrustum()という関数をDirectXで実装しようとしています。

glFrustum()については以下のURLに解説がありました。
http://kaoken.no-ip.com/brew/index.php?im_id=glFrustum

このURLで出ているGL_PROJECTION というのは、おそらくDirectXでいうD3DTS_PROJECTION だと思っているのですが、
このD3DTS_PROJECTION の使い方がよくわかりません。
305デフォルトの名無しさん:2007/12/31(月) 15:58:19
CheckDeviceMultiSampleType() でビデオカードがマルチサンプルに対応しているか調べたのですが、
自分のものだと対応していないことが分かりました。
ビデオカードのメーカーのページにはこれに対応しているかどうかの記述がないようですが、対応している
ビデオカードはどのようにして見つければよいでしょうか?
306デフォルトの名無しさん:2007/12/31(月) 17:24:28
引数間違っている可能性が高いような。
非対応見つけるほうが大変でね?
307305:2007/12/31(月) 17:41:23
>>306
え!?
自分のカードはGeForce 8600GTで、関数の引数は以下のようにしました。

m_pD3D->CheckDeviceMultiSampleType(
           D3DADAPTER_DEFAULT,
           D3DDEVTYPE_HAL , D3DFMT_R8G8B8,
           FALSE,
           D3DMULTISAMPLE_2_SAMPLES,
           NULL ) ) )

戻り値は
D3DERR_NOTAVAILABLE
でした。

最初の引数を
pCaps->AdapterOrdinal
としても同じでした。
308デフォルトの名無しさん:2007/12/31(月) 18:07:52
てか8600GTは
D3DFMT_R8G8B8フォーマットをサポートしてるのかい?
最近のだと
D3DFMT_X8R8G8B8とか
D3DFMT_A8R8G8B8とか
309デフォルトの名無しさん:2007/12/31(月) 18:50:25
>>307
D3DFMT_R8G8B8 なんて、バックバッファはおろか、テクスチャのフォーマットとしても
対応してるアダプタなんて現時点では存在しないぞ
素直に D3DFMT_X8R8G8B8 でやれ
310305:2007/12/31(月) 20:57:54
>>308>>309
ありがとうございます。
D3DFMT_A8R8G8B8で対応してました。

実際の効果を見てみたのですが、通常のレンダーターゲットに描くときはしっかりと効いていました。
しかし、どうもアプリ内で用意したテクスチャをレンダーターゲットにすると、そこでは効かないようです。
なぜなら、レンダリングしたテクスチャを板ポリに貼り付けて通常のレンダーターゲットの全面に表示
すると、ジャギーが強く残っているからです。
(テクスチャ解像度はレンダリング対象の1/4と低いものの、AAがかかった痕跡が見られません)

テクスチャをレンダーターゲットにしたときもAAが効くようにするにはどうすれば良いでしょうか??
311デフォルトの名無しさん:2007/12/31(月) 23:58:20
今DirectDrawとDirect3Dの機能をそれぞれクラス化してるんですけど、
このクラスのインスタンスを作るとき何をstaticにして何をインスタンス作ったら
いいですか?Direct3D複数作ったらなんかやばいんでしょうか?
312デフォルトの名無しさん:2008/01/01(火) 00:09:40
>>311
質問の仕方が悪すぎる。あんたのクラスの設計も具体的にやりたいことも
わからないのに答えられる問いではないよ。

とりあえず「Direct3D複数」がIDirect3D*とIDirect3DDevice*のこと言ってんなら
複数作成するのは稀だから、まだ余計なこと考えなくていいよ。
313デフォルトの名無しさん:2008/01/01(火) 00:09:48
貴様のオナニーの仕方なんぞどうでもいい
314デフォルトの名無しさん:2008/01/01(火) 02:28:26
ttp://www.cmagazine.jp/books/effect/index.html
この本を買ったのですが、Part2の波のデモが動きません。
プロジェクトをコンパイルしようと思ったら、.net 2002なのでできませんでした。
グラボはGeForce 8600GTです。

上のサイトから、そのサンプルをダウンロードできるので、みなさんは動くか試してもらえますか?
315デフォルトの名無しさん:2008/01/01(火) 02:40:29
何も表示されないのかウィンドウすら表示されないのかエラーで起動しないのか。

「どう」動かないのかを書きましょう。
316314:2008/01/01(火) 03:20:09
>>315
すみません。
デモのプログラムは起動するのですが、波のサンプルの場面で、波が発生せず、真平らな板ポリ
状態になっています。
波は随時勝手に発生するプログラムのはずなのですが・・・
317311:2008/01/01(火) 09:53:29
>>312
すいません。そしてありがとうございます
寝ぼけてて文章まとまってなかったんですが、
ふつうDirectDrawをウィンドウモードで使う場合はLPDIRECTDRAW+LPDIRECTDEVICEを1つ作って
サーフェイスを必要なだけ作ってプライマリに転送で十分ですよね?
ただウィンドウを複数作るならウィンドウ1つにつきLPDIRECTDRAW+LPDIRECTDEVICE1つ用意
ということでよろしいでしょうか?
318デフォルトの名無しさん:2008/01/01(火) 10:26:32
あけましておめでとうございます。
こちらはManaged DirectXについての質問もOKでしょうか?
Managed DirectXスレが11月で止まってしまっているので…。
319デフォルトの名無しさん:2008/01/01(火) 10:27:03
>>316
確かにそのままだと動かないね

7900GTでは普通に動いてて
そっちで自分用に書き直したプログラムは
8600GTでも普通に動いているのだが・・・
どこ直したのか覚えてないや
320314:2008/01/01(火) 14:14:29
>>319
けっこう環境に左右されるみたいですね。
自前で組んでみようとしましたが挫折しました。

ありがとうございました。
321デフォルトの名無しさん:2008/01/01(火) 16:33:49
>>304お願いします
322デフォルトの名無しさん:2008/01/01(火) 17:13:13
>>321

OpenGL
// 行列モードに射影行列を選択
glMatrixMode(GL_PROJECTION);
// 射影行列を生成
glFrustum(,,,,

DirectX(固定機能パイプライン使用)
//射影行列を生成
D3DXMATRIX matProj ;
D3DXMatrixPerspectiveFovLH(&matproj,,,,,
//デバイスに射影行列を渡す
device->SetTransform(D3DTS_PROJECTION, &matProj);

頂点シェーダを使って行列変換をするなら
D3DTS_PROJECTIONは使わない
直接生成した行列をエフェクトに渡すなりすればいい
323デフォルトの名無しさん:2008/01/01(火) 17:18:30
あ、すまない
glFrustumなら
D3DXMatrixPerspectiveOffCenterLH
のほうが近いか
324デフォルトの名無しさん:2008/01/01(火) 17:20:25
そして、さらに連投すまそ
OpneGLは右手座標系だったね
D3DXMatrixPerspectiveOffCenterRH
ってことで
325デフォルトの名無しさん:2008/01/01(火) 17:45:33
丁寧にありがとうございます。
つまづいたらまた質問させてください。
326デフォルトの名無しさん:2008/01/01(火) 23:29:11
c#でMDIなフォームに対して、親フォーム、子フォーム、各コントロールを
DirectXで描画しようとしてよく分からなくなっています。
SwapChainとかいうのを描画対象の分だけ作るというところまでは
調べたのですが、具体的にどういう風に書けば良いのかが分からず、解説サイトを
探しているのですが、ヒットしない状況です。
c#で、そこら辺を解説してあるサイトがありましたら、教えていただけますでしょうか。
よろしくお願いします。
327デフォルトの名無しさん:2008/01/02(水) 09:04:55
すいません。
今、DirectX 9.0SDKを使っているのですが、
DirectX関連の書籍を購入したら、付属のCDに、DirectX SDK (Fedruary2007)が入ってました。
このバージョンをインストールした場合、9.0SDKを使ってた時に作った物が
動かなくなる可能性はあるでしょうか?
Fedruary2007の方は、DirectX9に対応しているSDKのようなのですが、
何か心配なので教えてください。
両方共、殆ど同じ仕様なら良いのですが・・・
328デフォルトの名無しさん:2008/01/02(水) 09:22:47
>>327
ほとんど同じではあるが
まったく一緒ではないんで動かなくなる可能性はある
メッシュやエフェクト関連で
互換性の無い変更があったので・・・・

まぁ、でもいつまでも旧バージョンに
しがみついていられるわけでもないので
いい機会だからさくっと修正してみるのも良いかもしれない
たいした変更ではないしね
329デフォルトの名無しさん:2008/01/02(水) 09:33:37
>>328
そうですか。
ありがとうございます。
メッシュ機能も使ってるので、ちょっと恐いですが、
ほとんど同じなら、動かなくならない事を祈って新しい方に変更してみます。
330デフォルトの名無しさん:2008/01/02(水) 16:14:48
DirectX9.0cで、モニタの解像度を切り替えられるようにしたいのですが、
プログラムが実行されるPCでの利用可能な解像度を取得するには
どのようにすればいいのでしょうか
331デフォルトの名無しさん:2008/01/02(水) 16:57:25
>>330

// 適当
int retW[32] ;
int retH[32] ;

// 引数は自分の調べたいアダプタとフォーマットで
int num = (IDirect3D9)->GetAdapterModeCount(D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8 ) ;

for ( int i = 0 ; i < num ; i++ ){
D3DDISPLAYMODE dm ;
DXUTGetD3DObject()->EnumAdapterModes ( D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8, i, &dm ) ;
retW[i] = dm.Width ;
retH[i] = dm.Height ;
}

332330:2008/01/02(水) 16:59:51
DXUTGetD3DObject()は忘れてくれ
そこは自分の作ったIDirect3D9インターフェースで
333デフォルトの名無しさん:2008/01/02(水) 18:35:06
線分を描画する際、線分の太さを変更したいのですが可能でしょうか?
334333:2008/01/02(水) 19:05:16
自己破産しマスタ
335デフォルトの名無しさん:2008/01/02(水) 22:27:13
>>331
ありがとうございます。うまくいきました
336デフォルトの名無しさん:2008/01/02(水) 23:31:34
3Dを回転させるのにクォータニオンを使おうと考え色々と調べたのですが思うように回転してくれません。
D3DXQuaternionRotationAxisを使う時に回転の軸を設定する必要があるようなのですが、この軸の設定がいまいち分からず・・・。
どうかこの回転の軸の設定をどうすればいいのか教えてください、お願いします。
337デフォルトの名無しさん:2008/01/02(水) 23:51:54
>>336
Matrixでyawrollpitchから生成して、matrix to quoternionで変換したら?
338デフォルトの名無しさん:2008/01/02(水) 23:52:43
>>336
クオータニオンでググれよ。
339デフォルトの名無しさん:2008/01/03(木) 14:22:30
640×480の画面と800×600の画面で全く同じ画面イメージで描画したいのですが
スクリーン座標を変換するのをDirectXが自動でやってくれるような設定はありますか?
それともバックバッファサイズを統一するとか自前で座標変換するかしかないですか?
340デフォルトの名無しさん:2008/01/03(木) 15:33:29
誰か
ttp://msdn.microsoft.com/library/ja/DirectX9_c/directx/htm/idirectdrawclippergetcliplist.asp
の引数の説明の解説求む(;ω;)
↓がダメなんじゃが・・・

RECT rc={0,0,640,480};
RGNDATA rgn={0};
DWORD size;
if(FAILED(surface->GetClipper( &clipper )))return;
if(FAILED(clipper->GetClipList( &rc ,&rgn,&size)))return;      <-ここで終ってる
341330:2008/01/03(木) 16:02:08
>>339
ビューポートの設定をきちんとすれば
アス比も一緒だしまったく同じように描画されるはずだが

>>340
SetしてないものをどうやってGetするんだ?
てか、戻り値が何かくらいチェックして報告しろ
342340:2008/01/03(木) 16:52:23
>>341
早速ありがとうございます。m(_ _)m戻り値は引数エラーのコードでした。
アホな発言かもしれないですけど、もしかしてプライマリサーフェイスって
PCのディスプレイのサイズで作られるんですか?
343デフォルトの名無しさん:2008/01/03(木) 17:40:37
>>341
レスありがとうございます。ですがさっぱりわかりません。

2Dのスプライトを同じようにしたいのですが
640×480と800×600の場合、ビューポートというのは
どのように設定すればよろしいのでしょうか?
344339 343:2008/01/03(木) 18:18:04
ちなみに今だとD3DXMatrixTransformation2Dで2D座標を取得する際に
拡大比率のX,Yの値に ( 800 pixsel / 600 pixsel ) = 1.25 を指定しています

ビューポートというのを設定するとこのやり方より処理は軽くなりますか?
345339 343:2008/01/03(木) 18:19:25
800 / 640でしたorz
346デフォルトの名無しさん:2008/01/03(木) 19:25:21
>>345
なんでそういう質問が出るのかがよくわからんが一般的に

D3DVIEWPORT9 vp;
vp.X = 0;
vp.Y = 0;
vp.Width = 640;
vp.Height = 480;
vp.MinZ = 0.0f;
vp.MaxZ = 1.0f;
(device)->SetViewport(&vp));

と設定すれば
射影行列変換後の座標を
640x480のスクリーン座標に自動変換してくれる

どういう射影行列をつくってるのかは知らんが
射影行列変換後までの座標は
x=-1〜1、y=-1〜1、z=0〜1となり
どれらいのスクリーンに引き伸ばすのか?というのが
ビューポートだと思えばいい
347デフォルトの名無しさん:2008/01/03(木) 19:25:57
348339 343:2008/01/03(木) 19:56:50
>>346
たびたびすいません。それってスプライトの座標指定を-1〜1の座標で
指定しなくてはいけないと言う解釈でいいのでしょうか?

例えば640×480のフルスクリーンの画面上で、スプライトの座標をX = 64,y = 48という
座標で指定した場合の見た目の位置と同じところに
800×600のフルスクリーン画面上でx=64,y=48というスプライト座標を指定した時に
画面上の同じあたりの位置に表示したいという事なんですが

そこで示されてるようにビューポートを指定するとこのようにできるのですか?
349339 343:2008/01/03(木) 20:00:53
ちょっと説明が足りませんでした
スプライトの描画時にx=64、y=48という座標を指定した場合に
640×480の画面の場合はX=64、y=48
800×600の画面の場合はX=80、y=60の位置に描画したいという事です
350298:2008/01/04(金) 06:27:46
SDKのサンプル見たんですが、やっぱり分かりません・・・

SDK Tutorial6のトラの代わりに、地面に見立てた板ポリゴンのXファイルをロードしています。

地面との当たり判定は(自機の高さ - 自機から垂直に降ろした直線とポリゴンの交点の高さ)
でできると思うんですが、"自機から垂直に降ろした直線とポリゴンの交点の高さ"の求め方がさっぱり分かりません。

かなり検索したんですが、数学的な解説しかしているサイトがなくて、肝心な、自分が分からない部分が書かれているサイトが見つかりません。
ヒントか答えか参考になるサイトがあったら教えてください。
351デフォルトの名無しさん:2008/01/04(金) 08:28:10
Xの読み込みをD3DXに頼らないでやるところから始めろ。
そうやって怠けて手抜きをするから途中で詰まる。
352298:2008/01/04(金) 08:59:56
>>351
D3DXライブラリというやつですか?
なんか難しそうですがやってみます。
353喜一:2008/01/04(金) 14:12:47
くだらない質問なのですが・・・
DirectXをアップデートするにはどうしたらよいのでしょうか・・・
354デフォルトの名無しさん:2008/01/04(金) 14:37:39
>>353
SDKでしたらこちらで
http://www.microsoft.com/japan/msdn/directx/

ランタイム版でしたらこちらでダウンロードしてください
ttp://www.microsoft.com/japan/windows/directx/downloads/default.mspx

とりあえず今入っているダイレクトXをアンインストールしてから
インストールがいいらしいです
355デフォルトの名無しさん:2008/01/04(金) 14:44:04
あ、ランタイム版はアンインストールの必要はないっぽいです
356デフォルトの名無しさん:2008/01/05(土) 13:59:05
>>339,343,349
D3DXMatrixOrthoOffCenterLHで射影行列を設定すればいい。
画面の左上と右下の座標値を設定するだけ。
ワールド行列とビュー行列は単位行列にする。
頂点フォーマットは未変換のもの(rhw無し)を使う。
357デフォルトの名無しさん:2008/01/05(土) 15:14:35
RHWのRHって何の略ですか?
LookAtRHとかのRHとは別物ですよね?
358デフォルトの名無しさん:2008/01/05(土) 15:29:44
reciprocal of homogeneous
359デフォルトの名無しさん:2008/01/05(土) 15:48:52
レイプ変態わいせつの略です
360デフォルトの名無しさん:2008/01/05(土) 17:09:49
システムメモリー上のサーフェイスに直接アクセスするときは
Lockしなくていいってほんと?いきなりddsd.lpSurfaceにアクセスできる?
361デフォルトの名無しさん:2008/01/05(土) 19:05:53
DirectX SDKをインストールしたんですけどインストールしたバスの場所が分かりません
一応{D¥Program}にインストールしたつもりですが{DIRECTX9SDK}が見つかりません
{Redist}{Samples}{Utilities}{Developer Runtime}{Documentation}{Extras}{Include}{Lib}はあるんですけど
プログラムの追加と削除には登録されてるみたいなんですけど肝心のバスが分かりません
バスの調べかたなど知ってる方がいたら教えてください
362デフォルトの名無しさん:2008/01/05(土) 19:48:45
VCを使ってたら知る必要もないけど別ので作るのかな
SDKはあくまで金槌や釘などと同じく道具だから本体は無い。
重要なのはIncludeフォルダとLibフォルダで、まぁ説明書と目次みたいなものか。
IncludeフォルダとLibフォルダが分かっていれば、それぞれのパスを登録するだけでOK

363デフォルトの名無しさん:2008/01/05(土) 19:57:14
レスありがとうございます
もう1つ質問なんですけど、VC++で使うにはサブシステムのバス通さなきゃいけないと思うんですけど(ネットや書籍で書いてた)
ですがdxsdk_november2007では勝手に登録してくれるんですか?
インクルードファイルに{Include}が登録されてあったり
ライブラリファイルには{Lib\x86}が登録されてるんです
ちなみにインストール前は登録されてなかったです
これはどういうことなのでしょか?この上に新しく登録しなきゃいけない?それとも自動で行われてるからやらなくていい?
分かる方いたら教えてください
364デフォルトの名無しさん:2008/01/05(土) 20:05:16
別に説明書や目次が重複しても問題ないだろ、無駄なだけで。
365デフォルトの名無しさん:2008/01/05(土) 20:17:16
なるほどじゃぁ登録します
ありがとうございました
366デフォルトの名無しさん:2008/01/05(土) 20:41:02
VisualStudio2003 Spoke VersionのMSDNライブラリにはVisualBasic以外のDirectXの解説を
インストールできますか?VisualBasicしか検索でてこないので・・・
お願いします。
367デフォルトの名無しさん:2008/01/05(土) 21:39:46
ビルドは正常終了するのにデバックだとエラーが出るんですけどどうしてなんでしょうか?
エラー文は以下の通りです


------ ビルド開始: プロジェクト: MuscatBoy, 構成: Debug Win32 ------
コンパイルしています...
StageMenu.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Stage4.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Stage3.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Stage2.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Stage1.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Ranking.cpp
368デフォルトの名無しさん:2008/01/05(土) 21:40:19
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
Option.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
MyGameLib.cpp
D:\Program\Microsoft_DirectX_SDK(November2007)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800
d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\muscatboy\MyGameLib.h(16) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory
コードを生成中...
ビルドログは "file://d:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\MuscatBoy\Debug\BuildLog.htm" に保存されました。
MuscatBoy - エラー 8、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========







よろしくお願いします
369デフォルトの名無しさん:2008/01/05(土) 21:46:35
ビルド自体失敗してるやんw
370デフォルトの名無しさん:2008/01/05(土) 21:55:46
見間違いしてましたビルドでも失敗してました
ですがこれサンプルなので自分では一切さわってないものなんですけど・・・
サンプル自体糞ということですか?
371デフォルトの名無しさん:2008/01/05(土) 21:56:01
>>368
SDkNovember2007から
DirectMusicをサポートしなくなった
372デフォルトの名無しさん:2008/01/05(土) 22:05:32
てことはAugust 2007 DirectX SDKをDLしないといけないんですね
助かりましたありがとうございました
373デフォルトの名無しさん:2008/01/06(日) 00:07:52
DirectMusicなくなっちゃったのか
音の再生はMusicしか使ってないと言うのに
374デフォルトの名無しさん:2008/01/06(日) 11:57:29
一昨日最近アップされた(?)DirectX9.0C(4.09.0000.0904)ってやつに
したんだけど、次の日からパソコンが立ち上がらなくなり(黒い画面で
左上に文字カーソルが点滅のまま)仕方ないので、F8で前回正常にっての
選んでから起動させたんだけど、今日完全に起動しなくなった・・・

人によっては、最悪なケースになるのかな?
375デフォルトの名無しさん:2008/01/06(日) 12:28:09
DirectX3位までは、ドライバまで置き換えられることがあって、
その結果起動しなくなったって話がたまにあったよね。
376デフォルトの名無しさん:2008/01/06(日) 12:34:53
DirectX「3位」ってなんだろうと思った
377デフォルトの名無しさん:2008/01/06(日) 12:36:26
d:\ゲーム製作案追加\

warota(w
378デフォルトの名無しさん:2008/01/06(日) 12:42:03
>>374
ぶっちゃけDirectXのせいじゃないんじゃね?
ランタイム入れなおしたなら
再起動求められたはずだしそのときは正常起動したんだろ?
他になにかやらかしてないかよく思い出せ

あと一昨日アップされたやつなんてあったっけ?
379デフォルトの名無しさん:2008/01/06(日) 12:45:00
>d:\ゲーム製作案追加\
ワロタw
380デフォルトの名無しさん:2008/01/06(日) 15:03:39
>>360スルーされてるけど、知らない??
381デフォルトの名無しさん:2008/01/06(日) 15:30:37
昔やねうらおがそんなこと言ってた希ガス。
http://www.sun-inet.or.jp/~yaneurao/intensive/diw1.html
382デフォルトの名無しさん:2008/01/06(日) 15:44:49
>>380
おまえは何を言ってるんだ?とか思われてる予感。

DirectX7のDirectDrawのヘルプを見る限り、
そんな保証はどこにもされていない。
ただし、現実問題としてはできるらしい、と。
非Lock状態だからといって、わざわざアドレスを動かすような理由も無いし。

ちなみに>>381のサイトは既に6年以上も前の記事だから現状は不明。
仮にLockしたところで、パフォーマンスへの影響は無いに等しい気がする。
383デフォルトの名無しさん:2008/01/06(日) 17:33:36
DirectMusicなくなったのかよ
DirectShowでMP3とかしか流せなくなったのか?
384デフォルトの名無しさん:2008/01/06(日) 18:21:16
>>381-382
禿しくサンクス
>>382
そんなこと言ったって資料は出てこないし余りにも未開の地過ぎて右も左も分からんのだよ・・・
385デフォルトの名無しさん:2008/01/06(日) 19:04:35
DirectX9のサイトとか普通にあるけど
386デフォルトの名無しさん:2008/01/06(日) 19:07:13
てか
それこそ自分で試してみれば良いんでね?
387デフォルトの名無しさん:2008/01/06(日) 19:14:08
所詮、現在のグラフィックカードは、IntelかAMDかnVidiaしかないも同然だから、
3種類試せばおkじゃね。
388367:2008/01/06(日) 21:19:00
August 2007 DirectX SDKをインストールしたのですがまたエラーがでました
分かる方いたら教えてください


'MuscatBoy.exe': 'D:\ゲーム製作案追加\アクションゲームプログラミング\マスカットボーイ\ソースファイル\MuscatBoy\Debug\MuscatBoy.exe' を読み込みました。バイナリはデバッグ情報と一緒にビルドされませんでした。
'MuscatBoy.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\user32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\gdi32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\ole32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\advapi32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\rpcrt4.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\msvcrt.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\d3d9.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\d3d8thk.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\version.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\winmm.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\d3dx9_35.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\dinput8.dll' を読み込みました。シンボルが読み込まれていません。
プログラム '[4068] MuscatBoy.exe: ネイティブ' はコード 0 (0x0) で終了しました。
389デフォルトの名無しさん:2008/01/06(日) 21:21:34
別にエラーなんか出てないだろ。
デバッグ実行してみたけど、シンボル情報がない、というInfoだけ。
最後は、MuscatBoyが終了した、ってだけ。
390367:2008/01/06(日) 21:25:23
そうだったんですか
デバック後アプリ出てこなかったのでエラーだと思ってました
ありがとうございました
391デフォルトの名無しさん:2008/01/06(日) 22:23:26
>390
悪いことは言わんからツクールでも使っとけ。
392デフォルトの名無しさん:2008/01/06(日) 22:42:35
バンプマップでメカのモールドを表現しているんですが、これだと環境光だけの陰の部分は溝が
出てこず、のっぺらりんとしてしまいます。
これの対応策としては、テクスチャで描いた溝と組み合わせる、くらいでしょうか?
他に良い方法があるようでしたらご教示ください。
393デフォルトの名無しさん:2008/01/07(月) 00:43:50
>>391
いや、最初はわけわからんだろ?
394デフォルトの名無しさん:2008/01/07(月) 00:44:59
ピクセルシェーダからスカラ値を出力 -> 入力したいんですが、
レンダリングターゲットのビット深度が最高16bit x 2だったので
それを32bit x 1にする変換を組み込みました。

// ピクセルシェーダ出力
vOutColor.x = sSrcColor * 65536.0f;
vOutColor.y = sSrcColor * 65536.0f * 65536.0f;
vOutColor = floor(vOutColor) / 65536.0f;
vOutColor = frac(vOutColor);

↑この出力を↓この入力に

// ピクセルシェーダ入力
sInColor = vSrcColor.x;
sInColor += vSrcColor.y / 65536.0f;

しかしこれだと、ノイズが乗って正しく処理できないのか画像にゴミが出ます。
普通に16bit x 1でおこなった場合はゴミは出ません。
シェーダの精度の問題かと思い、65536.0fではなく256.0fでやっても同様でした。
せっかく高精度にしたのに、逆の結果になって哀しいんですが
何でだと思いますか?
GPUはラデオン9700です。

>>392
バンプマップが光の入射ベクトルと法線ベクトルの差で
陰影をつけるテクニックなら、無指向の環境光で
陰影がつかないのはそれで正しい結果だと思うけど。
対策としては、ディレクショナルライトに変えるか
環境光に擬似的なライトの位置や方向を設定してみては?
395デフォルトの名無しさん:2008/01/07(月) 00:59:35
参考書についてきたアニメーション入りのXファイルはちゃんと動くのだが、
どっかから拾ってきたXファイル(アニメ入り)が動かない(表示はされる)。

現在は再帰でフレーム走査して云々って処理してるんだけど、
これは拾ってきたXファイルが悪いのだろうか?
ちなみにXファイルをダブルクリックして起動するソフトで見るとメチャクチャ。
396デフォルトの名無しさん:2008/01/07(月) 01:46:41
>>395
Xファイルのフォーマットに癖があるからw

少なくとも俺は、どのフォーマット(Xファイルの方言みたいなもんw)にも
対応したXファイル読み込み→表示ってのは見たことない
書き込み→読み込みも同様

ちなみに
・メッシュのみ
・フレームとメッシュ混合
・アニメーション+アニメーション対応フレーム+メッシュ
・アニメーション+アニメーション対応フレーム+メッシュ+フレーム(アニメーション非対応)
・ワンスキン
・ワンスキン+アニメーション
・スキンメッシュ+アニメーション+フレーム(アニメーション非対応)+メッシュ
・なんだかよくわからん名前でモデルのインスタンスを共用してるやつ(イミフw読めたのみたことないw)
・他多数
等、すべてに対応しようとすると組み合わせが鬼

結論:Xファイルは考えるだけ無駄(考えるな感じろ)
補足
 まあ、どっかの入門サイトでそいつができるって言った方法や内容以外の用途で使わないのが頭のいい使い方
 そうすると応用が利かないし、ツール上で1つばっかりモデル作ってはいおしまいなんてありえないから
 実際はXファイルなんて使ってなんとかしようとすると「ああ、こんなことなら違う方法でやっときゃよかった」ってなるんだよね
 ま、アニメーション使わなきゃ余裕だし、結構使えるから自分ができる範囲でなんとかしなさいな おしまい
397デフォルトの名無しさん:2008/01/07(月) 01:58:07
>>394
その式は 0.0≦sSrcColor<1.0 ならいいけど、
sSrcColor=1.0 の場合 多分 0.0 になっちゃうわね。(frac(1.0)=0.0)
vOutColor = frac(vOutColor); を
vOutColor.y = frac(vOutColor.y); (上位側(x)をfracしない)
にしてもダメかしら。
398デフォルトの名無しさん:2008/01/07(月) 02:23:52
>>397
直りました!
まさにそれでした。
ありがとうございました。
399デフォルトの名無しさん:2008/01/07(月) 02:58:12
>>394
それで本当に精度がよくなってるか、確認した方がいいかと。
俺は以前ピクセルシェーダで1/640を計算させただけで精度が悪くて
使い物にならなかったよ。
400デフォルトの名無しさん:2008/01/07(月) 09:39:25
クライアント領域全体をキャプチャして.jpgなどの画像として保存できる関数ってありますか?
401デフォルトの名無しさん:2008/01/07(月) 10:02:13
ありません
402デフォルトの名無しさん:2008/01/07(月) 13:17:11
>>396
レスサンクス。やはりフォーマットの問題だったか。
どっかでフォーマットに注意すべし!って聞いたことあったのでもしや・・・と思ったがやはり。
まぁ、注意するだけで何もできないのだけどw

つまり、アニメしなかったらグラフィッカーに文句言えばおkってことですね。
403K田:2008/01/07(月) 13:36:38
FortranをC言語に直すことが出来なくて…
やってくれ☆
404デフォルトの名無しさん:2008/01/07(月) 15:22:46
Direct3Dのついて質問です。

デバイス初期化の際にHWNDが必要ということは、複数のウィンドウが開かれるアプリケーションの場合
ウィンドウごとにデバイス初期化が必要ですよね?

ということはそのデバイスを通じてロードされるテクスチャもウィンドウ毎にロードする必要があるのでしょうか?

例えばAというPNGファイルをロードしたテクスチャを、ウインドウAでもウインドウBでも使いたい場合、A用B用と@別個にロードするのでしょうか?
VRAMもったいないなぁという気分なのですが…)
405デフォルトの名無しさん:2008/01/07(月) 15:55:00
406デフォルトの名無しさん:2008/01/07(月) 16:16:10
>>405
>1 つの Direct3D デバイスのみを使う。複数のターゲットにレンダリングする必要がある場合は、SetRenderTarget を使います
これですね
ありがとうございます。
昔作ったSwapChain管理クラスひっぱりだします(何のために作ったのかを失念してましたわ…)
407374:2008/01/07(月) 17:51:32
>378
すいません、一昨日というのは4ゲーマーを見た時でした。
で、インストール完了後は再起動を求められなかったのでその日は
そのままパソコンを落としたと・・・
で、次の日に起動したらその症状が出てたという訳です(^^;
408デフォルトの名無しさん:2008/01/07(月) 18:04:43
>>402
データを追ってどこに問題があるのか確認するのがプログラマの仕事だろ。
使えないなら自分でまともなエクスポータを書いてグラフィッカーに渡
409392:2008/01/07(月) 18:59:03
>>394
>陰影がつかないのはそれで正しい結果だと思うけど。
それを承知の上での質問です。

>環境光に擬似的なライトの位置や方向を設定してみては?
なるほど!
ありがとうございました。
410304:2008/01/07(月) 21:49:45
今まで、

// 射影行列の初期化
D3DXMatrixIdentity(&m_proj);
D3DXMatrixPerspectiveFovLH(&m_proj,
D3DXToRadian(45.0f),//カメラの画角
aspect, //アスペクト比
1.0f, //Nearプレーン
1000.0f); //Farプレーン
pD3DDevice->SetTransform(D3DTS_PROJECTION, &m_proj);

と参考書のサンプル通りにしていたところを、>>322-324さんのを参考に

D3DXMatrixIdentity(&m_proj);
D3DXMatrixPerspectiveOffCenterLH(&m_proj,
-CLIENT_WIDTH * 0.5f,
CLIENT_WIDTH * 0.5f,
-CLIENT_HEIGHT * 0.5f,
CLIENT_HEIGHT * 0.5f,
1.0f,
1000.0f);
pD3DDevice->SetTransform(D3DTS_PROJECTION, &m_proj);

に変更しました。

すると、Xファイルを読み込んでCGを描画していたのですが、表示されなくなってしまいました。
何が原因なのでしょうか?
411デフォルトの名無しさん:2008/01/07(月) 22:20:14
>>410
OffCenter の引数をちゃんとカメラ座標系で指定しているか?
412デフォルトの名無しさん:2008/01/07(月) 23:19:34
シェーダ解説本を見ていると、アプリケーションからシェーダ変数を設定する際にハンドルを介して
行うものがありますが、直接"(シェーダ変数名)"で指定するのに対し、どういった利点があるのでしょうか?
413デフォルトの名無しさん:2008/01/07(月) 23:27:33
>>412
パフォーマンスが上がる
ハンドルは固定なので
一番最初に一度だけ取得するだけで良い
414412:2008/01/07(月) 23:31:05
>>413
なるほど!
ありがとうございました!
415デフォルトの名無しさん:2008/01/08(火) 00:32:52
C言語でコンパイルすると○○(ファイル名).OBJが開けませんと出るんですが、
原因は何でしょうか?
416415:2008/01/08(火) 00:33:48
すみません、誤爆しました。
417デフォルトの名無しさん:2008/01/08(火) 00:47:05
設定されているパスにそのOBJがないからです
418410:2008/01/08(火) 17:13:47
すいません、これを忘れていました。

#define CLIENT_WIDTH 770
#define CLIENT_HEIGHT 480

>>411
DirectXは左手座標系ですよね。

-CLIENT_WIDTH * 0.5f = -335
CLIENT_WIDTH * 0.5f = 335
-CLIENT_HEIGHT * 0.5f = -240
CLIENT_HEIGHT * 0.5f = 240

になるので、特におかしくない気がするのですが…。
419デフォルトの名無しさん:2008/01/08(火) 17:37:23
>>418
glFrustumも
D3DXMatrixPerspectiveOffCenterLHも
クライアントサイズを指定するものじゃないぜ

OpenGLの知識があって
OpenGLのプログラムをDirectXに移植するとかで
こんな面倒なことしてるんじゃないのか??
420デフォルトの名無しさん:2008/01/08(火) 21:18:19
そもそもDirectXに座標系など無い。
決めているのはプログラマ自身でDirectXは何の関係もない。
421デフォルトの名無しさん:2008/01/08(火) 21:39:36
使ってるモデリングソフトにあわせると吉
そうでなくても吉
422デフォルトの名無しさん:2008/01/08(火) 22:21:10
目的がよくわからんな
2Dと同じ座標感覚にしたくて
ニアクリップ面を画面サイズに合わせて
適正な画角になるようにカメラを設置するってことなのか?
423デフォルトの名無しさん:2008/01/08(火) 22:50:11
2Dゲーなら大事だけど3Dゲーではたいして大事ではない
424デフォルトの名無しさん:2008/01/08(火) 23:14:47
ファーストフードにはあるけどコンビニにはない。
auにはあるけどdocomoにはない。
425410:2008/01/08(火) 23:29:33
すいません、実は>>234も私なのですが、目的は「斜め投影変換」です。
OpenGLの知識は全然ありません。
OpenGLなら↓のURLのように、glFrustumを用いれば実現できると聞いたので、DirectXでglFrustumを実装しようとしていました。
(ttp://www.vsl.gifu-u.ac.jp/techinfo/view/index.html)
426デフォルトの名無しさん:2008/01/09(水) 00:54:37
行列変換理解しろ。
427デフォルトの名無しさん:2008/01/09(水) 00:57:46
無理じゃねぇかなぁ
428デフォルトの名無しさん:2008/01/09(水) 13:28:35
glFrustumもD3DXMatrixPerspective*****も
あくまで透視変換をするための行列を生成するものだから
どういじろうと物体が歪んだりはしない
簡単に言うと
カメラの近くにある物を大きく遠くにある物を小さく描画するためのもの
もし行列変換でやるなら
その斜め投影変換とやら専用の行列を生成する必要がある

てか斜めにしたいだけなら
適当な板にレンダリングして頂点を移動するだけでいい気もするんだが
そもそもなんでそんなことしたいわけ?
429デフォルトの名無しさん:2008/01/09(水) 15:55:45
>>425
411,419が何を言ってるのか理解できるまで、もっと勉強しる。

410のパラメータのD3DXMatrixPerspectiveFovLHで得られた行列と
D3DXMatrixPerspectiveOffCenterLHで得られた行列を見比べるだけでも
何が間違っているのかなんとなく分かるだろう。
D3DXMatrixPerspectiveOffCenterLHに何を与えれば、元の行列と同じ行列が
得られるのか考えてみろ。
430デフォルトの名無しさん:2008/01/10(木) 00:22:50
DirectX9.0cなのですが、
DirectMusicで、今現在再生しているセグメントの曲の再生が
終了したかどうかというのを調べるにはどうすればいいのでしょうか

再生終了していればそのセグメントを開放し、そこを別の曲に差し替えたいのですが
肝心の終了したかどうかの判別の仕方がわかりません

知っている方いたら教えてください。よろしくお願いします
431430:2008/01/10(木) 21:50:25
自己解決しました
432デフォルトの名無しさん:2008/01/11(金) 00:06:25
自己じゃねえだろ
マルチな上に嘘まで書くのかよ
433430:2008/01/11(金) 00:58:35
>>432
あなたがマルチとおっしゃっているのは外部サイトの話ですか?
そこを見ればわかりますが、自分で解決していますよ。
それ以外の方法も教えてもらうことができましたけど。

それに、このスレッドのテンプレには外部で質問してはいけないなどと書いてないですし。
色々なサイトを利用して、できる限りの情報を集める事がそんなにいけない事なのでしょうか?
どのスレでも同じルールだと決め付けるのはやめましょう。
434デフォルトの名無しさん:2008/01/11(金) 01:06:08
>>433
一般的な常識として、複数箇所に同じ質問を投げるのは避けるべきです。
435デフォルトの名無しさん:2008/01/11(金) 01:06:33
>>430 >>432じゃないが、マルチと分っててやってるなら尚更だが、
そういうのはいけない事。どのスレでも・・・・とかのLvじゃなくて、ネットでは原則的なぐらいのルール。

436デフォルトの名無しさん:2008/01/11(金) 01:09:59
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88
http://www.ippo.ne.jp/g/53.html
http://e-words.jp/w/E3839EE383ABE38381E3839DE382B9E38388.html
ここらにも書いてあるが、ネット創世記からある基本的なマナー違反。
マルチポストはスレや板のルールとか以前の問題。
437デフォルトの名無しさん:2008/01/11(金) 01:10:24
心がせまいなぁ
俺ルールをネット原則とかもうね
438デフォルトの名無しさん:2008/01/11(金) 01:13:07
そうそう、「俺様ルール」を持ち出して、マルチを正当化するなんてどうかしているよね。
439430:2008/01/11(金) 01:20:38
>>436
はあ。ネット原則なのかどうかはともかく、嫌う人も多いのだということですね
こちらで答えてくれる人が早くいらっしゃれば、外部で質問する事もなかったのですが…
これからはなるべく気をつけて書き込む掲示板を選ぶ事といたします。
ご忠告どうもありがとうございました
440デフォルトの名無しさん:2008/01/11(金) 01:22:32
訳 : 使えねー掲示板だな。もうこねーよヽ(`Д´)ノ
441デフォルトの名無しさん:2008/01/11(金) 01:25:30
いいんじゃねーの別に。マルチ嫌うって感覚はよくわからんよ
しょせん掲示板なんて使い捨てなんだしさ
442デフォルトの名無しさん:2008/01/11(金) 01:26:00
ネチケットもしらねえのか
443デフォルトの名無しさん:2008/01/11(金) 01:28:11
ネチケットわきまえてるような人種はここにはいないんじゃないかな
444デフォルトの名無しさん:2008/01/11(金) 01:36:07
ま、向こうの解答者は間違ってるけどな
IsPlayingはスピーカーで音が鳴ってるかどうかを判断するものだから
Playした直後でも鳴ってないという結果になる場合がある
結局の所、メッセージ拾う方が確実に終了を検知できるんだよ
445デフォルトの名無しさん:2008/01/11(金) 01:45:16
446デフォルトの名無しさん:2008/01/11(金) 02:15:20
所詮MSですから
447デフォルトの名無しさん:2008/01/11(金) 02:34:32
ネチケットとかもう死語じゃね?

掲示板であろうとログが残り、そのログは将来同じような問題を抱えた人間にとって有益なものとなりうる。
複数サイトでの同様の質問は検索を困難にさせ、解決方法を見つけにくくなる。
そうなればまた同じ質問をすることになる。ネットの世界であろうとリソースは有限なので無駄であることに変わりはない。

とかキモイこと書いてみましたw
ぶっちゃけ回答する側の人間はいろんなサイトを回っていることが多く、マルチは実際問題よく見かける。
解決したならその方法や、今回の場合であれば解決した側のサイトのアドレスでも張ってくれれば多少はよかったかな?
448デフォルトの名無しさん:2008/01/11(金) 03:12:44
むしろ複数サイトに書いてあったほうがみつけやすくていいよ
449デフォルトの名無しさん:2008/01/11(金) 03:16:00
何も答えもしない相手に解決方法書く馬鹿がどこにいるんだよ
450デフォルトの名無しさん:2008/01/11(金) 03:50:47
一箇所にしかない答えってのは結局、他の可能性を潰してるだけだと思うんだ
その答えが真である保証だってどこにもないんだから
一箇所にしかない答えより、複数の答えがある方がずっといい
451デフォルトの名無しさん:2008/01/11(金) 04:02:03
ぶっちゃけそんなの気にする奴はたいしていない
短気な奴の方が声が大きいのはネットもリアルも同じと言うだけの話
452デフォルトの名無しさん:2008/01/11(金) 07:13:46
俺は2ちゃん以外みてないからマルチOKだよ
マルチが嫌な人は2穴責めが嫌な人だと思う
453デフォルトの名無しさん:2008/01/11(金) 10:30:38
これはひどい自演ですね。
454454:2008/01/11(金) 10:37:00
自己解決しました
455デフォルトの名無しさん:2008/01/11(金) 11:04:12
カスラックみたいな事言うなよ
コピーワンスなんて馬鹿馬鹿しいものが導入されたせいで
後世に文化を繋ぐことが困難になってしまったというのに
456デフォルトの名無しさん:2008/01/11(金) 11:18:57
カスラックは好かんけどコピーワンスと文化云々は関係ねーだろ(w
457デフォルトの名無しさん:2008/01/11(金) 11:44:31
関係あるだろ
マイナー番組を録ったメディアが劣化したら取り返しが利かなくなるんだから
458デフォルトの名無しさん:2008/01/11(金) 12:16:58
>>452
ケツの穴のちいさい奴だな
459デフォルトの名無しさん:2008/01/11(金) 13:07:00
俺はマルチよりあおいちゃんの方が好きだな
460デフォルトの名無しさん:2008/01/11(金) 13:19:03
なんでDirectX関連以外の話題だと盛り上がるんだよw
461デフォルトの名無しさん:2008/01/12(土) 00:18:54
DirectXゲームグラフィックスプログラミングVer.2.1Vistaのサンプルで


//カメラのパラメータ設定
// ビューポートの取得
D3DVIEWPORT9 vp;

if(FAILED(pD3DDevice->GetViewport(&vp))) {
return;
}

// アスペクト比の計算
float aspect;
aspect = (float)vp.Width / (float)vp.Height;
(以下略)

とあるのですが、
vp.Widthとvp.Heightを見てみると0と770になっていました。
vp.Widthが0になっているせいでaspectが正常に取得できません。
なぜ0になっているのでしょうか?
462デフォルトの名無しさん:2008/01/12(土) 00:28:18
>>460
俺がよく燃える燃料を投下してしまったからorz
463デフォルトの名無しさん:2008/01/12(土) 03:34:32
>>461
SetViewportしてないからじゃ
ちゃんと設定してるかい?
464デフォルトの名無しさん:2008/01/12(土) 17:48:14
direct Showの解説してるサイト知ってる方居たら教えてください。
VC++6.0です。
465デフォルトの名無しさん:2008/01/12(土) 17:56:30
Direct Show 解説で検索
466デフォルトの名無しさん:2008/01/12(土) 19:15:18
>>465 お前に聞いてない。
467デフォルトの名無しさん:2008/01/12(土) 20:05:43
DirectShow で解説、だよなあ。
468デフォルトの名無しさん:2008/01/12(土) 20:09:50
解説じゃなくて検索だった。
469デフォルトの名無しさん:2008/01/12(土) 20:23:03
これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
470デフォルトの名無しさん:2008/01/12(土) 20:45:04
>>468 お前に聞いてない。
471デフォルトの名無しさん:2008/01/12(土) 21:41:06
>>463
セットしないといけないんですね。
サンプルに見当たらなかったので追加してみました。

//カメラのパラメータ設定
// ビューポートの取得
D3DVIEWPORT9 vp;

if(FAILED(pD3DDevice->SetViewport(&vp))){
return;
}

if(FAILED(pD3DDevice->GetViewport(&vp))) {
return;
}


// アスペクト比の計算
float aspect;
aspect = (float)vp.Width / (float)vp.Height;
(以下略)

すると、
Direct3D9: (ERROR) :Viewport width or height is zero or negative
というエラーが延々とでてきてしまいました。
もしかしてSetViewportの使い方間違ってます?
472デフォルトの名無しさん:2008/01/12(土) 21:48:49
SetViewportは自分でビューポートのサイズを指定するんだYO・・・
473デフォルトの名無しさん:2008/01/12(土) 22:26:41
もはや頭が悪いとか言うレベルじゃないぞ。
474デフォルトの名無しさん:2008/01/12(土) 22:37:02
DirectXを理解していないとかC++を理解していないとかじゃなく
プログラミング自体を理解していないんだな
475デフォルトの名無しさん:2008/01/12(土) 23:10:35
ワロタ(w

エラーメッセージくらい読めよ
476デフォルトの名無しさん:2008/01/13(日) 03:23:18
そんなエラーメッセージ出してくれるのか
親切だなw
477デフォルトの名無しさん:2008/01/13(日) 06:35:13
VC++2005ExpressEdition  DirectX 9.0を使用しています。
Game.h Game.cpp Input.h Input.cppというファイルで入力によって値を変えようとしてるんですけど、Game.h内で
class Game{
 <略>
privete:
  struct AIRPLANE{
    FLOAT v;
    FLOAT roll;
    FLOAT pitch;
  }airplane;
}
と構造体を宣言して、Input.cpp内で構造体の値を入力によって変えたいんですがうまくいきません。
  error C2061: 構文エラー : 識別子 'AIRPLANE'
とエラーが出てしまいます。Input.cppの実際に値を変えようとしているところは
#include "Input.h"
 <略>
void Input::GetInput_Game(AIRPLANE airplane){
  if(KEY_Z == TRUE){
    airplane.v += 0.001f;
}
でInput.hのクラスでは
"Game.h"をincludeして
void GetInput_Game(AIRPLANE airplane);
としています。キー入力はうまくいくのですが、構造体の受け渡しがうまくいきません。includeのやりかたが悪いのでしょうか?
478デフォルトの名無しさん:2008/01/13(日) 07:23:11
ひょっとしてそれはギャグでいっt
479デフォルトの名無しさん:2008/01/13(日) 09:49:30
             . ィ
.._ .......、._    _ /:/l!
 :~""''.>゙' "~ ,、、''‐'、|         _
゙、'、::::::ノ:::::::_,.-=.  _〜:、         /_.}'':,
 ``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ
 ,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:'  ノ゙ノブ
"   .!-'",/  `'-‐'') /\ `/ でノ-〈
 .-''~ >'゙::    ‐'"゙./  ヽ.,'   ~ /
   //:::::       ',    /    ,:'゙
480デフォルトの名無しさん:2008/01/13(日) 09:57:14
>>477
君それ、DirectX全く関係ないから。
DirectXに手を出す前に、とりあえず君はコンソールアプリでも作って
クラスと構造体、引数の受け渡しの勉強をしなおせ

// 構造体定義
typedef struct {
  FLOAT v;
  FLOAT roll;
  FLOAT pitch;
} AIRPLANE;

// クラスメンバに構造体を加える
class Game
{
private:
 AIRPLANE airplane;
 (略)
};

void Input::GetInput_Game( Game *game )
{
  if( KEY_Z == TRUE )
  {
    game->airplane.v += 0.001f;
  }
}

どういう動作をさせるつもりだか知らんが、だいたいこんな感じか
481デフォルトの名無しさん:2008/01/13(日) 10:15:02
志村ぁ、属性属性!
482デフォルトの名無しさん:2008/01/13(日) 11:19:15
ああすまんwprivete→privateだけ気になってて間違えた
privateじゃなくてpublicねw
483デフォルトの名無しさん:2008/01/13(日) 15:25:11
ありがとうございます。
上手くいきました。
484デフォルトの名無しさん:2008/01/13(日) 17:44:37
DirectX SDK を使いたいんだけど、インストールの仕方がいまいちわからんのです。

いろいろ試したところ以下の操作でビルドできるようになったけど、これって正しい?
1. DirectX 9.0b SDK をダウンロードして c:\dx90bsdk に展開する
2. DirectX SDK - (November 2007) をダウンロードして c:dx90bsdk に上書きコピーする
3. インクルードパスに c:\dx90bsdk\Include を追加する

アドバイスあればお願いします。
485デフォルトの名無しさん:2008/01/13(日) 17:50:40
普通に実行すればインストーラーが勝手にやってくれるだろ
頭にウジが涌いているのか?
486デフォルトの名無しさん:2008/01/13(日) 17:54:33
>>484
1はいらない
2はアップグレードじゃないので単体で動作する
むしろ、前のバージョンのSDKは抜くべき
3はその動作だけじゃ足りないはず
わからなければ入門書を買ってきたほうがいい
時間とお金を考えたら1人で考えるのは無駄かもわからんね
本は自分で立ち読みして探せ

致命的なのは1と2
なんでこんなことした?
普通に最新のSDKをダウンロードしてこい
アップグレードキットはない
487デフォルトの名無しさん:2008/01/13(日) 18:03:11
>485
まず DirectX 9.0b SDK をインストールしてビルドを試みたところ、最近のコードをビルドできなかった。
で、DirectX SDK - (November 2007) をダウンロードして上書きコピーしたらとりあえずビルドできた。

「そんなことしなくても○○をDLして入れればおk」とかアドバイスがあれば知りたいなと思って聞いてみた。
スマン>485
488デフォルトの名無しさん:2008/01/13(日) 18:10:20
>>486
アドバイスありがとう。明日、本屋にいってみるよ。
489デフォルトの名無しさん:2008/01/13(日) 18:30:40
ばーか
490デフォルトの名無しさん:2008/01/13(日) 19:07:33
>>487
>ダウンロードして上書きコピーしたら
これ駄目
レジストリとか環境変数とかなんも考えないのか?
ファイルだけ書き加えて動くもんなんてそうそうないから
動いた→OK
は全体の構造を把握してない限りありえない

一度アンインストールしてもう一度インストールしなおせ
その状態で進めるとまた問題が起こったときに何が原因かさっぱりわからなくなるぞ
491デフォルトの名無しさん:2008/01/13(日) 19:16:51
DirectX9.0c以上ってどれをダウンロードしたらいいんですかね?
いつも確認したら8.0になってるんですよ・・・
492デフォルトの名無しさん:2008/01/13(日) 19:22:45
Windows95はDirectX8.0aまでの対応だよ。
493デフォルトの名無しさん:2008/01/13(日) 19:38:56
そうだ
まずOSのバージョンの確認からだな
たまに古いの使ってる分際で開発なんてしようと思うキチガイがいるから閉口する

とりあえずXPにしろよな
つか、もっというと金がない奴はゲーム開発なんてやろうと思うな
色々楽をしようとするたびに出費がかさむ職業だぞw

なんでもケチるとなんにもできない上になんにもわからない
だからなんのゲームもできない

入門書のこともそう
読めばわかるようなことだけど自分で調べるとなるとひと月ふた月平気で過ぎていく
なんにも金を出さないと2年たっても3年たってもいつまでたってもゲームなんかできない
494デフォルトの名無しさん:2008/01/13(日) 20:45:34
5000円の参考書買って役に立たなくても
「はずれか、チッ」としか思わなくなるようでないとだめ
495デフォルトの名無しさん:2008/01/13(日) 20:56:55
古い環境での動作、古い環境での開発が求められる場合もあるだろ
まあガキの遊び程度だったら新OSでやった方が色々と楽だが

あと、別に今時本がなくったって検索ワードを使いこなす技量があれば
さほど情報に困ることはない
もちろん本があるにこしたことはないけどね

楽をしようとするたびに出費がかさむというのには同意
馬鹿は大人しく金を使った方がいい
496デフォルトの名無しさん:2008/01/13(日) 21:00:35
VC++2005の本を買ったけど、.NETフレームワーク開発が主体だと気づいて
結局ほとんど使ってない俺
497デフォルトの名無しさん:2008/01/13(日) 21:21:23
>>493は言い過ぎかもしれんが、俺も専門書にかかる出費はけちるべきではないと思う。
498デフォルトの名無しさん:2008/01/13(日) 21:25:59
この分野はプログラミングの中でもニッチな方だから、
Web常に情報の蓄積がなく、本にしか書いてない基礎的情報も多い。
499デフォルトの名無しさん:2008/01/13(日) 21:26:18
>>495
ていうか、調べてもいいけど該当する情報を見つけるまでかなりかかる場合もあるしね
お前が本がなくてもなんてのは本を十分みたり、たくさんの人と話す機会があって何かを学んだいま
だからこそいえることだろ?

なくてもいいというにもたくさん本をみたうえでないとなくてもいいといえないわけだから
そういう情報なんだよね必要なのって
あるものごとを決める平均値みたいなもの、最適な判断材料は糞も糞なりに全部みないと
最後の解は得られない

たくさんの選択肢を判断できるだけの情報力があればあとは時代が変わるごとの
差分値だけで済む

こうなってしまっている状態の人間を基準にしてもしょうがない
はじめはなんでも買ってなんでも吸収する気でないととても普通にプログラムが作れるレベルまで届かない
低賃金の割りに意外とつらいと思うぜ
500デフォルトの名無しさん:2008/01/13(日) 21:56:42
ごめん。俺本買ったことないけど、使いこなせてるや。
501デフォルトの名無しさん:2008/01/13(日) 22:03:39
金出して買う程の書籍とかないよな。
ネットで十分。
502デフォルトの名無しさん:2008/01/13(日) 22:04:50
まあ初心者レベルの情報だったら買うほどのこともないだろう
本屋に通えるだけの行動力があればいい
503デフォルトの名無しさん:2008/01/13(日) 23:10:22
>>500
わかってるつもりで実はわかってない
ってのはよくある
ゲーム系から業務系にいったときにちょっとだけ苦労した

実務の正確さがちょっと足りなったかな
精度を高めるためにちょっとした苦行がいった
でもそれだけだったけどw
504デフォルトの名無しさん:2008/01/13(日) 23:12:43
ゲーム系は速さ重視だからな
業務系だとどうでもいいような決まりが多そうだ
505484:2008/01/13(日) 23:35:48
484です。
個人サイトとか MSDN とかを見て Visual Studio 2008 Express Edition で
DirectX SDK のサンプルをビルドして実行できるようになった。
特に >>486 のコメントが参考になったよ。どもです。

ところで、DirectX (特に3D) プログラミングをするのにおすすめの本とかある?
ネットで十分っていうコメントもあるけど。

ちなみにスキルは win32 API プログラミングはペゾルト本で一通りやってて、
ベクトル・行列の計算は苦にならない感じ(予習したから)。
506デフォルトの名無しさん:2008/01/13(日) 23:38:51
すすめられる程の本は無い。
ネットでOK。

DirectXに特化した本はロクなのない。
507デフォルトの名無しさん:2008/01/13(日) 23:41:35
>>505
1冊も買わないか
全部買って良いとこ取りするかのどっちかしかない
1冊あればOK的な本はない
508484:2008/01/14(月) 00:53:51
>>506 >>507
そうか。しばらく DirectX SDK のサンプルと API リファレンスでがんばってみる。
509デフォルトの名無しさん:2008/01/14(月) 02:47:22
>>508
一冊も買わないなんて効率悪いだけだと思うぜ俺は
細かい技術が足りてないくせにできると思ってる奴のいうことだと思う

俺のこれまでの経験でいうとネットなんてざっとしか載ってない
おおざっぱに知るだけ知って知った気でいる分にはそれでもいいけど
はじめはいろんな本を読んでまず技術の土壌を固めるべき
そっちのが速い

いらないとか言ってる奴は自分は過去に他の分野の本を読んで細かい技術を身につけてる場合が多い
そういう奴は新人とか育てるのものっすごい下手なのであまり信用しないほうがいい
これまで自分が出会った人とかちょっとの間でも教え請うた人の存在とかすっかり頭から抜けてる
馬鹿で恩知らずな奴なのでもうこういう奴が技術的に伸びることはもうない

本を読むことは人を知ることでもある
ネットでは薄い
色んな人の色んな考えを吸収するには本をたくさん読む必要がある
プログラム構成がめちゃくちゃ下手糞な奴とかいるけど
アイディアが浮かばないとか素質がないんじゃなくて単純なスキル不足である場合がほとんど
グローバル変数・関数使いまくりのままとか糞なソースばっかり書いて何年たってもグローバル変数を使う初心者のままとか結構ザラw
510デフォルトの名無しさん:2008/01/14(月) 03:12:43
>509
それじゃ、一冊本のタイトルあげてみ?
511デフォルトの名無しさん:2008/01/14(月) 03:19:24
まあ本買うやつなんて旧世代の人間だけだな。
512デフォルトの名無しさん:2008/01/14(月) 03:23:01
>>510
誰向けの?
513デフォルトの名無しさん:2008/01/14(月) 03:23:06
本だったら電車の中とか布団の中とか喫茶店でも読めるだろ
514デフォルトの名無しさん:2008/01/14(月) 03:29:22
DirectX SDK のサンプルってどうやってみれるの?
515デフォルトの名無しさん:2008/01/14(月) 03:29:44
>512
俺に聞かんでも自分で良書と思うもんあげればおk。
516デフォルトの名無しさん:2008/01/14(月) 03:39:21
>>514
DirectX Sample Viewer
517デフォルトの名無しさん:2008/01/14(月) 03:40:32
俺のオススメ

Game Programming Gems 1-6 日本語版 (単行本)
ゲームプログラミングのための3Dグラフィックス数学 (単行本(ソフトカバー))

難しいので初心者にはオススメできないけど
絶版になる前には買っておいてほしいと思う

初心者にいいと思ったのは

irectX ゲームグラフィックス プログラミング Ver. 2.1 Vista [NextCreator] (NEXT CREATOR) (大型本)
ゲームエフェクトマニアックス (C MAGAZINE) (大型本)

がおもしろいと思った
小さいプログラムを組みながら覚えるといいと思う

読んでないけどなんかいいかなと思った本は

アクションゲームプログラミング (大型本)

ホントに初心者がアクションゲーム作れるようになるかどうかやってみてくれw
518484:2008/01/14(月) 03:46:42
>>512
たしかに自分が win32 API プログラミングを調べていたころを思い出すと
ペゾルト本を読まなければ理解に時間がかったかも。
一度理解すれば API リファレンスでなんとかなるけど
道しるべとして本を頼るのも手だな。
519デフォルトの名無しさん:2008/01/14(月) 04:03:11
>>509
おちつけ
何か嫌なことでもあったか?
520デフォルトの名無しさん:2008/01/14(月) 04:09:23
>>509の社内人間関係を綴った本が出版されたら買う(w
521デフォルトの名無しさん:2008/01/14(月) 09:02:00
>>509は将来会社を引っ張っていく貴重な存在。
522デフォルトの名無しさん:2008/01/14(月) 12:08:48
俺も一冊では足らず、DirectXでゲーム制作する本を四冊くらい買ったかな
しかしどうしても本では理解できず
最終的にネットの情報に助けられた事もあるのも確かだな
国内のサイトじゃなかったけど
523デフォルトの名無しさん:2008/01/14(月) 14:23:21
Managed DirectXでお勧めの入門書ってある?
洋書で黒い表紙の本がなかなか良かったんだけど、
和書だと見つからないんだよトニー
524デフォルトの名無しさん:2008/01/14(月) 14:33:57
>>523
ないと思う。自分もさらっと調べてみた事あるけど
XNA以上に日本じゃ通らないような感じうけるしねぇ。

きっと和訳やその他の場合でも出版で十分なリターンが見込めない領域と思われてる
そう邪推するぐらいにはManagedはないねぇ。
525デフォルトの名無しさん:2008/01/14(月) 14:43:21
C++/CLIでMDXしたいよぅ
526484:2008/01/14(月) 14:46:55
大きめの本屋2件まわって「マスタリングDirectXプログラミング」を買ってきた。
ttp://www.amazon.co.jp/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0DirectX%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E6%A9%8B%E5%8F%A3-%E3%82%86%E3%81%86%E3%81%99%E3%81%91/dp/4797340258

立ち読みした感想
DirectX 関連本は工学社の緑色の本がいっぱいあったがどれも内容は微妙だった。

「DirectX 9プログラミング入門」は DirectX SDK のサンプルプログラムを載せて、ほんの少しコメントを足しただけのひどい本だった。
前書きにだまされて思わず買ってしまうところだった。
ttp://www.amazon.co.jp/DirectX-9%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80-Windows-2000-XP%E7%89%88/dp/4886487262/ref=sr_1_13?ie=UTF8&s=books&qid=1200288761&sr=1-13

他にも何冊か読んだけど、あんまりいい本ないな。
ネットだけで十分っていう人はひどい本つかまされたのかな。
527デフォルトの名無しさん:2008/01/14(月) 15:02:52
それなら、「ネットだけで十分」じゃなく、「本は使えない、ネットの方がマシ」ってなるだろ
先に国語の教科書買った方がよかったんじゃない?
528デフォルトの名無しさん:2008/01/14(月) 15:22:41
工学者のDirectXの本はヘルプをなぞるようにできてるだけだけど
色んな要素がつながってない初心者には全体が見渡せていいと思う

俺は超オススメ
ただ、緑っぽい外装で中身が違う類似品があるので中身は見て買わないとw
529デフォルトの名無しさん:2008/01/14(月) 16:50:52
>>523
ManagedってUnmanagedとどう違うの?
関数名やクラス名が違うだけであんまり変わらないと思うんだけど。
530デフォルトの名無しさん:2008/01/14(月) 17:14:43
.NETかそうでないか
531デフォルトの名無しさん:2008/01/14(月) 17:18:42
>>516
ありがとうございます
532デフォルトの名無しさん:2008/01/14(月) 17:21:13
>>517
Game Programming Gemsはなかなか絶版にならないよ
533デフォルトの名無しさん:2008/01/14(月) 17:23:10
>>517
初心者用の2Dアクションゲーム本ならソフトバンクから出してるよ
534533:2008/01/14(月) 17:26:44
あっ出てたw
535デフォルトの名無しさん:2008/01/14(月) 18:17:53
>>533
うーん、ただ2Dで満足してほしくないな
3Dを知ってる人間が作る2Dゲームのほうが圧倒的に出来がいいからw
536デフォルトの名無しさん:2008/01/14(月) 18:45:14
>>535
初心者本ね
537デフォルトの名無しさん:2008/01/14(月) 19:03:29
3Dを知ってるのと2Dゲームの出来は別に関係ないよ
エフェクトに3Dを使う事もあるだろうけど、それは純粋な2Dゲーではないから
もっとも、DirectX自体が2Dを3Dの一部とする考え方なので
2Dゲーを作るにも3Dの知識が少しは必要になる
538デフォルトの名無しさん:2008/01/14(月) 19:13:47
>>537
全然わかってないな
見た目は2Dでもゲームの空間を3Dにする技術のことを言ってるんだよ
表現次第でグラがいくら2Dでもゲームの空間を3Dにすることは可能
3Dの機能なんて理解してて当たり前
539デフォルトの名無しさん:2008/01/14(月) 19:32:33
だからそれは見た目2Dなだけの3Dゲーだっての
540デフォルトの名無しさん:2008/01/14(月) 19:33:25
タクティクスオウガみたいなのを想定しているのか?
541デフォルトの名無しさん:2008/01/14(月) 19:35:27
>>538が2Dゲーだと思ってるのは3次元上にビルボードを貼り付けた
3Dゲーの事を言ってるんだろ
542デフォルトの名無しさん:2008/01/14(月) 19:41:14
レイフォースが使ってる表現なんかのことじゃないの?
543デフォルトの名無しさん:2008/01/14(月) 19:46:57
まあFFなんかでも2Dの美麗マップ上を3D空間座標で
キャラが移動してたりするからな

それを2Dゲーと見るか3Dゲーと見るかは人それぞれ
544デフォルトの名無しさん:2008/01/14(月) 20:04:59
>>543
そうそうそういうことそういうこと
高低差とか奥行きとかあるマップとか理解してもらえるといいと思う
螺旋階段とかw
545デフォルトの名無しさん:2008/01/14(月) 20:05:57
ま、一般的には3Dゲーって言うけれども
546デフォルトの名無しさん:2008/01/14(月) 20:18:54
>>545
2Dゲーっていうんじゃない?
だって見た目3D機能使ってないように見えるんだよ?
内部の演算まで見通して「あ、これ3Dだ」っていえないと思うんだよね
2Dでうまくやってるかもしれないし
547デフォルトの名無しさん:2008/01/14(月) 20:20:34
あらかじめレンダリングしたデータを 2D で持ってるだけっしょ。
z-order などを工夫して立体っぽく見せてるだけで。
548デフォルトの名無しさん:2008/01/14(月) 20:29:45
本当に重要なのは2Dか3Dかではなく、回転有りか無しかだけどな。
回転無しの3Dは全然難しくない。
549デフォルトの名無しさん:2008/01/14(月) 20:40:41
正確には、回転と移動の組み合わせが難しい。
思い通りに座標点を制御するのはプログラムそのものだけじゃなく、
最低でも高三以上の線形代数の知識が必要。
550デフォルトの名無しさん:2008/01/14(月) 21:24:40
Release()し忘れたDirectxTextureなどを検出する方法ってありますか
551デフォルトの名無しさん:2008/01/14(月) 21:33:32
CComPtrでも使っとけ
552デフォルトの名無しさん:2008/01/14(月) 21:45:45
>>517
アクションゲームプログラミング (大型本)持ってるけど玄人以外にはいいと思う
ページ構成は糞だけど
553デフォルトの名無しさん:2008/01/14(月) 21:52:11
>>547
3Dを表現した2Dの絵に当たり判定(地形なども含む)を合わせるときなんかは
どうしても内部は3Dでもったほうが楽だ

フラグとか利用して根性で2Dでも表現できるっちゃできるけど、
開発が長引いたときに地獄みると思うw
554デフォルトの名無しさん:2008/01/14(月) 22:00:34
回転を一切使わない3Dって成り立つのか?
555デフォルトの名無しさん:2008/01/14(月) 22:02:55
>>554
何の話だよw
カメラ固定なら拡大縮小だけでいけるんじゃね?w
556デフォルトの名無しさん:2008/01/14(月) 22:10:59
スマブラみたいに基本を2Dで、モデルを3Dでっていうのは成り立つ。
そういうのはあんまし線形代数の知識はいらん。
557デフォルトの名無しさん:2008/01/14(月) 23:03:41
>>556
GCで出たのは結構小技が冴える出来だったけどな
板ポリレーザーなんだけどカメラをぐるぐるまわしてもちゃんとレーザーに見える・・・みたいな
558デフォルトの名無しさん:2008/01/15(火) 01:37:58
>>554
ジャンプできる2Dアクションゲームは大抵、中身は回転を一切使わない3Dだよ。
古い例だとサークとか。
559デフォルトの名無しさん:2008/01/15(火) 12:52:33
VRシステムは回転をサポートしていません。
560デフォルトの名無しさん:2008/01/15(火) 22:59:20
パースペクティブシャドウマップで質問です。
スポットライトの場合、
matrix4x4 toShadowSpace = cameraView * cameraProj * lightView * lightProj;
のようにするのが一般的だと思いますが、このlightProjの作り方がわかりません。
cameraの射影空間では、スポットライトのコーンがひしゃげてしまい
ワールド空間のように、コーンから一意に射影行列を求める訳にはいきません。
現在はひしゃげたコーンから近似的に射影行列を作っていますが、
満足のいく精度ではありません。世の中一般ではどうするのが普通なんでしょうか?
561デフォルトの名無しさん:2008/01/15(火) 23:09:00
LPDIRECT3DTEXTURE9 pTexture;
と宣言していて、デストラクタで
pTexture->Release();
と解放しようとすると
0x004897d1 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xcccccccc を読み込み中にアクセス違反が発生しました。
とエラーが出てしまいます。
初期化では
D3DXCreateTextureFromFile(pD3DDevice,"sample.bmp",&pTexture)
としています。

環境はdirectx9.0 , Visual C++ 2005です。
解放の仕方が悪いのでしょうか?
562デフォルトの名無しさん:2008/01/15(火) 23:10:17
ロード失敗したのに解放しようとしてるとか
563デフォルトの名無しさん:2008/01/15(火) 23:21:09
>562
そう思って
if ( pTexture != NULL ) {
pTexture->Release();
}
としてみたんですが、それでもエラーが出てしまいます。
564デフォルトの名無しさん:2008/01/15(火) 23:23:54
NULLで初期化してる?
565デフォルトの名無しさん:2008/01/15(火) 23:30:11
>564
やってないことに気づいて
if(FAILED(D3DXCreateTextureFromFile(pD3DDevice,"select_back.bmp",&pTexture))){
pTexture = NULL;
return E_FAIL;
}
としてみましたが、やはりエラーが出てしまいます。
566デフォルトの名無しさん:2008/01/15(火) 23:38:02
if ( pTexture != NULL ) {
pTexture->Release();
pTexture = NULL;
}

次はこれだ!
・・・なーんか違うような気もするが・・・w
567デフォルトの名無しさん:2008/01/15(火) 23:39:19
なんかたくさん聞かなきゃいけないけど
そもそもD3DDeviceは取得できてるの?
それとテクスチャロードして、それ使って表示できてる?
568デフォルトの名無しさん:2008/01/15(火) 23:43:14
当然アドレスは調べたんだろうな。
569デフォルトの名無しさん:2008/01/15(火) 23:46:55
>567
すいません、初期化やる場所が悪かったみたいで、コンストラクタ内でやったらか解決しました。
ありがとうございます。
570デフォルトの名無しさん:2008/01/16(水) 00:07:06

} catch (...) {
571デフォルトの名無しさん:2008/01/16(水) 00:31:47
変数の初期化は、その変数を最初に作ったときに必ずするべきだ
クラスのメンバ変数なら全てコンストラクタで初期化すべし
572デフォルトの名無しさん:2008/01/16(水) 07:25:37
>>569
はぁ?
しばらく悩みそうだなお前・・・w
573デフォルトの名無しさん:2008/01/16(水) 19:55:28
Win32APIはある程度書けるけど、DirectXはまったく知らないって状態なんだけど
どの本買って勉強すればいい?
574デフォルトの名無しさん:2008/01/16(水) 19:55:57
ネットで十分
575デフォルトの名無しさん:2008/01/16(水) 20:20:53
そもそも何をしたいのかすら説明するのを面倒くさがる、
その必要性を鑑みることの出来ない人間が何をやっても無駄。
576デフォルトの名無しさん:2008/01/16(水) 20:48:54
>>575
氏ね
577デフォルトの名無しさん:2008/01/16(水) 21:32:46
反論できずに罵倒しか出てこない場合、図星だったってことだ
578デフォルトの名無しさん:2008/01/16(水) 21:45:24
>>573
人生論(トルストイ著)
579デフォルトの名無しさん:2008/01/17(木) 18:34:42
DirectMusicが 2007November からなくなってしまいましたが、代替手段はどうしていますか?
やっぱりDirectSoundでゴリゴリ書くしかないのでしょうか……
580デフォルトの名無しさん:2008/01/17(木) 23:31:32
581579:2008/01/18(金) 18:39:32
>>580
情報ありがとうございます
まだ混沌としているみたいですね。落ち着くまで古いバージョンのSDK使うことにしました
582デフォルトの名無しさん:2008/01/18(金) 19:30:02
SDIで開発してるんですが、各コントロールにリアルタイムで動くグラフを書きたいんですが、
SwapChainであってるんですか?
またその後の方法もわからんです・・・
583デフォルトの名無しさん:2008/01/19(土) 07:26:10
スレ違いの予感
グラフ描くだけならGDIで事足りるだろ
584デフォルトの名無しさん:2008/01/20(日) 01:20:27
統合シェーダ型GPUって、DirectX9.0でも動的にVS、PSの振り分けしますよね?
585デフォルトの名無しさん:2008/01/20(日) 06:33:59
>>584
ドライバーの設計次第。
586584:2008/01/20(日) 10:02:27
>>585
ありがとうございました!
587デフォルトの名無しさん:2008/01/20(日) 10:34:34
>>573
本が好きなら本屋で自分好みのDirectX本を探せ

あと、どうでもいいコメントはスルーしろ
588デフォルトの名無しさん:2008/01/20(日) 21:08:22
DirectXを使ってWindowsゲームを作ろうとしてます。

買った教則本ではDirectX 9bを使ってましたが、
Microsoftのサイトに行くと、
9とか10とか数字のバージョンが書いてなくて、
DirectX SDK (Novemeber 2007)というのがありました。

これでいいんでしょうか?
589デフォルトの名無しさん:2008/01/20(日) 21:24:57
当然C++は理解してるんだろうな?
590588:2008/01/20(日) 21:29:48
>>589
俺あてでしょうか?
大丈夫です。CとC++は1ヶ月くらい勉強しました。
591588:2008/01/20(日) 21:41:07
Novemeber 2007をインストールしてみたら、
教則本で使ってる<d3dx9.h>ってのが入ってたので、
9も使えるっぽい感じでした。
592588:2008/01/20(日) 21:58:32
と思ったら"d3dx9dt.lib"と"dplayx.lib"がないです。。。
前者は"d3dx9d.lib"で代用できるっぽいですが、後者はないんでしょうか。
593588:2008/01/20(日) 22:27:22
つまずきました。。。InitD3d(hWnd)ができません。
エラー「'InitD3d': 識別子は、引数依存の照合を使用しても見つかりません。」
#include <d3dx9.h>はできてるのに、なんで?
594デフォルトの名無しさん:2008/01/20(日) 22:38:59
>>588
http://www.microsoft.com/downloads/results.aspx?freetext=DirectX%20SDK&DisplayEnglishAlso=true&sortCriteria=date&displaylang=ja
まず必要なバージョンを調べて入れろ。
分からなきゃ教則本と同じバージョンを入れろ。
教則本を一通り終えるまでここには書き込むな。
595588:2008/01/20(日) 22:39:58
<d3dx9.h>に入ってるのかと思ったら、
InitD3dは自前の関数だったようです。。。
596デフォルトの名無しさん:2008/01/20(日) 22:50:10
また今度な。いちいちお前のレポでスレ消費したくない
597デフォルトの名無しさん:2008/01/20(日) 23:29:11
>>595
気持ちは分かるがんばれ
598デフォルトの名無しさん:2008/01/20(日) 23:53:46
>>588
ここの住人は辛口だが、これくらいで挫折するなよ。
それからはじめから全部理解しようとするな。

まず本に書いてあるとおりに開発環境を整えて、
DirectX SDKのサンプルコードをビルドして実行しろ。自力で。
599デフォルトの名無しさん:2008/01/21(月) 00:28:08
>>593
全然C/C++理解してねーだろw
600デフォルトの名無しさん:2008/01/21(月) 00:57:46
>>599
上げんなクソガキ
601588:2008/01/21(月) 02:20:31
初心者質問スレなんだからいいじゃん。。。
なんとか2Dのスプライト描画ができました。
602デフォルトの名無しさん:2008/01/21(月) 02:48:25
お前のチャットルームじゃねーんだよ甘えんな糞ガキ
603デフォルトの名無しさん:2008/01/21(月) 03:12:59
はたしてクソガキに見えるレスをしているのはどちらだろうか。
604デフォルトの名無しさん:2008/01/21(月) 03:48:21
>>603
ズバリあなたです。
605デフォルトの名無しさん:2008/01/21(月) 04:16:20
お前らクソガキクソガキ書きたいだけちゃうんかとクソガキが
606デフォルトの名無しさん:2008/01/21(月) 05:29:49
>>601
分からないなら参考書と同じSDKを入れるのが一番いいと思うぞ
607デフォルトの名無しさん:2008/01/21(月) 08:11:44
最近ARToolkitがはやっているので使ってみようと思いましたがどうもうまくいきません.
Direct3D9.0cをつかってメッシュとWebカメラからの動画の合成をしたい.
色々やってみるけどマーカーを移動させても方向はあっていても明らかに移動量が違ったり回転する軸が違ったり.

行列の生成までは多分問題ないと思うからOpenGL形式の行列(double[16])からDirectX形式の行列(D3DXMATRIX)への変換がうまくいっていないのだと思う.
arGetTransMat, argConvGlpara関数で作られたdouble[16]の配列をD3DXMATRIXに変換するにはどうすればいいですか?

ウィンドウサイズは640x480で背景に同じサイズのWebカメラから入力した動画を貼り付けている.
プロジェクション行列はD3DXMatrixOrthoLH(&proj, 640, 480, 1.0f, 1000.0f);
ビューイング行列にARToolkitで作った行列をセットして一辺50.0の長さの立方体を描画する.
608デフォルトの名無しさん:2008/01/21(月) 09:58:33
>>607
たしかOpenGLとDirect3Dでは、行列の行と列が逆だけどそれは直してる?
それとOpenGLは右手座標系だから、そこも直さないと駄目かな。
表示だけできればいいなら、プロジェクション行列を〜RH系の関数で生成するのが
手軽でいいかも。全体を右手座標系で統一する必要があるけどね。
609607:2008/01/22(火) 05:53:56
>>608
変換行列は転置しました.
けど右手→左手の変換に手間取っています.
行列計算は関数にたよりきりで行列の中身はブラックボックスとしてプログラムしてたので,Z軸を反転させればいいという話ですけど,どの成分をいじればいいのか試行錯誤しています.

またD3DXMatrixOrthoRHで変換してみると物体が消滅しました(変なところに移動したみたい),あれー?
double[16]からD3DXMATRIXへの行列のコピーで単純に間違っているのかもしれません.

今日右手→左手への変換のサンプルソースが手に入ったのでそれを参考にがんばってみます.

アドバイスありがとうございました.
610デフォルトの名無しさん:2008/01/22(火) 13:40:42
すみません質問です。

SLIって、作る側で特に何かやらなくても、
ハード側で構成されていれば自動的に有効になるんですか?
自宅にSLI環境がないため、試すことができないので質問しました。

また、2枚のボードででSLIを構築した場合、
DirectXでデバイス数を取得した場合は1が返ってくるのでしょうか?
611デフォルトの名無しさん:2008/01/22(火) 16:52:48
>>610
その通り。
612デフォルトの名無しさん:2008/01/22(火) 17:14:37
あざーっす!
613デフォルトの名無しさん:2008/01/22(火) 17:16:00
D3DCOLOR_ARGBマクロでは255までの値、
D3DXCOLORのコンストラクタでは1.0までの値を指定するんですか?
614デフォルトの名無しさん:2008/01/22(火) 22:22:24
2D画像を画像の中心座標を基点に回転して描画させたいんですが、

D3DXMATRIX matrix;
D3DXMatrixRotationZ(&matrix, 角度);
ID3DXSprite::SetTransform(matrix);

とすると、(0,0)を基点に画面全体で回転してしまいます。
指定した座標を基点に回転させる行列を作る関数ってないでしょうか?
615デフォルトの名無しさん:2008/01/22(火) 22:56:47
>>614

wmatrix=ワールドマトリクス
matrix1=演算用マトリクス1
matrix2=演算用マトリクス2

D3DXMatrixRotationZ( &matrix2, 角度 );
D3DXMatrixMultiply( &matrix1、&wmatrix、&matrix2 );
D3DXMatrixTranslation( &matrix2, スプライトの移動値 );
D3DXMatrixMultiply( &matrix1、&matri1、&matrix2 );

lpSprite->SetTransform( matrix1 );
lpSprite->Draw( lptex, lprect, lpcenter, NULL, color );←ここのlpcenterにテクスチャ中心座標を入れる

だいたいこんな感じで
616デフォルトの名無しさん:2008/01/22(火) 23:22:06
ありがとうございます。非常に助かります。
617デフォルトの名無しさん:2008/01/22(火) 23:29:44
DirectShowを用いて二つのカメラからの信号をそれぞれサンプルグラバフィルタを使用して入力し、
RGB情報をカメラごとの配列に入れて画像処理で用いたいのですが、なかなかうまくいきません。
どのようにすればいいか、ご教示願えませんでしょうか。
618デフォルトの名無しさん:2008/01/22(火) 23:49:54
すみません、質問です。

MicrosoftのページからDirectXをインストールしようとしているのですが、
最終的に「インストールに失敗しました」と出ます。
インストールしようとしたときに、空き容量が少ないので、
〜〜クリーンアップを行うとも出ていましたが関係はあるのでしょうか?

状況の情報が少ないですが、改善の方法はありますか?
619デフォルトの名無しさん:2008/01/23(水) 00:00:35
連続ですみません。

「コンポーネントのインストール」初期化しています・・・・というのが出て、
「ファイルをダウンロードできませんでした。後でもう一度実行するか、ネットワーク接続を確認してください。」
が表示されます。
英語版をダウンロードしてみたり、ダイヤルアップでしてたりするのですが、うまくいきません。
何かパソコンに問題があるのでしょうか?
620デフォルトの名無しさん:2008/01/23(水) 00:02:30
>>617
スレ違い

>>618
エロ動画を削除しろ
621デフォルトの名無しさん:2008/01/23(水) 00:31:15
ゲームを作りたいんですが、
描画にかかる時間が不安定で、処理スピードを一定にできません。

IDirect3DDevice9::Present( NULL, NULL, NULL, NULL );

これだけを実行するのに、だいたい1ミリ秒もかからないんですが、
連打すると何回かに一度16ミリ秒以上かかるところがあります。

秒間60回描画したいので、1回の描画が16ミリ秒を超えて欲しくないんですが、
回避方法はありませんでしょうか?
622デフォルトの名無しさん:2008/01/23(水) 00:54:28
PCゲームで秒間60回固定なんて夢物語です。
フレーム数を少数で計算するなりして、その増分コマを進めるなどで
対応しましょう。
623デフォルトの名無しさん:2008/01/23(水) 00:56:10
D3DPRESENT_INTERVAL_DEFAULT
624デフォルトの名無しさん:2008/01/23(水) 01:02:03
>>623
それは描画を待つってだけで超えてるものの対処にはならんでしょ
625622:2008/01/23(水) 01:05:00
>>623
どうもありがとうございます。
626デフォルトの名無しさん:2008/01/23(水) 01:06:39
俺レス番ずれてるのかな
627621:2008/01/23(水) 01:21:08
621でした...

>>624
D3DPRESENT_INTERVAL_DEFAULTとtimeBeginPeriod(1)で、
長くとも1回10ミリ秒を超えることはなくなりました。
628デフォルトの名無しさん:2008/01/23(水) 01:29:36
>>627
確実に1コマずつ表示する事にそれほど重要性がないのなら
>>622のようにした方がいいと思うよ。

最初はそれでもいいだろうけど、処理が増えていけばそう簡単じゃないんだし
PCの環境によっても変わってくる。
629621:2008/01/23(水) 01:47:57
>>628
そうですね。
うちのPCは結構ハイスペックなので、
他の環境のことも考えて工夫してみます。
630デフォルトの名無しさん:2008/01/23(水) 04:30:37
>>621
それで正常。

ttp://www.atmarkit.co.jp/fdotnet/directxworld/directxworld01/directxworld01_03.html
>他方、最近の環境ではドライバ層以下でも比較的長大なパイプライン処理が行われている。
>マイクロソフトは、ドライバに対する画面更新命令がウィンドウ当たり最大3回までキューイングされることを許している

Presentがキューイングされた場合はそもそも画面更新が完了する前にメソッド呼出しから戻ってくる。
一方キューイング数に最大3回という縛りがあるので、それを超えそうなときは
少なくとも1回分の画面更新が終わるまで待たされる。
これは別に嫌がらせをしているわけじゃなくて、GPUを遊ばせないための最適化の結果。

確かにPresentで常に描画完了を待つようにしたらPresentの挙動は安定する。
でもこの場合GPUの性能を100%引き出すのは難しくなる。
これはDirect3D9だと変なトリックが必要だけどVista以降ならAPIで設定可能。
631610:2008/01/23(水) 08:49:51
たびたび質問すみません。

SLIを構成した際にデバイスが一つと認識されるのはわかったのですが、
そこにもし2つのディスプレイをつなげてデュアルモニタにした場合も
シングルGPUのデュアルモニタ同様に、DirectX9ではデバイスが2つ認識されて
マスタデバイスが一つとなるのでしょうか?
632621:2008/01/24(木) 01:14:51
>>630
情報ありがとうございます。

ビデオカードによって違うと何がいいか決めるのは難しいですね。
あまり固定にこだわらず、性能重視で考えてみることにしました。
633デフォルトの名無しさん:2008/01/24(木) 07:54:59
>>631
予想に過ぎんが、たぶんそうなるんじゃないか?
634デフォルトの名無しさん:2008/01/24(木) 23:52:56
D3DXCreateBox()で一辺が100.0の立方体は作成、表示できるのですが、
メタセコで立方体を作成、Xファイルで保存し、Xファイルを読み込んで一辺100.0の立方体を表示するにはどうすればいいのですか?
どこで大きさを指定できるのか、すればいいのかがさっぱりわかりません。

実際は立方体でなくもうちょっと複雑な物体を表示したいので、
Xファイルでなんとかしたいです。
635デフォルトの名無しさん:2008/01/25(金) 00:23:50
>>634
DirectX関係ないやん・・・

基本図形から立方体を選択
「作成」を押す前に「詳細設定」で各軸のサイズを100にする
Xファイル出力するときに
出力オプションで拡大率を1に直してから保存
636デフォルトの名無しさん:2008/01/25(金) 17:54:57
初歩的な質問ですみません。
DirectX逆引き大全500の極意のサンプル(088 メッシュをレンダリングする)を用いて自分で作成したメッシュを表示させたいのですが実行しても何も表示されません。
メッシュのほうはDirectX Viewerでは正常に見ることができます。

何が原因なのか教えていただけないでしょうか。
637デフォルトの名無しさん:2008/01/25(金) 19:26:41
>>636
ぱそこんがこわれてなければ
がんばればなおるよ!

                     ハ_ハ  
                   ('(゚∀゚∩ なおるよ!
                    ヽ  〈 
                     ヽヽ_)
638デフォルトの名無しさん:2008/01/26(土) 07:32:33
>>635
関係ないといいつつ答えてくれる優しさに感動した
うまくいきましたありがとう
639デフォルトの名無しさん:2008/01/26(土) 21:39:04
これからDirectXの勉強始めようと思うんでオススメの本教えておくれ
640デフォルトの名無しさん:2008/01/26(土) 21:51:51
真面目な話、C/C++ちゃんと理解してればSDK付属のチュートリアルとヘルプで充分。
641デフォルトの名無しさん:2008/01/26(土) 22:46:17
DirectXを勉強する前にWin32APIも理解している必要ある?
ウインドウ生成までのソースが長すぎて挫折しそうorz
642デフォルトの名無しさん:2008/01/26(土) 22:56:57
C++でやるならWin32とCOMの基本は知ってて当然
643デフォルトの名無しさん:2008/01/26(土) 22:59:40
COM は DirectX を通して勉強したので俺は特に問題なかったが。
644デフォルトの名無しさん:2008/01/27(日) 01:55:10
>>641
ウインドウ作るのに必要なAPIなんて5つくらいだろ。
それで挫折するような奴がDirectXなんて扱えるわけないだろ。
645デフォルトの名無しさん:2008/01/27(日) 02:07:51
1000行以上の他人のソースを一日で全部理解できるぐらいじゃないと
646デフォルトの名無しさん:2008/01/27(日) 02:35:07
WinAPIなんて単語の集合体
647デフォルトの名無しさん:2008/01/27(日) 03:07:13
1000行ってずいぶん少ないなw
648デフォルトの名無しさん:2008/01/27(日) 03:09:59
Xファイルからメッシュを読み込んで半透明表示したいんですけど以下のような方法でメッシュをレンダリングしたら半透明化できるファイルとできないファイルがあります.
具体的に半透明化できるのはMetasequoiaLEで出力したXファイル,半透明化できないのはRokDeBone2で出力したモーションXファイルです.
どっちも形状はでてくるんですけどRokDeBone2で出力したXファイルは以下のように材質指定しても陰影は着いているものの真っ白なままなんです.

D3DMATERIAL9 m;
ZeroMemory(&m, sizeof(D3DMATERIAL9));
m.Diffuse = D3DXCOLOR(1.0f, 0.0f, 0.0f, 0.8f);
p->SetMaterial(&m);
pMesh->DrawSubset( 0 );

原因はなんなのでしょうか,どうしたら半透明化できるのでしょうか.
649デフォルトの名無しさん:2008/01/27(日) 04:25:57
>>647
一日で理解する量としては適度だと思うけど
650デフォルトの名無しさん:2008/01/27(日) 04:46:16
>>649
詳細まで理解するとなるとちょっときついな
フラグの1つ見逃しただけで内容が逆転することもあるしね

概要をつかむ分にはいいけど

理解できる=詳細動作まで完璧

と理解されると困るね
プログラム知らない奴と仕事で語りたくない内容だな
相手にとっての
理解できる=XX
がどの程度の話か底が見えない

仕事で「できた」の内容をバグが1つもでないまで
完璧ととらえる人ととりあえず動く程度の人とで報告する内容が変わるのといっしょだというと
ちょっと理解できるかな?
651デフォルトの名無しさん:2008/01/27(日) 16:52:02
>>641
VC++ と DirectX SDK で開発するなら、
『プログラミング Windows 第5版(上)』の「第3章 Windows とメッセージ」を読んで
Win32 API プログラミングの概要を理解することをおすすめするよ。
30ページくらいだから立ち読みできるだろ。
DirectX プログラミングで GDI とかコントロールは使わないから
3章以外はあまり理解しなくていい。
金があるなら上巻だけでも買って実際にサンプルコードを打ち込めば理解が深まると思う。
652デフォルトの名無しさん:2008/01/27(日) 16:59:26
つか、SDKのサンプルは驚くほどの最小コードでウィンドウ作ってたなw
653デフォルトの名無しさん:2008/01/27(日) 18:13:01
directx初期化でつまづいてしまった・・・
初期化のチュートリアルは読みました。
ウィンドウを先に作り、それからdirectxの初期化をやったのですが
どうやら書き方が違うらしく強制終了してしまいます。
メッセージボックス突っ込んで試したところ
メインループ(Present())あたりで止まってしまいます。

プログラムがかなり汚いですが、わかる方お願いします。
http://www.uploda.net/cgi/uploader4/index.php?file_id=0000026050.udn
URL怪しいけど.cppファイルです
654デフォルトの名無しさん:2008/01/27(日) 18:20:26
>>650
この場合、他人のコードを呼び出すわけじゃなくて
実際に類似コードを書く必要があるから
詳細まで把握してないと結局は躓くことになるよ

「とりあえず動く程度」にも人それぞれ程度が違うけど
それでも出来る限りバグ取りをしてからでないと
それが溜まって後で苦労することになるし
655デフォルトの名無しさん:2008/01/27(日) 18:21:23
>>653
デバイスロストでもしてるんでね。
つーか別スレッドにしろ。
656デフォルトの名無しさん:2008/01/27(日) 18:24:48
>>653
てか、なんでWinMainで描画処理やってるんだよ
WM_PAINTでやれ
657デフォルトの名無しさん:2008/01/27(日) 18:31:46
で、WM_PAINTを呼び出すためには適度のタイミング(例えば60分の1秒とか)で
InvalidateRectで再描画指定してやる
658デフォルトの名無しさん:2008/01/27(日) 18:35:23
別にWM_PAINTで描画することとPresentで止まることは関係ないだろ
恐らくデバイスロストなんだろうが
659デフォルトの名無しさん:2008/01/27(日) 18:47:47
で、肝心の問題部分は、見た感じ

D3DPRESENT_PARAMETERSのhDeviceWindowにウィンドウハンドルが指定されていない
LPDIRECT3DDEVICE9のGetBackBuffer()でバックバッファーを取得してない

多分これが原因だと思うよ
660デフォルトの名無しさん:2008/01/27(日) 18:59:38
>>659
さすが・・・
パっと見てこういったことが分かるようになるまで何年くらいかかるんでしょうか?
661デフォルトの名無しさん:2008/01/27(日) 19:02:23
単に自分のやってるのと比較しただけだよ
ある程度手順を知っている人なら誰でもわかるよ

まあこれを直せばちゃんと動くかどうかは知らんけどw
662653:2008/01/27(日) 19:10:36
こんなにレス付くとは・・・ありがとうございます。

描写する前から間違ってるとは・・・
どうやら初期化で使用する型をよく調べなかったせいで
初歩的な失敗していたようです。
完全に知識不足でしたもう少し勉強してからにします
あとWM_PAINTに書かなかったのは描写のタイミングが知りたかっただけです。
本当にありがとうございました。
663デフォルトの名無しさん:2008/01/27(日) 19:11:52
どう見ても精子です
664デフォルトの名無しさん:2008/01/28(月) 01:47:32
Microsoft DirectX SDK (Nov 2007) をDirectX Developer Centerからダウンロード しインストール後、
”C:\Program Files\Microsoft DirectX SDK (November 2007)\Samples\”の下にManagedフォルダがありませんでした。
すべての”Managed\Common”以下のサンプルを入手する方法を教えてください。
(とりあえずdxmutmisc.csが必要なのですが・・・。)
665デフォルトの名無しさん:2008/01/28(月) 11:19:34
「vectorを使った動的配列」の配列、ってのは作れないのでしょうか?

vector<int> num[10];

みたいな形は受け付けてくれませんでした。
複数用意した各動的配列に対して同じ処理をやりたいのですが、
配列にできないとforとかでまとめられなくて困っています。
666デフォルトの名無しさん:2008/01/28(月) 11:26:56
その質問のどこにDirectXが出てくるのかね?
667デフォルトの名無しさん:2008/01/28(月) 11:28:30
>>665
つ[std::vector<std::vector<int> >]
つーか、スレ違い。
668デフォルトの名無しさん:2008/01/28(月) 11:44:46
>>666
全力で誤爆しました、ごめんなさい。

>>667
どうもありがとうございました!
669デフォルトの名無しさん:2008/01/28(月) 13:18:34
>>664
ReadMe見りゃわかるがNovember 2007からManagedのサンプルとドキュメントが削られてるよ。
前バージョンのSDKから引っぱってくるしかない。
670デフォルトの名無しさん:2008/01/28(月) 20:58:40
Xファイルをexeファイルの中に埋め込むにはどうすればいいのでしょうか?
671デフォルトの名無しさん:2008/01/28(月) 21:06:36
リソース
672デフォルトの名無しさん:2008/01/28(月) 21:50:19
>>670
素早い反応ありがとうございます
無事xファイルをリソースに登録することができました
たびたびで申し訳ないのですが質問をさせてください

リソース移したxファイルを
前まで入れていた "***.x" の部分へ持ってくることはできないのでしょうか?
673デフォルトの名無しさん:2008/01/28(月) 22:29:12
VC++/DX9です
 リリースビルドのとき、LPDIRECT3DDEVICE9の関数を呼ぶと
access violationがおこりプログラムが強制終了してしまいます。
LPDIRECT3Dの関数を呼んでも問題はないみたいです。
どなたか原因わかりますか

struct DirectX{
LPDIRECT3D9 lpdirect3d;
LPDIRECT3DDEVICE9 lpdirect3ddevice;
D3DLIGHT9 light;
D3DXMATRIX gProjection, view, world;
LPDIRECT3DSURFACE9 depthBuffer;
Camera camera;//D3DXVECTOR3を3つまとめたもの
};
ここが問題の部分みたいです
if(!(app->directX->lpdirect3d = Direct3DCreate9(D3D_SDK_VERSION)))
return -1;
D3DDISPLAYMODE dm;
if(FAILED(app->directX->lpdirect3d->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &dm)))
return -1;
D3DPRESENT_PARAMETERS p = {0};
p.Windowed = TRUE;
p.BackBufferFormat = D3DFMT_UNKNOWN;
p.BackBufferWidth = app->window->width;
p.BackBufferHeight = app->window->height;
p.SwapEffect = D3DSWAPEFFECT_DISCARD;
p.EnableAutoDepthStencil = TRUE;
p.AutoDepthStencilFormat = D3DFMT_D16;
674デフォルトの名無しさん:2008/01/28(月) 22:30:10
続きです
if(FAILED(app->directX->lpdirect3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, app->window->hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING, &p, &app->directX->lpdirect3ddevice)))
return -1;
D3DXMatrixPerspectiveFovLH(&directX->gProjection, D3DX_PI / 4.0f, 1.25f, 1.0f, 100.0f);
setCamera(directX);
発生 directX->lpdirect3ddevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
directX->lpdirect3ddevice->SetRenderState(D3DRS_ZENABLE, TRUE);
675デフォルトの名無しさん:2008/01/28(月) 22:39:35
>どなたか原因わかりますか

app->directX->lpdirect3d->CreateDevice
app->window->width

お前の頭の構造が原因。
なんだこの設計は。
676デフォルトの名無しさん:2008/01/28(月) 22:42:35
struct Window{
HWND hWnd;
WNDCLASS wc;
MSG msg;
int width, height;
Window(int w, int h);
};
struct DirectX{
LPDIRECT3D9 lpdirect3d;
LPDIRECT3DDEVICE9 lpdirect3ddevice;
D3DLIGHT9 light;
D3DXMATRIX gProjection, view, world;
LPDIRECT3DSURFACE9 depthBuffer;
Camera camera;
};
struct Application{
HINSTANCE hInstance;
Window *window;
DirectX *directX;
Cursor cursor;//int x,y
Application();
Application(HINSTANCE hInst);
};
677デフォルトの名無しさん:2008/01/28(月) 22:49:15
ワロタ
678デフォルトの名無しさん:2008/01/28(月) 22:54:16
>>675
穴掘りが好きなタイプなんだろうw
679デフォルトの名無しさん:2008/01/28(月) 23:00:13
命名規則がまったく考えられてない(w
680デフォルトの名無しさん:2008/01/28(月) 23:01:54
ワロタ
681デフォルトの名無しさん:2008/01/29(火) 00:08:09
> D3DXMATRIX gProjection, view, world;

すばらしいww
682デフォルトの名無しさん:2008/01/29(火) 00:26:48
嫌いじゃないぜ、こういうの。
683デフォルトの名無しさん:2008/01/29(火) 01:26:34
他の部分のソースも見てぇ。
684デフォルトの名無しさん:2008/01/29(火) 01:32:08
>>669
回答ありがとうございます。
リリースノートにてご指摘のの記事を発見しました。以後、気お付けます。

さてここで新たな疑問なのですが、SDKに含まれないコンポーネント
(今回の場合はManaged DirectX サンプルとドキュメント 等)がある場合は、
どのような手順でアップデートすべきなのでしょうか。リリースノートには前の
バージョンを削除する事を推奨していますが、削除すればもちろん含まれない
コンポーネントは使えないわけで・・・。Managed DirectX サンプルなどは退避
しておく事により使う事ができそうなのですが・・・。
August 2007 DirectX SDK をインストールした状態からどうするのがセオリー
なのか教えてください。
685デフォルトの名無しさん:2008/01/29(火) 03:19:37
アンインストしてインストしてサンプルとったらアンインストしてインストすればいいだろボケ
横着しようとするなカス
686デフォルトの名無しさん:2008/01/29(火) 03:21:53
>>684
俺は2つとも入れてるけど問題ないぜ
687デフォルトの名無しさん:2008/01/29(火) 08:54:51
> ここが問題の部分みたいです
> if(!(app->directX->lpdirect3d = Direct3DCreate9(D3D_SDK_VERSION)))
> return -1;

appをnewしたかどうか/directXをnewしたかどうか
688デフォルトの名無しさん:2008/01/29(火) 16:55:09
>>687
app directX共にnewしてあります
689デフォルトの名無しさん:2008/01/29(火) 17:14:21
あ、ミスった
690デフォルトの名無しさん:2008/01/29(火) 17:37:13
>>673
回答じゃないが、そこまで構造化するならクラスを覚えたほうがいい。
あとメアドにsage入れよう。
691デフォルトの名無しさん:2008/01/29(火) 18:24:03
DirectXを勉強している一初心者ですが分からないことがあったので質問させてください
DrawPrimitive系のメソッドは実行後描画完了して制御を返すわけではなくキューイングしているだけだそうですが
その場合、DrawPrimitive→計算→FlipとしてFlipするまでに計算をしておけば時間を有効に使えるという考えで良いのでしょうか?
692デフォルトの名無しさん:2008/01/29(火) 18:30:55
続きです
> if(FAILED(app->directX->lpdirect3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, app->window->hWnd,
> D3DCREATE_SOFTWARE_VERTEXPROCESSING, &p, &app->directX->lpdirect3ddevice)))
> return -1;
> D3DXMatrixPerspectiveFovLH(&directX->gProjection, D3DX_PI / 4.0f, 1.25f, 1.0f, 100.0f);
> setCamera(directX);
> 発生 directX->lpdirect3ddevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
> directX->lpdirect3ddevice->SetRenderState(D3DRS_ZENABLE, TRUE);

途中まではapp->directX->だったのが発生箇所ではdirectX->になってるな
appのほかにグローバルにdirectXが存在してる?
693デフォルトの名無しさん:2008/01/29(火) 20:14:55
>>691
最近のドライバだとFlipすらキューイングするだけ。
694デフォルトの名無しさん:2008/01/29(火) 20:19:10
>>691
スレッド化しろよ
695デフォルトの名無しさん:2008/01/30(水) 01:01:58
>>685
指摘されている方法でサンプルの取得は可能ですが、November 2007 DirectX SDKでは
以下のコンポーネントも含まれていないようです。これらを使える状態でバージョンアップ
する場合どのようにするのでしょうか。
・Direct3D8 およびそれ以前の全てのバージョン
・Direct3D RM
・DirectAnimation
・DirectMusic
・DirectInput7 およびそれ以前の全てのバージョン
・DirectPlay
・DirectPlayVoice

>>686
両方入れているとの事ですが$(AppPath)\Microsoft DirectX SDK (August 2007)\に上書き
インストールという事でしょうか。それとも$(AppPath)にAugust 2007とNovember 2007が別々
にインストールされているといことですか。
696デフォルトの名無しさん:2008/01/30(水) 01:06:29
Managedなのに最新の物入れる意味って有るの?
697デフォルトの名無しさん:2008/01/30(水) 02:24:20
>>695
上書きはしてないよ
別にインストールしてる
698691:2008/01/30(水) 04:29:08
Flipもキューイングだけなのですか…レスありがとうございます
これが本当だとすれば(パフォーマンスと言う観点だけから見れば)スレッド分けても分けなくても同じじゃない?と思い
実際に自分の環境でもスレッド分けたものシングルでやったものとを比較してみたのですが全く差がなかったので質問してみました
699デフォルトの名無しさん:2008/01/30(水) 07:54:59
>>695
それが入ってるSDKのインストーラ解凍してIncludeとLibだけコピーして
それにパス通せばいいだけだよ。(デバッグ)ランタイムが欲しいなら
一度SDKをインストールせにゃならんかもだけど。

常に最新のSDKを入れつつもD3DXランタイムのバージョンのからみで
リリース用に前バージョンのIncludeとLibを残しておくヤツはたまに見る。
700デフォルトの名無しさん:2008/01/30(水) 08:20:54
>>698
そもそもお前よく考えろよ
そんなんで時間って短縮できるの?マジで?
だってさぁ、プレイヤーの入力を受け付けるから次の画面が決定する場合のが多いじゃん?
↑↓→←な
で、時間短縮ってさぁ、プレイヤーの入力は一定タイミングでくるし
入力を受け付けるまで次の画面って描画する意味ないじゃん
ていうか内部の処理が決定しなくね?
キューイングなんてどれだけ意味があるのかさっぱりわからないんだけど?
画面更新が仮に1sごとにくるなら1s以内で処理を終えても
次のフレームの処理なんてやってもたかが知れてると思うんだけど?
ていうか安定しなくね?そんな設計にしちゃそもそも駄目じゃね?

1フレ内での時間短縮は意味があるかもしれないけど
フレーム間同士の時間短縮ってなんかやる意味あんの?
701デフォルトの名無しさん:2008/01/30(水) 08:44:27
日本語でおk
702デフォルトの名無しさん:2008/01/30(水) 12:56:07
>>700
>入力を受け付けるまで次の画面って描画する意味ないじゃん
アニメーションって言葉知ってる?
703デフォルトの名無しさん:2008/01/30(水) 12:58:39
エロゲプログラマには縁が無い言葉なんだろう
704デフォルトの名無しさん:2008/01/30(水) 13:02:38
さすがに今の時代エロゲにも必要だろ
画面切り替え一つとってもフレーム単位の処理が必要なのに
瞬時に画面切り替えするゲームなんてねーよ
705デフォルトの名無しさん:2008/01/30(水) 13:10:24
画面更新1s
706デフォルトの名無しさん:2008/01/30(水) 14:59:55
>>698
てか、VistaのWDDMドライバーとかだと全てがキューイングだよ。
もう同期処理なんてドライバー内部で複数エンジンを同期するときくらいしか使われてないよ。
707デフォルトの名無しさん:2008/01/30(水) 15:48:34
質問です。
よくゲームでフルスクリーンモードとウィンドウモードを切り替えるのに
キーボードのAlt+Enterが使われますが、これはAlt+Tabの用にWindows
の機能ではなく、製作者が「Alt+Enterが押されたら切り替える」と
プログラムしているのでしょうか?
708デフォルトの名無しさん:2008/01/30(水) 15:51:32
>>707
その通り
709デフォルトの名無しさん:2008/01/30(水) 16:31:17
>>708
ありがとうございます!
ずっとWindows(又はDirectX)の機能だと思ってました…
Alt+Enterがよく使われているだけで、別にどのキーに割り振ってもいいんですね。
710デフォルトの名無しさん:2008/01/30(水) 16:42:51
昔DirectXを使ったゲームのデザインのガイドラインで色々定義されていた希ガス
711デフォルトの名無しさん:2008/01/30(水) 22:12:58
>>709
DirectX10ではDirectXの機能の一部になってて便利っすよ!
712デフォルトの名無しさん:2008/01/30(水) 23:21:03
>>702
キャラのモーションだとして
フレームはじめのキー入力でボタン押されたら
前のフレームに描画済みの画面はどうなるの?破棄すんの?
713デフォルトの名無しさん:2008/01/30(水) 23:46:20
みんなCGは何で作ってるの?
714デフォルトの名無しさん:2008/01/30(水) 23:56:43
メタセコイア!
715デフォルトの名無しさん:2008/01/31(木) 00:02:45
ゲーム製作用途にならメタセコは糞だろ
716デフォルトの名無しさん:2008/01/31(木) 00:03:18
>>712
いつの時代からタイムスリップしてきたの?
今時キャラ部分だけ個別描画でもしてるの?

というかキー入力と描画は切り離して考えないの?
キャラが動いたら前のフレームに描画済みの画面はどうするの?破棄しないの?
717デフォルトの名無しさん:2008/01/31(木) 00:09:07
画面更新が1sってなんなの?毎秒一回しか動かないの?
それってストレスたまらないの?
718デフォルトの名無しさん:2008/01/31(木) 00:17:00
やっぱりエロゲプログラマだったか
719デフォルトの名無しさん:2008/01/31(木) 00:53:46
>>713
ぽぶれい
720デフォルトの名無しさん:2008/01/31(木) 00:57:12
>>713
Mayaフリー版
721デフォルトの名無しさん:2008/01/31(木) 01:21:06
Maya欲しいがアカデミックでも糞高いんだよな…
722デフォルトの名無しさん:2008/01/31(木) 01:30:03
ラーニングエディションで充分さ
723デフォルトの名無しさん:2008/01/31(木) 01:38:02
>>716
キー入力された内容っていつ反映すんの?

ゲームって一定時間毎にキーを取得する必要があるし
キューしてある間のフレームの位置づけって謎杉ね?

貯めてあるフレームっていつ表示されてんの?
んでもってそれってやっぱキー入力は遅れてる内容なわけっしょ?

描画とキー入力って絶対に切り離せないと思うんだけっちょそんなことない?

まあ、ようは画面を作って貯めておくことに意味を感じないわけよ俺は

どうせ1フレ内の時間余ってるならよ
マップデータの先読みでもしたらいいんじゃないか?
724デフォルトの名無しさん:2008/01/31(木) 01:54:16
キーを入力してもしなくても画面は動くってことがわからないのかなこの人
敵キャラクターはプレイヤーがキー入力しないと動きませんか。そうですか。
725デフォルトの名無しさん:2008/01/31(木) 01:57:53
メッセージドリブンを理解すれば疑問が解消するんじゃないかな
Win32APIをちょこっとかじってみるといいかもね
あとスレッドの仕組みも
726デフォルトの名無しさん:2008/01/31(木) 02:06:30
>>723
キー入力があるまで画面が一切更新されないゲームという前提条件に無理あり過ぎ。
今時エロゲでもねえよ、そんなの。
逆にいえば、上記の前提条件を満たすなら、言っている事は正しい。
727デフォルトの名無しさん:2008/01/31(木) 03:31:59
最近のエロゲは演出凝ってるぜ
728デフォルトの名無しさん:2008/01/31(木) 03:39:25
エロゲ用の紙芝居プログラムなんてほとんど同じなのに、なんでブランドごとに作ってるんだろうな。
一つあれば市場のゲームの90%は事足りそうなのに、自前で作るところに限って機能が糞だし。
もう一つに統一して、みんなそれ使えよ。
729デフォルトの名無しさん:2008/01/31(木) 04:06:00
キー入力がなかったら画面更新しないってマジで時間が止まってそうだな
730デフォルトの名無しさん:2008/01/31(木) 04:14:46
キーを押すとグラフが更新されるとか、そんな宿題しかやってこなかったんだろう
DirectXに手を出してみたはいいが何をすればいいのかわかってないっぽい
731デフォルトの名無しさん:2008/01/31(木) 08:20:10
>>726
そんなこと言ってるんじゃなくて
キー入力があったときにどういう動作をするの?
って聞いてるの

キーレスポンスがデフォで遅延してるゲームを想定してるんでしょ?
キー入力があってから即時反映ってキューイングしてたらできないわけだし
732デフォルトの名無しさん:2008/01/31(木) 08:29:08
ぶっちゃけ1/60秒遅れても誰も気がつかない。
今もキーボードから文字を入力しているが、
それが表示されるまで1/60よりも遙かに表示されるまで時間がかかっているはずだが、
別に気になっていないのと同様。
733デフォルトの名無しさん:2008/01/31(木) 08:33:05
>>731
お前、本当にDirectX触ったことあんの?
734デフォルトの名無しさん:2008/01/31(木) 08:54:39
>>732
それは1フレームを競う格ゲーマーへの挑戦か?
735デフォルトの名無しさん:2008/01/31(木) 09:05:39
>>732
お前、エロゲしかやったことないだろ
736デフォルトの名無しさん:2008/01/31(木) 09:40:58
>>711
それ便利だけど、いろいろ考えるとやっぱ無効化して自前で実装したくなるんだよね
マルチモニタでフルスクリーンに切り替えるときに2つのウィンドウが同じディスプレイ内にあると死ぬ…
おれの組み方が悪いのか?

で、IDXGIFactoryのMakeWindowAssociationで無効化できると思いきやうまくいかん
どうなってんだこれ

>>732
確かに止まった画面から何かが動いたとき1,2フレームの遅延は気付かんが、
動き続けてる画面が1フレーム跳んだら気づくだろ。ってかアクション系のFPS固定は基本。
737デフォルトの名無しさん:2008/01/31(木) 09:53:41
>>731
キー入力は描画時の状態を変化させるだけで
キー入力があろうがなかろうが描画は定期的に行えばいいだけなんだが
キーのレスポンスとして描画をするってアホかと
738デフォルトの名無しさん:2008/01/31(木) 10:20:58
そもそもハード的問題でキーボードを押してからOSがその情報を拾うまでのラグが相当あるのに、
描画の部分だけ即座に反応しなければならないと考える時点でアホとしか言いようがない。
739デフォルトの名無しさん:2008/01/31(木) 11:09:54
さらに追い打ちをかけるようだが、
そんなパッシブな描画だとウィンドウモードの時にウィンドウを重ねると、中身が全部消えてしまう。
740デフォルトの名無しさん:2008/01/31(木) 13:39:49
いつまでも話題ひっぱるほうもアホとしか言いようがない。
741デフォルトの名無しさん:2008/01/31(木) 15:53:10
初心者の質問に答えてるだけだし
気に入らないなら他の話題でも出せばいいのに。
742デフォルトの名無しさん:2008/01/31(木) 19:56:17
自分の無知が原因なのに逆ギレするほうがアホとしか言いようがない
743デフォルトの名無しさん:2008/02/01(金) 00:56:21
>>737
はぁ?馬鹿?
大げさに書くと
キューイングが3枚あったらキー入力が反映された画面は
キー入力がされてから4枚目にならないとキー入力が反映された画面にならんだろが
要するにキーレスポンスが飛びっきり悪くなる
744デフォルトの名無しさん:2008/02/01(金) 01:16:50
4/60で0.0666秒遅れたのを人間が判断できるのかやってみるといい。
程度わざと反応を遅らせてプログラムを書いてみれば分かるが全く判別不可能。
745デフォルトの名無しさん:2008/02/01(金) 01:38:48
そもそもこのお馬鹿さんは漠然とキューイングなどと言っているが、
描画画面全体のバッファを3つ4つもつとでも言わんがばかり。
フロントバッファ、バックバッファとは別に二枚以上持つのか。大変だな。
746デフォルトの名無しさん:2008/02/01(金) 01:44:14
>>743
とりあえずさ、つべこべ言わずにDirectXでプログラム組んでみようよ
話はそれからだ
747デフォルトの名無しさん:2008/02/01(金) 02:18:39
>>745
いやバックバッファがたくさんあるんじゃなくて純粋にコマンドバッファ内でキューイングされるって話じゃない?
この辺読んでみ。割と有名な話なんだがな。

ttp://niisaka.s33.xrea.com/2007/09/post-10.html
ttp://developer.download.nvidia.com/GPU_Programming_Guide/GPU_Programming_Guide_Japanese.pdf#Page=82
ttp://msdn2.microsoft.com/en-us/library/bb174347.aspx
748デフォルトの名無しさん:2008/02/01(金) 03:15:22
まあ、キー入力にタ対する反映スピードとはなんの関係もないけどな。
固定フレームでしか動かない頭の悪い構造で作るなら仕方ないが。
749デフォルトの名無しさん:2008/02/01(金) 04:38:11
>>747
彼の言わんとしてるのがバックバッファにしてもコマンドバッファにしても、
次フレームの描画に3回分も間に合わないほど描画命令詰め込んでたら
1,2フレームが重要になるようなゲームを想定した場合には
どの道キーレスポンス以前にコマ飛びがひどくて話にならない。

1回分の描画命令を発行し、その間に他の処理を行ってコマ落ちがなくなれば、
レスポンスの遅れも当然なくなるわけだし、キューイングなしより効率がいい。
750デフォルトの名無しさん:2008/02/01(金) 05:02:50
多分、>>700が文盲なのが全て悪いと思うよ

>で、時間短縮ってさぁ、プレイヤーの入力は一定タイミングでくるし
>入力を受け付けるまで次の画面って描画する意味ないじゃん

これを

>で、時間短縮ってさぁ、プレイヤーの入力の判定は一定タイミングでくるし、
>入力の判定とそれに伴うもろもろの処理を行うまで次の画面って描画する意味ないじゃん

こうすると、少しは>>700の言いたいことがわかってくるんじゃないかと思う。

こいつはキーレスポンス絶対主義者。
こいつの考え方だとコマ飛びも絶対に発生しないよ。
その代わり、コマの停止が頻繁に発生するが、そんなの知ったことじゃないだろう。
751デフォルトの名無しさん:2008/02/01(金) 05:12:55
全部>>700と同一人物じゃないのか?
>>700の時点で既に意味不明だし
752デフォルトの名無しさん:2008/02/01(金) 08:45:25
そんなにレスポンスが重要なら、PS3の無線コントローラなんて、反応が遅くて遊べないんだろうな。
キー押してから検知するまでラグが大きいキーボードなんて使えない。
遊びのあるアナログコントローラなんて以ての外。
一定のモーションを検知してから動くwiiのゲームなんて論外。
753デフォルトの名無しさん:2008/02/01(金) 11:02:38
ようするに、1フレーム分キューイングすると、入力が反映されるまでに
1フレームの遅延が発生するけど、60fpsなら1/60秒だから普通は無視できる。
でも、>>700は1fpsだから無視できない。

こういうことだろう。
754デフォルトの名無しさん:2008/02/01(金) 13:22:55
>>750
上の文章だとどこから見ても、「キー入力がなければ次フレームは描画しない」
と言っているようにしか見えないよなw
755デフォルトの名無しさん:2008/02/01(金) 23:39:34
ていうかワンフレ遅れはかなり目にあまる
アクションゲームだとかなりウザイ
2フレ遅れでRPGぐらいしかできない
3フレ遅れは商品じゃない

そんな感じ
756デフォルトの名無しさん:2008/02/01(金) 23:44:15
ちょっと考えたんだけど人によって環境が違うから感じ方が違うんじゃね?

最新PC:120fps出てるから3フレーム遅れぐらいなんともねーよ
旧型PC:30fpsしか出てねえから3フレーム遅れはものすごく目立つんだよ
757デフォルトの名無しさん:2008/02/02(土) 00:38:32
120FPSってどんな環境だ?
大抵みんな液晶だろ?
すると垂直同期にあわせると60〜75じゃねぇか?
せめてワンフレ落ちで死守しないとガコガコ感じるだろうな

わざわざ遅らす必要もないだろ
758デフォルトの名無しさん:2008/02/02(土) 01:21:19
糞性能PCの場合にどうするかって話なら
固定フレームよりは可変フレームの方がまだマシだわな。
特にネトゲなんかじゃお互いの環境が違うのだから
固定フレームゲーなんてまずありえないし。
759デフォルトの名無しさん:2008/02/02(土) 01:23:22
どちらにしろ>>700は秒間1フレームだから、商品どころの話じゃないが
760デフォルトの名無しさん:2008/02/02(土) 01:50:20
>>758
デフォでキーレス遅れてるのにはなんか意味あるの?w
761デフォルトの名無しさん:2008/02/02(土) 01:50:55
BBXに書き込む奴でもここまで馬鹿はいなかったけどなw
762デフォルトの名無しさん:2008/02/02(土) 02:09:15
>>760
自分の脳内で文章を補間するのはやめような。
相手に伝わるようにレスしよう
763デフォルトの名無しさん:2008/02/02(土) 02:26:20
BBXの掲示板って、はなんか知らんがキャッシュを見ようとするとめちゃくちゃ重いんだよなぁ
764デフォルトの名無しさん:2008/02/02(土) 04:52:43
紙芝居でも作ってたのかね
それにしても秒間1フレームはありえないがw

>>763
IE6の重くなるバグのせいじゃないのか?
765デフォルトの名無しさん:2008/02/02(土) 22:19:26
それならわざわざDirectX使う必要なくね?
766デフォルトの名無しさん:2008/02/02(土) 22:21:36
もう>700はそっとしといてやれよ
767デフォルトの名無しさん:2008/02/02(土) 22:39:09
たしかに仕組み考えるとキー入力遅延するだけだな
768デフォルトの名無しさん:2008/02/02(土) 23:07:21
必死すぎて泣けてくるw
769デフォルトの名無しさん:2008/02/02(土) 23:18:17
たった一つのレスで50以上引っ張らせるとは、ある意味すごいなww
770デフォルトの名無しさん:2008/02/02(土) 23:39:50
この辺昔から話題にするたびにおかしなこという奴がいるんだけど
ワンフレごとキー入力を取得してるってことすっかり頭から抜けてる状態で
話するからおかしなことになる

キー入力を反映した画面を「即座に(←これ重要)」作らなきゃいけないってことを忘れてる

ユーザのキー入力を反映した画面を作らなきゃ意味がまったくない
レスポンスの悪いゲーム作るだけ
キー入力によってカメラの移すものが変わっても全画面更新だし
横にちょっとスクロールしても全画面更新、
決定ボタンが押されても次のシーンに移るのに全画面更新だし、

キー入力を受け付けない状態での画面描画のキューイングにいったいなんの意味があるのか問いたい
771デフォルトの名無しさん:2008/02/02(土) 23:45:03
>>770
日本語でおk
772デフォルトの名無しさん:2008/02/02(土) 23:50:49
>>770=>>700
ユーザーがキー入力をしようがすまいが全画面更新するわけだが^^;
頭大丈夫か?最初から指摘されてるのにまだ理解できないのか?
773デフォルトの名無しさん:2008/02/02(土) 23:52:37
もういいよ、こんなどうでもいい話題は。
DirectXとかゲーム制作関連のスレだと訳のわからん自己解釈厨が出てくるのはどうしてなんだろうね。
774デフォルトの名無しさん:2008/02/02(土) 23:57:45
>>770
>この辺昔から話題にするたびにおかしなこという奴がいるんだけど
>ワンフレごとキー入力を取得してるってことすっかり頭から抜けてる状態で
>話するからおかしなことになる

おかしいのはお前の頭だということに気づこう、な?
775デフォルトの名無しさん:2008/02/03(日) 00:10:00
>>700は、「キー入力有無の判定」の事を「キー入力を受け付ける」と言ってるんだろうな。
日本語がすっかり頭から抜けてる状態で話するからおかしな事になる
776デフォルトの名無しさん:2008/02/03(日) 00:14:40
>>772
だからな
ユーザがキー入力を押しっぱなしのときを想像してみろよ
777デフォルトの名無しさん:2008/02/03(日) 00:16:36
池沼が必死に自作自演で擁護してるなwwwwwwwwww
778デフォルトの名無しさん:2008/02/03(日) 00:17:34
>>776
だからな
いつキー入力しっぱなしの状態が前提になったんだよ
お前の脳内を前提に話をするな
779デフォルトの名無しさん:2008/02/03(日) 00:18:57
>>777
自作自演というか、本人丸出しじゃないか?別に隠す気もないと思うよ
どうみても>>700です。本当にありがとうございました。
780デフォルトの名無しさん:2008/02/03(日) 00:21:44
>>700って見た目偉そうな書きかたしてるけど
実際は何一つ理解してないバカなんだと思う
781デフォルトの名無しさん:2008/02/03(日) 00:25:33
どうせだからコテつけてくれよ。あと200レスちょい釣られてやっから。
782デフォルトの名無しさん:2008/02/03(日) 00:49:20
>>780
一応少しは勉強したつもりなんだろ
実際キューイングやスレッド分けをせずに描画待ちするんなら
激重PCでのキー反応に関してだけはマシになるんだし
秒間1フレでゲームになるかどうかはおいといて^^;

日本語が不自由な可哀想な人ってだけ
783デフォルトの名無しさん:2008/02/03(日) 01:31:33
キー入力を押しっぱなし
784デフォルトの名無しさん:2008/02/03(日) 02:14:24
700がアーケードゲーム作るとシンクロ連射て言葉も生まれなかったのかな。
785デフォルトの名無しさん:2008/02/03(日) 04:24:22
すげー、まだ続いてたのかw
786デフォルトの名無しさん:2008/02/03(日) 04:30:06
あと13で100レス記念です。>>800を取った方には、>>700から記念品の贈呈が行われます。
787デフォルトの名無しさん:2008/02/03(日) 10:51:36
そもそもまともなゲームはキー入力を受け取ってから、
加速時間などをおいてキー操作をわざわざ延滞させて自然に動くようにしているだけどね。

ハンドル操作なんかもわざわざ遊びを作って操作をダイレクトに反映しないようにしているのに、
自動車の運転すらしたことがないんだろうな。
788デフォルトの名無しさん:2008/02/03(日) 13:02:46
音ゲーはまともなゲームじゃなかったのか…
789デフォルトの名無しさん:2008/02/03(日) 13:17:29
音ゲーが入力された応答をサウンドバッファに蓄えてから、
実際に再生されるまでの延滞は描画フレームの遅れの比じゃないんだが、
全然動作原理を理解しないで表面しか見ていないからそういう馬鹿な発言が出るんだろうな。
790デフォルトの名無しさん:2008/02/03(日) 14:01:05
>>787
加速時間をおくためにキー入力を遅延させるだあ?
んなわけねーだろ。本当に加速を表現したいなら、ハンドルの角度と角速度設定して、
キー入力を角速度に反映すればいいだけの話。もちろんキー入力に延滞なんか起こるはずもない。

ハンドル操作の遊びなんて、入力を遅らせるのとどんな関係があるんだ?
そりゃ単に一定以上キーを押し続けないと反応しないようにしているだけだろうが。


結局、おまえの言ってる”キー操作をわざわざ延滞させて”やってみても、
単に画面の更新が遅いゲームしかできないんだが。
それでどうやって加速時間やハンドルの遊びを表現するって言うんだ?
791デフォルトの名無しさん:2008/02/03(日) 14:13:03
とりあえず、DirectXやゲームの作り方の基本を学ぶ前に、日本語を学んだ方が言いと思う
792デフォルトの名無しさん:2008/02/03(日) 14:23:01
脳内の混乱をそのまま文章にする能力に長けているマとは対極に位置する
ある意味詩人
793792:2008/02/03(日) 14:30:15
アウチ!
構文解析を掛けたらエラーではじかれる様な文だ
794デフォルトの名無しさん:2008/02/03(日) 15:28:38
「キー入力を押しっぱなし」ワロタ

本当に日本語を知らないんだなw
795デフォルトの名無しさん:2008/02/03(日) 15:33:19
昔のエロゲーなんかは画面更新が1秒毎どころか何十秒もかかっていたんだぞ
だから>>700は正しい。
796デフォルトの名無しさん:2008/02/03(日) 15:34:11
いつから昔のエロゲ限定の話になってたんだ
797デフォルトの名無しさん:2008/02/03(日) 15:35:52
そんな事は>>700に聞いてくれ
798デフォルトの名無しさん:2008/02/03(日) 15:41:11
Windows自体がキーの入力を一定周期で拾うことすら不可能な現実をまるで理解せず、
見える部分の描画にしか注意が行かないのはとても幸せなことだ。
799デフォルトの名無しさん:2008/02/03(日) 15:48:48
>>798
Windowsの救えるタイマの限界が10msだとするとキューイングを3フレすると
キー入力は30msの遅延が起こるんだよね?
なんか明らかに駄目にしか見えないんだけど?
800デフォルトの名無しさん:2008/02/03(日) 15:58:23
>>799
>Windowsの救えるタイマの限界が10msだとすると
日本語もWindowsのプログラムの知識も全くないのは分かった。
801デフォルトの名無しさん:2008/02/03(日) 15:59:18
多少のレスポンスのずれよりも比較的滑らかなアニメーションを優先すれば可変フレームだし
ガタガタな動きだろうと、とにかくキー入力反映の確実性を優先したいなら固定フレームでいい
そういう話ならいいんだが、このお馬鹿さんは他人も自分の思うとおりにならないと
どうしても許せないらしい.。

彼の脳内の叫び
「何があろうとキー入力を優先しないとダメなんだ!それ以外は許さん!」
802デフォルトの名無しさん:2008/02/03(日) 16:03:04
そもそもメインループの回数と、描画の回数がイコールではないという概念すらないんだろう。
キューイング云々以前にフレームスキップなんかも理解していないんだろうね。
803デフォルトの名無しさん:2008/02/03(日) 16:04:00
>>800
100レス記念、おめでとうございます。
後日>>700から記念品が贈られますので、住所、氏名、年齢、ご感想をこのスレでさらしてください。
804デフォルトの名無しさん:2008/02/03(日) 17:41:57
>>802
だからそれってキー入力のレスポンスが遅れるってことじゃないの?
メインループの回数と描画の回数が違うってことは、
メインループの回数が多いときに、キー入力が描画に反映されないことを意味するっしょ?
805デフォルトの名無しさん:2008/02/03(日) 17:51:23
>>804
定義が曖昧すぎる。
そもそも入力と描画の差を0にすること自体不可能なんだから、
どれだけ差が出たら遅れたと言える状況なのか明確な数字を出せ。
806デフォルトの名無しさん:2008/02/03(日) 18:00:03
もうやめて!
人はなぜ憎み合い殺し合わねばいけないの?
807デフォルトの名無しさん:2008/02/03(日) 18:03:06
>>804
というか他のレスもちゃんと読もうよ。
難しい日本語が書いてあるレスからは逃げてるのかな?
808デフォルトの名無しさん:2008/02/03(日) 18:58:32
>>801が全てだろ。何がそんなに気に食わないんだ>>700

キューイング3フレにやけに拘っているが、頻繁にそうなるほど描画時間がかかるPCで
固定フレームゲーなんかにしたら、どれだけ糞遅いゲームになるんだよ。
どっちにしてもそのゲームの動作環境としては不適切だ。

コンシューマやアーケードゲームは通常は固定の60FPSで画面更新されるが、
それはほぼ確実に60FPSで動作するように組まれているからだ。
画面が頻繁にガクつくような事があったら商品として失格だ。
ましてや秒間1フレームなんてもっての他。

見た目の動作がガクついたり遅くなるのが嫌な奴もいれば、
見た目を犠牲にして入力優先させるような奴もいる。
どっちをとるかってだけの話だろう。
809デフォルトの名無しさん:2008/02/03(日) 19:11:00
そうだ。やおいが全てなのだ
>>700は尻を差し出すべきなのだ
810デフォルトの名無しさん:2008/02/03(日) 19:11:42
>>808

>>700じゃないけど固定フレームゲーと相性が悪いのは事実だよ。
スペックが高くても一旦3フレームキューイングされてしまうと
16 msec単位でしかキューがさばけないのでずっと解消しない。
解決策は
「フレームがキューイングされたのに気付いたらキューイングが解消されるまで何もしない」
なんだけど、敢えてそんな実装にしてるゲームは少ないしね。

固定フレームゲーで60FPS程度だと割と鬱陶しい仕様だったりする。

ttp://niisaka.s33.xrea.com/2007/09/post-10.html
811デフォルトの名無しさん:2008/02/03(日) 19:35:56
>>810
うん。既存の固定フレームゲーだとそうなってしまうよね。
可変フレームゲーの場合はならないけれど。
固定フレーム派には厳しいわな。
812デフォルトの名無しさん:2008/02/03(日) 19:48:24
よく知らんけど、ようはそのグラフィックカードの仕様に発狂した固定フレーム信者が
可変フレームにやつあたりして暴れてるって話?
813デフォルトの名無しさん:2008/02/03(日) 19:56:31
>>810
>VSYNC同期をオンにしたまま60fps以上で動作するゲームを遊ぶと
意味不明
ユーティリティ側で周期の変更は出来ても、
同期待たないアプリに対して同期を強制するのは出来ないはずだが、
いったい何を言ってるんだ?
814デフォルトの名無しさん:2008/02/03(日) 20:25:21
>>813
アプリ側がDirectXの初期化時にVSYNC同期設定にした状態で
それに加えてゲームループの同期をタイマーでとってるとかかな
そのずれでキューイングされたコマンドバッファが
残ってしまう場合があるって事では
815デフォルトの名無しさん:2008/02/03(日) 20:34:56
もう実際にDirectX使っているやつ以外話さなくていいよ。
816デフォルトの名無しさん:2008/02/03(日) 20:44:00
DirectX10を使えばアプリ側でキューイングの上限数をセットできるから
固定フレーム派はそれを0にすりゃいいんじゃないかね。
817デフォルトの名無しさん:2008/02/03(日) 20:47:57
>>816
IDirect3DDevice9Ex使えばDirect3D9ゲーでもちょっとの手直しでできるしね。
Vistaのその辺はもっと評価されても良いような気がする。
818デフォルトの名無しさん:2008/02/03(日) 20:48:09
>>815
ごめんね。頭悪い俺に説明してよ。
819デフォルトの名無しさん:2008/02/03(日) 20:58:19
>>814
その状況でアプリ側が周期を超えるデータを放り込んでいるって事?
それはサウンドバッファが1MBとられていたら、わざわざそのバッファを埋め尽くしてから、
後から入れた音がとんでもなく遅れて再生されると言っているようなもの。

>私は最近はそれほど重いゲームは遊ばないので
>>810のリンク先の奴に、そんなアホな作りの重いゲームとやらを是非教えて欲しい物だ。

実際にもってるFPS系ゲームでMax frames to render aheadをいじって比較してみたが、
さっぱり違いが分からない。
820デフォルトの名無しさん:2008/02/03(日) 21:02:10
>>819
東方シリーズでVSYNC同期をドライバ設定で強制的に切らないと、
酷い遅延が発生するってのが有名な話。

ドライバはキューに溜まった分は一切スキップせずに描画するから、
プレゼンテーションをVSYNC同期にしていると、60fps以上で動作するような
プログラムは、いつまで経ってもキューが最大まで溜まった状態になる。

ttp://d.hatena.ne.jp/NyaRuRu/20050329/p1
↑やそこからリンクされてる日記にも色々書いてある。

CPUがボトルネックで平均fpsが60を下回るゲームの場合は、この問題は
あまり関係ない。
欧米のゲームは60fps維持には拘っていなくて、20fps程度を下限と
見てるっぽいから問題ないのかもね。
821デフォルトの名無しさん:2008/02/03(日) 21:11:44
>>700の相手をしてるよりは興味深い内容になったな
822デフォルトの名無しさん:2008/02/03(日) 21:12:25
>>819

>それはサウンドバッファが1MBとられていたら、わざわざそのバッファを埋め尽くしてから、
>後から入れた音がとんでもなく遅れて再生されると言っているようなもの。

その認識は正しいんだけど
・バッファが勝手に作られて勝手に埋めさせられて勝手に待たされる
・Direct3Dのドキュメントやチュートリアルでちゃんと解説されていない
という理由で意図せずそうなってるのが問題。

>そんなアホな作りの重いゲーム

同人シューティングとかほとんど全部じゃね?
東方シリーズとか。

どうでもいいけどリンク先の人、新坂さんだね。
XFCとかBio時代からDirectX見てる人でないと知らんかもしれんが。

最近窓の杜で見て懐かしくなった。
ttp://www.forest.impress.co.jp/article/2008/01/21/aspect_zoom.html
823デフォルトの名無しさん:2008/02/03(日) 21:23:31
>>820
マジかw
ずいぶん馬鹿な奴がプログラム組んでるんだな
824デフォルトの名無しさん:2008/02/03(日) 21:24:50
今、カメラをFPS視点にしようとしているのですがうまく写してくれません。
どこをどのようにしたらいいのでしょうか・・・?

D3DXVECTOR3 viewvecE(0.0f,1.0f,0.0f),//カメラ(視点)位置 (キャラを原点とする)
viewvecL(0.0f,0.0f,3.0f);//注視位置
D3DXVECTOR3 viewvec;
D3DXVec3TransformCoord(&viewvec,&viewvecE,&matRotation);
D3DXVECTOR3 vEyePt( //どこでみている
VecCamera.x + viewvec.x,
VecCamera.y + viewvec.y,
VecCamera.z + viewvec.z
);
D3DXVec3TransformCoord(&viewvec,&viewvecL,&matRotation);
D3DXVECTOR3 vLookatPt(//どこをみている
VecCamera.x + viewvec.x,
VecCamera.y + viewvec.y,
VecCamera.z + viewvec.z
);
D3DXVECTOR3 vUpVec(0.0f,1.0f,0.0f);
D3DXMATRIXA16 matview;
D3DXMatrixLookAtLH( &matview, &vEyePt, &vLookatPt, &vUpVec );
pDevice->SetTransform( D3DTS_VIEW, &matview );

どうぞよろしくおねがいします。
825デフォルトの名無しさん:2008/02/03(日) 21:27:51
>>824
SDKのサンプルどおりにする
826デフォルトの名無しさん:2008/02/03(日) 21:31:03
>>l824
DirectXは俺も初心者だけど、3人称視点ができてるんなら
まず座標をあわせて次に向きを合わせればできると思うよ
827デフォルトの名無しさん:2008/02/03(日) 21:31:36
STGを作る奴ってのは頭が悪いからSTGを作るってことが証明されましたw
828デフォルトの名無しさん:2008/02/03(日) 21:41:37
知らなかった奴が言う台詞でないけどなw
829デフォルトの名無しさん:2008/02/03(日) 21:45:55
>>828
だからはじめからキューイングはキー入力遅延するっていってるだろw
830リアルゲー専PG:2008/02/03(日) 21:47:28
完 全 勝 利 !
831デフォルトの名無しさん:2008/02/03(日) 21:58:25
>>829
はじめからと言われてもな。誰の事だか検討もつかないが、>>700かい?
832デフォルトの名無しさん:2008/02/03(日) 22:01:35
>>831
検討→見当
>>700 認定。日本語でおk
833824:2008/02/03(日) 22:05:42
>>825-826
D3DXMatrixPerspectiveFovLHの部分を書き忘れてたのが原因でしたすごくアホな質問失礼しましたorz
834デフォルトの名無しさん:2008/02/03(日) 22:07:57
>>700よりはマシだから気にするな
835デフォルトの名無しさん:2008/02/03(日) 22:12:35
もう放っておいてやれよ
あんまりつつくとまた意味不明な日本語で喚き散らすぞ
836デフォルトの名無しさん:2008/02/03(日) 22:33:48
>>700の人気に嫉妬
837デフォルトの名無しさん:2008/02/03(日) 22:39:19
>>836
>>700にはうんざりしたので、あなたが新しい有意義なネタで人気者になってw
838デフォルトの名無しさん:2008/02/03(日) 22:54:41
結局、キューイングに意味があるとかいってたキチガイでもはどうしたの?(笑)
ずいぶん強気な態度であさってなこと言ってたけどもう尻尾巻いて逃げちゃった?w

こんな単純な仕組みもわからないでよくゲームなんか作るつもりでいると思うよw
 ホ ン ト 馬 鹿 っ て 恥 ず か し い か ら 死 ん だ ほ う が い い よ ね 
839デフォルトの名無しさん:2008/02/03(日) 23:19:25
勝利宣言キター
840デフォルトの名無しさん:2008/02/03(日) 23:23:51
スレ伸びてると思ったら、まだやってたのかよ。
841デフォルトの名無しさん:2008/02/03(日) 23:28:18
>>838
話理解できてる?
従来の固定フレームゲーでは修復不能な遅延が発生。
可変フレームゲーなら遅延が出ても修復可能。

ところで、キチガイでもっていうのは何かのデモの事かい?
842デフォルトの名無しさん:2008/02/03(日) 23:31:15
>>841
この状況でそんな見苦しいいいわけは逆効果だぞw
843デフォルトの名無しさん:2008/02/03(日) 23:33:54
なんなんだこの詭弁のガイドラインの典型例みたいな奴は
844デフォルトの名無しさん:2008/02/03(日) 23:34:59
やっぱり理解できてないみたい^^;
キチガイでもとか言ってるぐらいだから仕方ないが
845デフォルトの名無しさん:2008/02/03(日) 23:36:52
ようは>>812って事でw
846デフォルトの名無しさん:2008/02/03(日) 23:57:49
>>844
わかってないのはお前のほうだろ
847デフォルトの名無しさん:2008/02/04(月) 00:01:24
なんだかなぁ。

コマンド発行するだけで他に処理を回せるんだから意味はあるだろ。
自分の作る固定フレームゲームで遅延が修復できないからって、
他も一緒だと勘違いされてもなぁ。

別にDirectX10を使えばキューイング0にもできるんだし
自分が使いたくないなら使わなきゃいいだけだと思うんだけど。

グラフィックカード自体は世に出てるんだから、自分のわがままで
ユーザーに設定を強要するわけにもいかないだろうに。
848デフォルトの名無しさん:2008/02/04(月) 00:05:39
>>847
入力によるなんらかの応答が必要なアプリ全部に対して必要なくね?
んでもってそんなアプリにこんなキューイングみたいな機能っているの?
ほぼ動画とかそんなんしかないと思うけど
849デフォルトの名無しさん:2008/02/04(月) 00:06:02
まあ>>700=838は相変わらず日本語でおkって事で。
850デフォルトの名無しさん:2008/02/04(月) 00:07:21
>>848
アニメーションって言葉知ってる?^^;
851デフォルトの名無しさん:2008/02/04(月) 00:10:47
>>850
それって3Dモデルの?
2Dのパラパラ漫画?

どっちにしてもキー入力が入ることによって描画結果が変わることになったら再描画必須だけど
何を言ってるのかな?
852デフォルトの名無しさん:2008/02/04(月) 00:13:26
キューイングなんかしてる奴はテトリスすら満足に作れない

http://jp.youtube.com/watch?v=Z_MwC-LaD0I
853デフォルトの名無しさん:2008/02/04(月) 00:19:36
>>851
例えばさ、自然界には雲が浮かんでいるよね?
君が何かをしないと雲は動かないのかな?^^;
854デフォルトの名無しさん:2008/02/04(月) 00:21:33
>>853
彼の脳内だと、「キー入力押しっぱなし」が前提だからw
そんな事を言っても無駄wwww
855デフォルトの名無しさん:2008/02/04(月) 00:23:06
>>852
マジかw
なんだその化け物w

>>853
何が言いたいのかわからないけど、
多分お前が言おうとしてることって純粋なデモしかないから
関係ないと思うんだけどね
856デフォルトの名無しさん:2008/02/04(月) 00:23:28
おいおい同じ流れにもってくなよwwwww
857デフォルトの名無しさん:2008/02/04(月) 00:24:26
>>700の作るゲームは何かキーが押されないと何も動かない止まった世界
ある意味斬新と言える
858デフォルトの名無しさん:2008/02/04(月) 00:25:45
キューイングうんぬん以前に>>700の脳内前提に無理があるから('A`)
もう相手にすんなよ
859デフォルトの名無しさん:2008/02/04(月) 00:28:31
そもそもリフレッシュレート以上加速させることになんらかの意味を求めてる?
860デフォルトの名無しさん:2008/02/04(月) 00:29:18
ディスプレイが書き換わらないのに何を求めているんだ
861デフォルトの名無しさん:2008/02/04(月) 00:31:06
ID無しだというのに>>700と同一人物の書き込みが一目で分かるのが笑える
862デフォルトの名無しさん:2008/02/04(月) 00:38:00
まいったな
普通の質問がしづらいふんいきだ
863デフォルトの名無しさん:2008/02/04(月) 00:41:12
まとめ

キューイングに関しては、

・1枚溜める分には意味がある(そのフレームの処理を短縮できる)
・2枚以上はあくまでおまけ
・どの道3フレームも溜まるようなPCだと、固定フレームじゃ遅くて話にならない。

>>700 の脳内に関しては
・理解不能


>>862
次の方どうぞ
864デフォルトの名無しさん:2008/02/04(月) 00:56:55
865デフォルトの名無しさん:2008/02/04(月) 01:36:16
>>863
2枚以上ってのは、SLIで効果があるらしい。
Alternate Frame Renderingで使うのかね。
ttp://www.4gamer.net/specials/3de/050808_sli/001/050808_sli_01.shtml

あと、3フレーム溜まるってのはPCが遅いんじゃなくて、ちょっと古いゲームなんかで
最新PCで遊ぶと平均120fps出るようなのをVSYNC同期に設定すると起こる。
キューの出口が60fpsで詰まってるから消化が間に合わない。
DOOM3くらいの時代のを最新PCで遊ぶとそんな感じ。

866デフォルトの名無しさん:2008/02/04(月) 02:17:17
やっとわかった。

固定フレームレートで遅いPCだと問題が出るって言ってる人は
入力のキューイングのことを言ってるんだな。

ビデオカードのドライバで設定できるのは、出力のキューイング。
こっちは速いPCほど溜まる。
あるいはGPUがボトルネックのゲームだな。
867デフォルトの名無しさん:2008/02/04(月) 03:07:17
>>866
速いPCでも溜まるし、GPU処理量が多すぎる場合でも溜まるって事だね。
遅いPCと言う言い方は適切じゃなかったな。
>>863のまとめの3番目はこの場合の後者の意味ね。

>>865
どれだけ使えるかはともかく、面白そうな機能だね。
868デフォルトの名無しさん:2008/02/04(月) 13:04:22
Direct Musicって覚えることに意味ありますか?
869デフォルトの名無しさん:2008/02/04(月) 13:09:40
>>868
まずは何をしたいのかを明確にしろ。
870デフォルトの名無しさん:2008/02/04(月) 13:32:46
>>868
誰も君に強要はしない。自分で考え、自分で決めろ。自分が今、なにをすべきなのか。ま、後悔のないようにな!
871デフォルトの名無しさん:2008/02/04(月) 17:00:04
敵キャラクターに動いてもらいたいんですけど、キー入力押しっぱなしじゃないと
駄目らしいのですが、どうすればいいでしょうか?
872デフォルトの名無しさん:2008/02/04(月) 17:05:11
>>870
だれがいい言葉いえと言った。。
873デフォルトの名無しさん:2008/02/04(月) 17:05:56
>>871
キー入力を押しっぱなしにすればいいです。
異国の言葉ですので、詳しい内容は>>700に聞いてください。
874デフォルトの名無しさん:2008/02/04(月) 17:35:03
もう終わってるのに
875デフォルトの名無しさん:2008/02/04(月) 17:40:01
だな。つつくとまた沸いてくるんだからそっとしておいてやれよ
876デフォルトの名無しさん:2008/02/04(月) 17:53:27
ゲームじゃなくて単純なグラフ表示とかのアプリを作ってるんでしょ。多分。
それならキーを押さないと画面が動かないのも画面更新1秒も納得できる。
877デフォルトの名無しさん:2008/02/04(月) 18:00:01
もうやめてー!彼のライフは0よー!
878デフォルトの名無しさん:2008/02/04(月) 18:02:04
終了
879デフォルトの名無しさん:2008/02/04(月) 18:34:33
Direct Musicには一度手をつけてみたけど
何度か同時再生とかしようとすると音が止まったりノイズが出たりして上手く行かなかったな
BGM再生はお手軽に出来るかもしれないけど、SE再生には向いてないと思う。
WAV再生にはDirect Sound使ってれば問題ないからMidi扱わなきゃいらないかなと。
880デフォルトの名無しさん:2008/02/04(月) 23:08:34
東方みたいなウンコSTG作ってればいいよw
881デフォルトの名無しさん:2008/02/04(月) 23:51:40
>>870
だ、誰の言葉か思い出せねぇ!!!!
882デフォルトの名無しさん:2008/02/04(月) 23:55:12
>>881
スイカ畑の人
883デフォルトの名無しさん:2008/02/05(火) 00:17:36
アバンギャルドだかなんだか言うアニメだったか
884デフォルトの名無しさん:2008/02/05(火) 05:52:46
アバンストラッシュじゃなかった?
885デフォルトの名無しさん:2008/02/05(火) 06:00:11
アバンテジュニアだよ
886デフォルトの名無しさん:2008/02/06(水) 21:23:15
俺は最近の趣味のプログラムでは可変フレームレートをやってるけど
仕事では固定しかやったことがない。会社のライブラリなんか完全にその前提に依存しているし、
それが主流でその流儀が通用しないことに発狂する人がいるのは分からないではないなあ。

887デフォルトの名無しさん:2008/02/06(水) 21:34:34
発狂というか、あれは最初から頭おかしい感じだしなぁ。

日本では未だに固定フレームも根強いとは言え、
ネトゲやこういったハードの普及にともない、可変フレームの流れに
移ろうとしているのもまた事実ではある。
一方しか認められないとプログラマーとしてはそこで終わってしまう。
888デフォルトの名無しさん:2008/02/06(水) 21:37:56
可変にするとプレイに支障を来すタイプのゲームもあるだろ。
どっちか一方のみが使われるべき、ってもんじゃない。
適材適所だ。
889デフォルトの名無しさん:2008/02/07(木) 08:28:02
>>887
可変フレームレートの話じゃなくてキューイングの話だったような・・・
890デフォルトの名無しさん:2008/02/07(木) 10:39:32
固定フレームレート
可変フレームレート
可変時のコマの処理の仕方の話題になると
荒れるのはいつものこと
891デフォルトの名無しさん:2008/02/07(木) 12:01:11
>>889
固定フレームにおいてのみキューイング処理で発生する修正不能な遅延に発狂した奴が
可変フレームにまでやつあたりしてたって話
892デフォルトの名無しさん:2008/02/07(木) 13:59:15
どっかのスレじゃ禁句の一つになってたな
どこだったか忘れたが
893デフォルトの名無しさん:2008/02/07(木) 13:59:25
固定/可変だのキューイングだのの話ではなくて、
確か「キー入力押しっぱなしじゃないと画面が更新されない」とかいう、
常人にはさっぱり理解できない話だったと思うよ
894デフォルトの名無しさん:2008/02/07(木) 20:56:42
さぁ、200レス引っ張り続けるという記録の誕生も迫って参りました!!
895デフォルトの名無しさん:2008/02/07(木) 22:47:09
終わった話をひっぱってきた>>886は氏ねよって事で
896デフォルトの名無しさん:2008/02/07(木) 22:48:21
氏ねとかいうなよ
897デフォルトの名無しさん:2008/02/07(木) 22:49:35
いいから消えろよ
898デフォルトの名無しさん:2008/02/07(木) 22:54:07
諸悪の根源は>>700
899デフォルトの名無しさん:2008/02/07(木) 22:54:55
200レス目ゲット
900デフォルトの名無しさん:2008/02/07(木) 23:30:09
>>891
結局、よくわかんなかったんだけど
固定であろうが、可変であろうがキューイングをする意味ってなに?
901デフォルトの名無しさん:2008/02/07(木) 23:30:56
過去レスぐらい嫁。そしてとっとと消えろ。
902デフォルトの名無しさん:2008/02/07(木) 23:38:54
>>900
描画時間分を他の処理にまわす事ができる
>>865も読んでおけ
それでわからないなら君には使いこなせないから、諦めなさい
キューイングがなくても死にはしないから
903デフォルトの名無しさん:2008/02/07(木) 23:55:38
>>902
2枚とか3枚とかキューすると何がいいの?
904デフォルトの名無しさん:2008/02/07(木) 23:59:43
>>900
結局、よくわかんなかったんだけど
「キー入力押しっぱなし」じゃないと画面更新がされないんなら、
敵キャラやNPC,その他オブジェクトはいつ動くの?

そもそも「キー入力押しっぱなし」っていうのは日本語としてどうなの?

あと、今の時代に画面更新が秒間1フレームのゲームの意味ってなに?
905デフォルトの名無しさん:2008/02/08(金) 00:02:50
200突破したな
906デフォルトの名無しさん:2008/02/08(金) 00:26:29
>>903
いつの間に枚数を限定した話になったのかな?
とりあえず、1枚ならキューイングに意味があるのは理解できたって事だね

上の方にもあるが、2枚3枚はあくまでおまけ
可変フレームで組む場合、コマを飛ばすよりは比較的動きが滑らかに見える
可変フレームで組まないのなら意味はない
ゲーム限定の話に限らないなら、>>865の使い方も期待できるだろう

つまり固定フレーム派にとっては意味はないが、可変フレーム派には意味がある
それだけの話だ
君が使いたくないなら使わなければいいが、他人に不毛な意見の押し付けはやめような
907デフォルトの名無しさん:2008/02/08(金) 00:41:12
200突破もした事だし、そろそろ終了ってことで
キチガイの相手もほどほどに
908デフォルトの名無しさん:2008/02/08(金) 04:05:52
DX9のソフトをDX10に移植中なんですが、かなり困りっています。
ビデオ素材の部分の処理にVMR9を使っていたのですが、DX10だと使えないみたい。
EVRっていうのが新しいみたいなんですが、どうもDX9を前提としているよう。
DX10でビデオ素材を使う方法ってないのでしょうか?
909デフォルトの名無しさん:2008/02/08(金) 04:13:22
俺だったら余裕で自前で作れるな
910デフォルトの名無しさん:2008/02/08(金) 06:57:00
なんと意味の無いレス。これもそうだがw
911デフォルトの名無しさん:2008/02/08(金) 07:27:18
>>906
1枚でもキューイングっていうの?
なんかフリップするときに待ち時間を別のことに使ってるってぐらいの感じしかないけど
コマを飛ばすっていうか、そもそもワンフレの処理が間に合ってる状態で使っていい結果になるのか
処理が間に合っていない状態で使っていい結果になるのかそこの前提がわからない
912デフォルトの名無しさん:2008/02/08(金) 12:26:27
>>911
君の脳内の前提条件がどうだろうと知ったことではないよ

枚数が何枚だろうと、「キューイングに意味があるか」って話だったはずだが?
最初から処理が間に合ってる状態を前提にするんだったら、固定だろうが可変だろうが
キューイングしようがすまいが大した違いはない

「キー入力押しっぱなし」とかいう意味不明発言もそうだが、
自分の主張を押し通すために、後から勝手に脳内前提条件を加えるのはやめような
913デフォルトの名無しさん:2008/02/08(金) 12:40:20
>フリップするときに待ち時間を別のことに使ってる
どう見てもキューイングです。
本当にありがとうございました。
914デフォルトの名無しさん:2008/02/08(金) 12:47:03
>>910
自前で作るというのが質物の答えなんだろう
915デフォルトの名無しさん:2008/02/08(金) 14:22:56
>>911
コマンドをキューに受け渡し、その処理の完了を待つ事なく
次の処理を行う事をキューイングというんだよ。
2枚たまるとキューイング、3枚たまるとキューイングと
いうものじゃないから。
そんなに必死になってないで、いい加減落ち着いたら?
916デフォルトの名無しさん:2008/02/08(金) 15:11:14
そろそろ議論モードを解除してやれよ
>>911,903,900は純粋に質問してるんだろうから
917デフォルトの名無しさん:2008/02/08(金) 15:16:34
初心者が入り込めないスレになってしまったな。
918デフォルトの名無しさん:2008/02/08(金) 15:26:57
>>909
WMVやMPEG2デコーダーを使用しないといけないので、とても自前では無理です。
919デフォルトの名無しさん:2008/02/08(金) 15:28:17
真面目に議論してるところに初心者が朽ちだすのが悪い。
初心者は初心者スレ池。
920デフォルトの名無しさん:2008/02/08(金) 15:35:39
ついにスレタイも読めなくなったのか?
921デフォルトの名無しさん:2008/02/08(金) 15:39:41
いや前から
922デフォルトの名無しさん:2008/02/08(金) 15:44:49
>>918
コーデック使ってデコードしたデータを貼り付けるだけだろ。
VMRがやっている事をそのまま書くだけだ。
この程度もできないってどんだけレベル低いんだよwww
923デフォルトの名無しさん:2008/02/08(金) 15:52:46
そうか
ここはバカ隔離スレなんだな
924デフォルトの名無しさん:2008/02/08(金) 16:40:25
初心者ってそんなもんだよ
925デフォルトの名無しさん:2008/02/08(金) 16:55:47
>>918
自前で作る気もないんなら諦めるか前のバージョンに戻しなさい。
926デフォルトの名無しさん:2008/02/08(金) 17:02:15
初心者は(・∀・)カエレ!!
927デフォルトの名無しさん:2008/02/08(金) 17:02:21
>>916
議論という程の高尚なものではないけどな
過去レスも読めない馬鹿の相手をしていただけだろう
928デフォルトの名無しさん:2008/02/08(金) 17:16:07
>>914
レスありがとうございます。
ところで質物ってなんですか?
929デフォルトの名無しさん:2008/02/08(金) 17:17:29
>>928
質のある物のことですよ
930デフォルトの名無しさん:2008/02/08(金) 17:18:51
>>929
レスありがとうございます。
それと>>910に何の関係が?
931デフォルトの名無しさん:2008/02/08(金) 17:22:54
初心者とキチガイはまた別物
932デフォルトの名無しさん:2008/02/08(金) 17:23:29
元々無意味なレスに関連性を求めてどうしたいのですか?
933デフォルトの名無しさん:2008/02/08(金) 17:25:55
申し訳ありませんが直レスじゃないのでスルーします。
934デフォルトの名無しさん:2008/02/08(金) 17:26:41
誰に言っているのですか。
935デフォルトの名無しさん:2008/02/08(金) 17:28:23
はいスルー。
936デフォルトの名無しさん:2008/02/08(金) 17:28:46
みんなも俺のスルーカを見習えよ。
937デフォルトの名無しさん:2008/02/08(金) 17:29:03
スレを流したいのはわかるが、あまりにも必死すぎるぞ>>700よ。
938デフォルトの名無しさん:2008/02/08(金) 17:30:43
はいまたまたスルー。
939デフォルトの名無しさん:2008/02/08(金) 17:38:14
以降スルーでお願いします。
940デフォルトの名無しさん:2008/02/08(金) 17:51:16
┏━━┳┓┏┳┳━┳┳━━┓┏━━┳━━┳━━┳━━┓
┃┏━┫┗┛┃┃┃┃┃┏┓┃┃┏━┫┏┓┃  ━┫  ━┫
┃┗━┫┏┓┃┃┃  ┃┏┓┃┃┏━┫┏┓┫  ━┫  ━┫
┗━━┻┛┗┻┻┻━┻┛┗┛┗┛  ┗┛┗┻━━┻━━┛

.                 _∧∧_,
                // 中\ \
              ./  (  `ハ´)、 `、
             / /\ \つ  つ、ヽ
             | |  ,\ \ ノ  | |
             ヽヽ  し \ \) / /
              \ `\_____\' //
               ヽ、 ____,, /

941デフォルトの名無しさん:2008/02/08(金) 18:00:07
このバインダーどうすればいんだー
942デフォルトの名無しさん:2008/02/08(金) 18:13:10
次スレにテンプレとして>>700追加な
943デフォルトの名無しさん:2008/02/08(金) 18:15:50
イラネ
944デフォルトの名無しさん:2008/02/08(金) 18:17:24
スルーで
945デフォルトの名無しさん:2008/02/08(金) 18:24:07
そもそもお前よく考えろよ
そんなんで時間って短縮できるの?マジで?
だってさぁ、プレイヤーの入力を受け付けるから次の画面が決定する場合のが多いじゃん?
↑↓→←な
で、時間短縮ってさぁ、プレイヤーの入力は一定タイミングでくるし
入力を受け付けるまで次の画面って描画する意味ないじゃん
ていうか内部の処理が決定しなくね?
キューイングなんてどれだけ意味があるのかさっぱりわからないんだけど?
画面更新が仮に1sごとにくるなら1s以内で処理を終えても
次のフレームの処理なんてやってもたかが知れてると思うんだけど?
ていうか安定しなくね?そんな設計にしちゃそもそも駄目じゃね?

1フレ内での時間短縮は意味があるかもしれないけど
フレーム間同士の時間短縮ってなんかやる意味あんの?
946デフォルトの名無しさん:2008/02/08(金) 18:25:17
日本語でおk
947デフォルトの名無しさん:2008/02/08(金) 18:26:59
>>945
>入力を受け付けるまで次の画面って描画する意味ないじゃん
アニメーションって言葉知ってる?
948デフォルトの名無しさん:2008/02/08(金) 18:29:55
エロゲプログラマには縁が無い言葉なんだろう
949デフォルトの名無しさん:2008/02/08(金) 18:31:28
酷い自演だな
どう見ても>>700本人が流そうとしてるのが見え見え
楽しいかい?
950デフォルトの名無しさん:2008/02/08(金) 18:38:27
DX9とDX10の違いっておかしいだろ、DX10のテクスチャ用意しちゃった
951デフォルトの名無しさん:2008/02/08(金) 19:51:31
MSってManaged DirectXのやる気なくしたんですか?
952デフォルトの名無しさん:2008/02/08(金) 20:25:57
>>951
XNAに変わったんだっけ?たしか。
少なくともManagedDirectXの事は完全に忘れていい。
953デフォルトの名無しさん:2008/02/08(金) 20:57:53
>>952
なんか混沌としてますよね・・・
XNAをXBoxに絞って、Windowsは従来どおりアンマネージでガリガリ書くほうが
結局は正解だったんですよね
954デフォルトの名無しさん:2008/02/08(金) 20:59:33
PC上でXNAで作ったらXBoxで碌なパフォーマンスでませんでした
というのは良く聞くハナシ
955デフォルトの名無しさん:2008/02/08(金) 22:09:54
今以下のような方法で文字を表示してるんですが、ループ内で毎フレーム表示していると
次第に250あったFPSが2とかになって文字が表示されないわ、PC重くなるわって状況になります。
どっかで何かがリークしてるのかと思って、タスクマネージャで見てると最初ガンガン増えて
文字が表示されなくなると、数字は下がるんですが、PCからガリガリ音とか聞こえてきたりしちゃいます。

textはID3DFont*。colorはD3DCOLOR。どちらも正常な内容(と思う…)
void Graphics::drawString(const WCHAR* str,int x,int y,DWORD flag){
  nt len=wcslen(str);
  RECT rc = {x,y,x+font.width*len*2,y+font.height};
  text->DrawText(NULL,str,-1,&rc,flag | DT_SINGLELINE ,color);
}

何かやらかしてますか・・・?
956955:2008/02/08(金) 22:13:26
追記:ちなみにfontは自前の構造体のデータでwidthが文字の幅、heightが文字の高さです。
957デフォルトの名無しさん:2008/02/08(金) 22:13:41
その関数だけコメントアウトして比較しろ。話しはそれからだ
958デフォルトの名無しさん:2008/02/08(金) 23:04:30
>>957それはもうやってます。言うの忘れてました・・・。
DrawPrimitiveUPで矩形を描画するだけのループにしたところ、タスクマネージャは
緩やかに増加した後、81,000Kほどで止まりました。
959デフォルトの名無しさん:2008/02/08(金) 23:22:25
呼び出し元はどうなってんの
960デフォルトの名無しさん:2008/02/08(金) 23:33:35
昔からフレームレートまわりはMSのタイマー関数がおかしいのもあって喧嘩になるな
変なことしてる奴も自分のやってることが無意味であることを証明されたくなくて
話題がでるたびに隠そうとして必死だな

結局、プレイする側に変なこと気にさせるの嫌だろ?
普通に動けば普通に動くのが一番なんだから変なことはしないに限る

>>700もしつこいが、それ以上に他の奴が敏感に反応しすぎ
961デフォルトの名無しさん:2008/02/09(土) 00:00:27
>>959
Graphics *g;
・・・
g->drawString(L"もじもじ",120,120,DT_TOP | DT_LEFT);
こんな感じです。
962デフォルトの名無しさん:2008/02/09(土) 00:15:54
>>960
「おかしい」「喧嘩する」「変なこと」「普通に」
先生、これらがなんのことを指してるのか全然わかりません。
963デフォルトの名無しさん:2008/02/09(土) 00:18:36
・・・のところでnewしてる?
そんでもってどこでもdeleteしてない?
964デフォルトの名無しさん:2008/02/09(土) 00:31:10
>>962
なんでスルーできないんですか?
なんでスルーできないんですか?
965デフォルトの名無しさん:2008/02/09(土) 00:35:37
>>963
Graphicsオブジェクトはnewで作っていません。というかループ内にnewはありませんでした。
関係ないと思うけど、引数で渡したL"もじもじ"はちゃんとどこかで消えるんですか?
966デフォルトの名無しさん:2008/02/09(土) 00:35:54
引っ張るねえ
967デフォルトの名無しさん:2008/02/09(土) 00:40:47
まあとりあえず、>>960は日本語でおkって事で。
この脳内補間っぷりはまるで>>700だな。
968デフォルトの名無しさん:2008/02/09(土) 00:44:53
>>967
なんでスルーできないんですか?
なんでスルーできないんですか?
969デフォルトの名無しさん:2008/02/09(土) 00:46:07
>>965
よく分からんがnewしてなきゃぬるぽ?
970デフォルトの名無しさん:2008/02/09(土) 00:46:33
>>968=>>964
お前も必死すぎ
971デフォルトの名無しさん:2008/02/09(土) 00:49:55
>>965
Graphics *g;
まずこれを

Graphics *g = NULL;
このようにしろ

で、

g->drawString(L"もじもじ",120,120,DT_TOP | DT_LEFT);
ここのgに入っている値をチェック
972デフォルトの名無しさん:2008/02/09(土) 05:20:53
>>967
まるでというより、どう見ても本人です。
本当にありがとうございました。
973デフォルトの名無しさん:2008/02/09(土) 07:25:15
>>972
なんでスルーできないんですか?
なんでスルーできないんですか?
974デフォルトの名無しさん:2008/02/09(土) 08:15:19
>>973
鏡をみような
975デフォルトの名無しさん:2008/02/09(土) 08:19:01
お前らも俺のようにスルーカを磨けよ。
976デフォルトの名無しさん:2008/02/09(土) 10:24:18
お前らのやることなんか全部スルーっとお見通しだ!!
977デフォルトの名無しさん:2008/02/09(土) 10:39:01
m9(^Д^)スルーカー!!
978デフォルトの名無しさん:2008/02/09(土) 11:08:51
次スレ誰か立てろよ
979デフォルトの名無しさん:2008/02/09(土) 11:15:53
>>978
当然スルー
980デフォルトの名無しさん:2008/02/09(土) 11:37:49
>>969,971
ここでは説明を省きますが、とにかくGraphics*はNULLでもないし間違った値でもありません。
直前にg->setFont(font);などとしていますが、これらは正しく動いています。
で、まさかと思ってDrawTextだけをコメントアウトしたら、症状は治まりました!(もちろん文字は出ません)
DrawTextってBeginSceneやEndScene以外に何か前処理・後処理が必要なんでしょうか?
それとも引数おかしいでしょうか?
981デフォルトの名無しさん:2008/02/09(土) 12:02:17
まじめに質問してる人がいるのにこの流れはかわいそうw
982デフォルトの名無しさん:2008/02/09(土) 12:05:55
>>980
説明省くなよ・・・
あと、スプライトの設定は?g_pSprite->Begin()見たいな奴
983デフォルトの名無しさん:2008/02/09(土) 12:19:54
説明が足りなさすぎなんだよな
SDKのバージョンとか
D3DXのフォントつかってるのかどうかとか
LPD3DXFONTでやってるなら
DrawTextの第一引数に描画するためのスプライトを設定しないとダメははずだが
984デフォルトの名無しさん:2008/02/09(土) 12:54:09
>>982-983
スプライトは設定してませんでした・・・。描画されてたけどダメなんですかね?あとSDKのLibが
色々ごっちゃになっててバージョンはNovember 2007を使ってますが、
CBuilder_DX92_libsというのも混ざってます。コンパイラはBCC
とりあえず、バックバッファ取得→GetDC()→GDIのDrawTextで描画でメモリも増えず、
描画されたので、文字に関してはこれが安全そうなのでこれにします。お騒がせしましたm(_ _)m
985デフォルトの名無しさん:2008/02/09(土) 15:35:42
フォントを生成しておいて開放してなかったんじゃね?
986デフォルトの名無しさん:2008/02/09(土) 20:04:00
ID3DXFontとか使わんで自分で文字描画したほうがいいぞ。

ID3DXFontは重い。昔よかマシだけど。
987デフォルトの名無しさん:2008/02/09(土) 20:38:32
なにも考えないでアドベンチャーゲームとか作ると
3行15列のテキストを表示するだけで鬼のような重さになってたな
一度テクスチャに書き込んでRGBAのデータを作って
そのテクスチャを使って描画とかアフォなことしなきゃいけなかったな

いまもそうなのか?
988デフォルトの名無しさん:2008/02/09(土) 23:31:15
Win95が出た頃、俺はGameSDKの存在も知らず、SetPixelでキャラ描いてた。
989デフォルトの名無しさん:2008/02/10(日) 11:50:47
>>987
それを一文字単位でやってる
用途に関係なく速いし意外と難しくない
990デフォルトの名無しさん:2008/02/10(日) 12:39:40
エラー E2238 C:\Documents and Settings\My Documents\Myfolder\bccdev1221\3Dtest\Image.cpp 2: 'D3DXVECTOR4' の宣言が複数見つかった
エラー E2344 c:\Program Files\Microsoft DirectX SDK (November 2007)\include\d3dx9math.h 274: 一つ前の 'D3DXVECTOR4' の定義位置
エラー E2451 C:\Documents and Settings\My Documents\Myfolder\bccdev1221\3Dtest\Image.cpp 3: 未定義のシンボル D3DXVECTOR4
エラー E2451 C:\Documents and Settings\My Documents\Myfolder\bccdev1221\3Dtest\Image.cpp 16: 未定義のシンボル fillSurface(関数 Image::Image(unsigned int,unsigned int,int) )
エラー E2451 C:\Documents and Settings\My Documents\Myfolder\bccdev1221\3Dtest\Image.cpp 98: 未定義のシンボル D3DXVECTOR4

これってどういうことなのでしょう?明らかに定義されてるのに未定義と出てしまいます
991デフォルトの名無しさん:2008/02/10(日) 12:56:03
992デフォルトの名無しさん:2008/02/10(日) 12:58:18
馬鹿ばっか
993デフォルトの名無しさん:2008/02/10(日) 13:30:58
あなたはレベルアップした
フォント描画を覚えた


禿ワロ(w
994デフォルトの名無しさん:2008/02/10(日) 13:34:57
>>990
一行目のエラーが原因だろ。常考。

>>991
October 2004のSDKだと引数の多い方しか定義されていないな。
MSの日本語ドキュメントは更新が2002年で、
DirectX8.1英語ドキュメントのD3DXにHFONTを使った関数が説明されている所を見ると、
DirectX9の更新途中で、引数の多い方に切り替わったと解釈するのが妥当か。
995デフォルトの名無しさん:2008/02/10(日) 14:02:40
>>993
でもそういう日々の一歩一歩積み上げが大事なんだよね
なんかいきなりパワーアップを狙ってそいつに絶対できなさそうな質問ばっかりしてくる
新人みて改めてそれが大事だと思った
996デフォルトの名無しさん:2008/02/10(日) 15:58:26
>>994常考って・・・わざわざ最初にそれ書いてんのは未定義のシンボルが
明らかに単純なインクルードミスじゃないってことを示すためにやってるんだけど・・・
当然自前で書いたD3DXVECTOR4の宣言を消せば上2つのエラーは消えるけど、下のは残り続けるんです。
997デフォルトの名無しさん:2008/02/10(日) 16:29:52
なぜそれを最初の質問で書かないのか
998デフォルトの名無しさん:2008/02/10(日) 17:31:09
>>996
まだ出すべき情報が出ていないので何とも言えんがifdefはどうよ。
999デフォルトの名無しさん:2008/02/10(日) 17:51:59
>>998ifdefでどうするんでしょう?ていうかスレ立てないとやばそうね
1000デフォルトの名無しさん:2008/02/10(日) 17:54:52
そもそもお前よく考えろよ
そんなんで時間って短縮できるの?マジで?
だってさぁ、プレイヤーの入力を受け付けるから次の画面が決定する場合のが多いじゃん?
↑↓→←な
で、時間短縮ってさぁ、プレイヤーの入力は一定タイミングでくるし
入力を受け付けるまで次の画面って描画する意味ないじゃん
ていうか内部の処理が決定しなくね?
キューイングなんてどれだけ意味があるのかさっぱりわからないんだけど?
画面更新が仮に1sごとにくるなら1s以内で処理を終えても
次のフレームの処理なんてやってもたかが知れてると思うんだけど?
ていうか安定しなくね?そんな設計にしちゃそもそも駄目じゃね?

1フレ内での時間短縮は意味があるかもしれないけど
フレーム間同士の時間短縮ってなんかやる意味あんの?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。