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

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

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

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

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

【C++】 DirectX初心者質問スレ Part22 【C】
http://pc12.2ch.net/test/read.cgi/tech/1235736212/
2デフォルトの名無しさん:2009/05/22(金) 18:17:45
DirectSoundなんですが、ストリーミングでバッファを再生したあとロック長周期で音が繰り返し再生されてしまいます。
バッファに新しいデータを入れても古い音もしばらく鳴っています。
アーッと入力すると、アーッ、アーッ、アーッ、アーッ、アーッ・・・といった感じです。
どんな原因が考えられますか?
3デフォルトの名無しさん:2009/05/22(金) 18:33:09
データの差し替えが間に合っていない
4デフォルトの名無しさん:2009/05/22(金) 19:47:57
【 もうこなくていい方 】
・「DirectXにスプライトなどない」と何度もわめく馬鹿
5デフォルトの名無しさん:2009/05/22(金) 19:50:46
ところでDirect3Dではラスタスクロールが
出来ないらしいですが、本当ですか?
6デフォルトの名無しさん:2009/05/22(金) 19:52:50
>>5
嘘ですよ
7デフォルトの名無しさん:2009/05/22(金) 19:53:25
>>6
どうやるんですか?
8デフォルトの名無しさん:2009/05/22(金) 20:17:47
ピクセルシェーダーで余裕じゃない?
9デフォルトの名無しさん:2009/05/22(金) 20:20:36
Direct3Dにラスタスクロールなどない
10デフォルトの名無しさん:2009/05/22(金) 20:28:43
>>8
テクスチャサンプルする時に
±オフセットするのか
確かに出来そう
どうも
11デフォルトの名無しさん:2009/05/22(金) 20:36:00
ベクトルVと
単位長ベクトルNがあります。
VをNを境界に反転させたいのですが
公式がわかりません。
教えてください。

VとNの内積 < 0  ->  Vを反転させたい。
12デフォルトの名無しさん:2009/05/22(金) 20:46:57
スレ違いだ
13デフォルトの名無しさん:2009/05/22(金) 20:48:35
>>11

D3DXVECTOR3 NormalV ;
D3DXVec3Normalize ( &NormalV, &V ) ;
if ( D3DXVec3Dot ( &NormalV, &N ) < 0 ){
V = -V ;
}
14デフォルトの名無しさん:2009/05/22(金) 20:58:14
>>13
ちがくね?
15デフォルトの名無しさん:2009/05/22(金) 21:09:17
cos=a・b/|a||b|
を使うんじゃね?
16デフォルトの名無しさん:2009/05/22(金) 21:11:28
そもそも軸方向だけじゃ回転させれないだろ
原点はどこだ
17デフォルトの名無しさん:2009/05/22(金) 21:15:47
違うのは解ってる
最後の1行をそのまま式にしただけ
このままだとVとNの角度が90度を超えたときに逆方向を指すだけ
境界と反転をもうちょっと具体的に言ってくれたら直すけど
18デフォルトの名無しさん:2009/05/22(金) 21:19:55
>>16
原点は(0,0,0)です。

>>16-17
Nを法線とした原点を通る平面を
境界として反転させたいのです。
19デフォルトの名無しさん:2009/05/22(金) 21:23:58
わかりました!ご迷惑おかけ致しました。

平面に射影したベクトル + 平面の法線 * -平面とベクトルの先との距離
多分これだと思います。
20デフォルトの名無しさん:2009/05/22(金) 21:32:52
シェーダー使って2D描画する場合は自前でビルボード処理作ってやるの?
それとも、何か便利関数でもある?
21デフォルトの名無しさん:2009/05/22(金) 21:34:31
directXの関数って一々覚えてるんですか?
それとも必要なときに調べて、プログラムを作り上げていくんですか?
2219:2009/05/22(金) 21:39:51
といいますか、もっと簡単な方法でOKでした。
vertical = dot( N, V ) * N;
horizontal = V - vertical;
reverse = -vertical + horizontal;
23デフォルトの名無しさん:2009/05/22(金) 21:59:45
関係ない話題ですまないけど、じゃあさ
FM-TOWNSのスプライトはどっちにはいるの? ニセの方?
24デフォルトの名無しさん:2009/05/22(金) 22:05:29
DirectXと関係ない話を自分勝手に始めるな。
25デフォルトの名無しさん:2009/05/22(金) 22:25:06
>>22
マジでそんなんなる?
求めるベクトルをQとおくと

Q=2|V|cosθ-V

だよね?で
cosθ=dot(N,V)/|V||N|
をぶち込むとなんかちがくね?
ってなるんだけどちがうんかなぁ?
こんな計算久しぶりで死んだw
間違ってるかも(間違ってたらスマンコ)
26デフォルトの名無しさん:2009/05/23(土) 00:02:04
DirectX2D関連の質問もここでいいのでしょうか?

DirectX2DをVista環境で使用しています。ウィンドウ上に四角形を表示させて
マウスでその四角形をドラッグできるようにするプログラムを書いたのですが、
四角形をドラッグさせたときに、四角形ががたついてしまって困っています。
27デフォルトの名無しさん:2009/05/23(土) 00:04:36
そうか
28デフォルトの名無しさん:2009/05/23(土) 00:08:23
ディレクショナルライトの方向はどこですか?
29デフォルトの名無しさん:2009/05/23(土) 00:12:29
自分で決めて良し
3026:2009/05/23(土) 00:51:20
>DirectX2DをVista環境で使用しています。ウィンドウ上に四角形を表示させて
>マウスでその四角形をドラッグできるようにするプログラムを書いたのですが、
>四角形をドラッグさせたときに、四角形ががたついてしまって困っています。

単にメッセージループからマウスの座標情報を取り出すのに失敗している
だけでした。GetCursorPos関数を使うとすんなりとうまくいきました。
自己解決しましたので、一応報告しました
31デフォルトの名無しさん:2009/05/23(土) 02:05:31
VC++のMFCにて以下の内容のプログラムを作ってます。

○SDIのViewに格子模様平面をD3DPT_LINELISTで描画し、マウスのドラッグによってカメラを回転させる。

格子模様自体は描画されているのですが、どうしてもカメラの回転が行われません。
描画の流れは以下のようになっています。

@マウスの移動を検知してD3DXMatrixRotationYawPitchRoll関数でメンバ変数のカメラ用マトリクスを回転させる
Aバックバッファクリアm_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
Bシーン開始m_pd3dDevice->BeginScene()
Cカメラ設定m_pd3dDevice->SetTransform( D3DTS_VIEW, &m_matView );
Dプロジェクション設定m_pd3dDevice->SetTransform( D3DTS_PROJECTION, &m_matProj ); ※このマトリクスは最初一回のみ生成して変化なし
E頂点バッファのセットm_pd3dDevice->SetStreamSource( 0, m_pVB, 0, sizeof(D3DTLVERTEX) );
Fインデックスバッファのセットm_pd3dDevice->SetIndices(m_pIB);
G頂点フォーマットのセットm_pd3dDevice->SetFVF( D3DFVF_TLVERTEX );
Hインデックスバッファ描画m_pd3dDevice->DrawIndexedPrimitive(m_DrawType, 0, 0, m_max_vertex, 0, m_max_primitive);
Iシーン終了m_pd3dDevice->EndScene();
Jバックバッファからプライマリバッファへ転送m_pd3dDevice->Present( NULL, NULL, NULL, NULL )

今見るとEFGは最初の一回以降要らないかなとも思いましたが今は毎回やるようになってます。
回転が上手くいってないのかとカメラビュー用のマトリクスを作る際の初期値で見える角度を変えてみても
変化が無く、まったくCDが機能していない状態です。

やり方が間違ってるか、こういうミスの可能性があるという事があればご教授頂けないでしょうか?
よろしくお願いします。
32デフォルトの名無しさん:2009/05/23(土) 02:40:40
ワールド行列はどこ?
てか、ソースをうpってもらったほうが速そう
33デフォルトの名無しさん:2009/05/23(土) 03:01:24
>>31
D3DFVF_TLVERTEXは座標変換済みの頂点フォーマットだよ。
そのフォーマットを使った場合は、座標変換は飛ばされる。
34デフォルトの名無しさん:2009/05/23(土) 18:27:49
ttp://blogimg.goo.ne.jp/user_image/38/31/8cefbc7ec4af284bfa2c3dce431fec30.jpg



【。゚(゚´Д`゚)゚。】 ノムヒョン、少年の時に遊んだ裏山で命絶つ…
http://tsushima.2ch.net/test/read.cgi/news/1243064969/
35デフォルトの名無しさん:2009/05/23(土) 18:33:17
D3DXMATRIXA16を今使うメリットってあるんですか?
Pentium4だけしかパフォーマンスの向上は見込めないのでしょうか。
36デフォルトの名無しさん:2009/05/23(土) 18:55:02
Core2DuoやPhenomにSSEが載ってないとでも?
3731:2009/05/23(土) 19:31:49
>>33
ありがとうございます。
#define D3DFVF_MYVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1)
と定義してD3DFVF_MYVERTEXを使用することでカメラが動くようになりました。
D3DFVF_XYZのところをD3DFVF_XYZRHWにしてRHWの要素を入れてしまうと2D用に変換済みとして扱われてしまうという事ですね。

ここが怪しいとはまったく想像すら付いていませんでした。
38デフォルトの名無しさん:2009/05/23(土) 19:33:04
いや普通にヘルプにそう書いてあるだろう・・・
39デフォルトの名無しさん:2009/05/23(土) 19:59:58
>>36
命令セットが関係してたんですか。すっきりしました どうもです
40デフォルトの名無しさん:2009/05/23(土) 20:36:17
D3DXのやかんはスペキュラー光でテカテカする設定になってないですか?
41デフォルトの名無しさん:2009/05/23(土) 20:55:10
てかてかするかどうかはライティング(のスペキュラ光)の設定次第。
Teapod(やかんじゃないよ!)に直接は関係ない。
42デフォルトの名無しさん:2009/05/23(土) 22:55:32
やかんwwww
43デフォルトの名無しさん:2009/05/23(土) 22:56:21
D3DXCreateTeapotで作成したメッシュにとりあえず
for (unsigned int i = 0; i < mesh->GetNumVertices(); i++) {
data[i].tu = asinf(data[i].nx) / D3DX_PI + 0.5f;
data[i].tv = 0.5f - asinf(data[i].ny) / D3DX_PI;
}
の様にテクスチャを貼り付けたんですが、他にいい方法はありますか?
テクスチャで包み込むようにして貼り付けたいです。
44デフォルトの名無しさん:2009/05/23(土) 23:02:05
directxについて勉強できるサイトはありますか?
今ゲームを作ってるんですが、たとえばキャラを動かすときには1ピクセルずつ移動、画面を更新するという市よりをしてます
こういう処理を楽にするのがderectx・・ですよね?
45デフォルトの名無しさん:2009/05/23(土) 23:18:20
違う
46デフォルトの名無しさん:2009/05/23(土) 23:27:05
日本語でおk
47デフォルトの名無しさん:2009/05/23(土) 23:32:27
違うのですか、残念です
directxとはなんでしょうか?

公式サイトでは
>Windows のマルチメディア パワー、DirectX はグラフィックス・サウンド・3D アニメーションの最高のエクスペリエンスを皆さんにお届けします。
と書いてあるのですがさっぱりわかりません
48デフォルトの名無しさん:2009/05/23(土) 23:38:31
>>47
端的に言えば、ハードウェアを抽象化して一意な手法でそこにアクセスできる
手段を提供してくれるソフトウェアレイヤー。
49デフォルトの名無しさん:2009/05/23(土) 23:39:18
>>48
ありがとうございます全然分かりませんのでぐぐって出直してきます。
50デフォルトの名無しさん:2009/05/23(土) 23:51:39
やっぱだめでした。rockem3Dのサンプルソースを解析してるのですが、手に負えない所感です。
ぐぐっても解説サイトや入門サイトがヒットしません。
51デフォルトの名無しさん:2009/05/24(日) 00:00:31
rockem3Dって何?
ググってもまともに出て来ないぞw

俺には、アンタの言ってる事の方が手に負えない所感
52デフォルトの名無しさん:2009/05/24(日) 00:05:10
rockman3Dにみえた
53デフォルトの名無しさん:2009/05/24(日) 00:47:38
>>43
をお願いします。
54デフォルトの名無しさん:2009/05/24(日) 00:51:08
環境マップ
55デフォルトの名無しさん:2009/05/24(日) 01:21:47
ティーポットの各頂点の作りと言うか並びが分らないんだから、
UVを指定して1枚のテクスチャで包むのは無理

法線からキューブマップかスフィアマップをルックアップする方法しかないんじゃね
56デフォルトの名無しさん:2009/05/24(日) 08:48:24
急須のマテリアルはどこに用意されてますか?
57デフォルトの名無しさん:2009/05/24(日) 15:03:09
もうダメかもしれん・・・
ここ1ヶ月朝から晩までPCの前に張り付いてるのに打開できない・・・
58デフォルトの名無しさん:2009/05/24(日) 15:35:34
仕様が確定してないのが問題なのにソースコード睨んで悩む馬鹿に
この仕事は向かない
問題の切り分けができるようになる能力は必須だ
59デフォルトの名無しさん:2009/05/24(日) 15:38:07
球を作ったのですが横が長く見えます。
どうすればまん丸に見えますか?
60デフォルトの名無しさん:2009/05/24(日) 15:55:08
アスペクト比がおかしい
61デフォルトの名無しさん:2009/05/24(日) 16:39:22
あー石綿ね。
62デフォルトの名無しさん:2009/05/24(日) 17:16:07
>>57
1ヶ月も悩むくらいならソースうpれよ、みてやるから

>>59
射影行列を生成している部分
たぶんD3DXMatrixPerspectiveFovLHかそれに準ずる関数の
アスペクト比を指定する引数に1.0fが適当な値になってるんじゃない?
そこにレンダリングターゲットの「横/縦」の値をつっこむ
63デフォルトの名無しさん:2009/05/24(日) 17:51:01
D3DX_PI / 4.0f, 1.0f, 1.0f, 100.0f となってました。
変更したら出来ました。
64デフォルトの名無しさん:2009/05/24(日) 18:24:42
http://www.dotup.org/uploda/www.dotup.org59461.txt
>>62
お願いします
directsoundでマイク入力をスピーカーから出力したいのですが、音がバッファ分(1秒)遅れるうえに何回か繰り返されます。
65デフォルトの名無しさん:2009/05/24(日) 18:32:36
>>64
ソース見てないが、バッファという一旦溜める処理なのに
入力を遅延無しで出力出来ると思った根拠は?
66デフォルトの名無しさん:2009/05/24(日) 18:36:23
あーそれで差し替えが間に合ってないのね
mmioにバッファード入力?みたいなプールしておいて一定で出すみたいなのあった気がします
結局mmioやんなきゃならないのか・・・
67デフォルトの名無しさん:2009/05/24(日) 18:40:33
遅延を気にするのならASIOを使え
よってスレ違い
68デフォルトの名無しさん:2009/05/24(日) 19:02:40
D3DRS_AMBIENTとライトのAmbientは何が違うですか?
69デフォルトの名無しさん:2009/05/24(日) 19:18:49
D3DRS_AMBIENT→すべての物体に影響
ライトのAmbient→ライトの当たってる範囲のみ影響
70デフォルトの名無しさん:2009/05/24(日) 23:56:41
質問です。DirectX 9.0 (SDK October 2004) を使っています。
また、エフェクトでは HLSL を使い、ピクセルシェーダ 2.0 でコンパイルしています。

http://souko2.sakura.ne.jp/temp/mono.jpg

こんな感じに、ある 3D のシーンの一部の矩形を、モノクロ化しようとしていますが、
これの実現方法が分かりません…。

ちょっと説明しにくいのですが、球体などを描いた後、
矩形を 2D 物体として描画し、その際に矩形をモノクロ化しようと思います。
式としては、描画先の色を d、また、rgb 成分を [r][g][b] と表記するとして、

finalColor[r] = 0.1145f * d[r] + 0.5886f * d[g] + 0.2989f * d[b];
finalColor[g] = 0.1145f * d[r] + 0.5886f * d[g] + 0.2989f * d[b];
finalColor[b] = 0.1145f * d[r] + 0.5886f * d[g] + 0.2989f * d[b];

となります。
つまり、例えば最終色の [r] 成分を求めるために、描画先の [r][g][b] 成分が必要になりますが、
ピクセルシェーダでは描画先の色を使えないし、ブレンディング処理で D3DRS_BLENDOP を調べても、このような式を扱うオペランドは見つかりませんでした。
ここでつまってしまいました。

●制限
1.矩形の大きさや数は、毎フレーム変化する可能性があるので、その都度ステンシルバッファを作って…というのはできるだけ避けたい
(ステンシルバッファでどうにかなる問題かどうか分からないですが)
2.処理速度の都合上、シーンを一度テクスチャに描画し、ロックしてピクセルの色を取得し…というのも避けたい
(シーンの描画は直接バックバッファに行いたい)

制限2を破るしかないでしょうか?
何かいい方法があればお教えいただけないでしょうか。よろしくお願いします。
71デフォルトの名無しさん:2009/05/24(日) 23:59:08
ん?
普通にピクセルシェーダーでその矩形だけ描けばいいだろ。
72デフォルトの名無しさん:2009/05/25(月) 00:13:52
普通に描く…とは?

各物体をモノクロで描くのと、合成した後にモノクロ化するのでは結果は変わるので、
「各物体をそれぞれモノクロで描く」 のではなく、「合成後の結果をモノクロにしたい」 のです。
73デフォルトの名無しさん:2009/05/25(月) 00:19:49
一旦テクスチャに描くしかないと思う
74デフォルトの名無しさん:2009/05/25(月) 00:20:30
>>70
確かにアルファブレンディングでは内積出来ないね
考え付く方法としては2つ

@
1パス目に3Dシーンをテクスチャに描画
2パス目にテクスチャをバックバッファにコピー
3パス目にモノクロ矩形をバックバッファに描画

A
1パス目に3Dシーンをバックバッファに描画
2パス目にViewport(又はシザーなんたら)を変更して、
モノクロ部をバックバッファに描画

75デフォルトの名無しさん:2009/05/25(月) 00:21:50
>>70
テクスチャAにシーンをレンダリングする
テクスチャBに矩形情報をレンダリングする
テクスチャAをBの情報をつかって加工しつつバックバッファにレンダリング
じゃ、だめ?
76デフォルトの名無しさん:2009/05/25(月) 00:23:36
IDirect3DDevice9::StretchRectでバックバッファからデータ引っ張ってこれば?
だが普通はテクスチャに描画だろうな
うちの環境だと上の関数のが高速だったけど
77デフォルトの名無しさん:2009/05/25(月) 00:31:34
うーん、やはりテクスチャに描画するしかなさそうですね…。
IDirect3DDevice9::StretchRect も試してみます。

割とよく使いそうな処理だと思うのに、単純なシェーダとブレンディングのみで出来ないというのが意外でした。
ありがとうございました。
78デフォルトの名無しさん:2009/05/25(月) 00:54:10
テクスチャレンダリングをしたく無いとか自分勝手に制限つけといて
自分勝手なやり方を指して意外とか…もうねw
79デフォルトの名無しさん:2009/05/25(月) 08:11:27
ただのめんどくさがりさんにしかみえない
80デフォルトの名無しさん:2009/05/25(月) 08:30:02
テクスチャにレンダリングするのが普通なのにな。
バックバッファじゃ実質ARGB8888にしかかけないだろ。
81デフォルトの名無しさん:2009/05/25(月) 08:56:45
〜ラノベっぽく書いてみよう!〜  


   / ̄\  例文.
  | ^o^ |  「私はお腹がすいています。」
   \_/
   _| |_
  |     |
  ( 二⊃.| |  


1、例文を話し手に合ったくだけた文に、漢字→かな(カナ)またはかな(カナ)→漢字に直す。
2、テキトーに修飾や無駄な句読点や間を付加する。
3、(重要)過去の事実、または現在の状況をこれでもかと差し込む。
4、倒置、反復、擬人、擬態を用いる。



   / ̄\  完成例.
  | ^o^ |  「昼に食べたカツサンドはとっくの昔に別れを告げていて、俺の胃は今や開店休業状態だ。
   \_/   たった今でも次のお客さんを催促してしきりに呼び鈴を鳴らしてやがる。
   _| |_   つまり、俺のハラの虫はお怒りでグーグーグーグー唸ってるってことで、
  |     |  簡単に言えば俺は腹が減っているのだ。」
  ( 二⊃.| |
82デフォルトの名無しさん:2009/05/25(月) 11:55:09
いや、シェーダで出来るだろ?
83デフォルトの名無しさん:2009/05/25(月) 12:43:16
>>82
どうやってやるの?
一応D3D9前提だけど、D3D10なら
それでもいいから教えて。
84デフォルトの名無しさん:2009/05/25(月) 15:26:33
皆さんは右手系と左手系どっち使ってます?
私は左手系で組んでるんですけど、参考書が
全部右手系なんで、どっか間違ったらしく
今原因不明の逆回転病にかかって治せません。;;
85デフォルトの名無しさん:2009/05/25(月) 15:54:21
俺は基本的に右手派だけど、たまに気分転換で左手も使う。
86デフォルトの名無しさん:2009/05/25(月) 17:25:49
IDirect3DDevice9::CreateRenderTargetで作ったサーフェスに対してレンダリングするのと、
IDirect3DDevice9::CreateTextureにD3DUSAGE_RENDERTARGETを指定してつくったテクスチャに対してレンダリングするので、
なにか差があるのでしょうか?
87デフォルトの名無しさん:2009/05/25(月) 17:58:33
左手にマウス 右手でシコシコ
88デフォルトの名無しさん:2009/05/25(月) 20:34:11
金属みたいに見せるには
素材とライトはどうすれば良いですか?
89デフォルトの名無しさん:2009/05/25(月) 20:58:46
>>88
diffuseとspecularが同じ色だと金属っぽく、diffuseに関わらず
specularが光源の色と同じだとプラスチックっぽい感じになる。
90デフォルトの名無しさん:2009/05/25(月) 21:18:42
ほー
91デフォルトの名無しさん:2009/05/25(月) 22:06:54
じゃあspecularが全然関係ない色のときは何っぽくなるの?
92デフォルトの名無しさん:2009/05/25(月) 22:22:20
クックトランス鏡面反射で金属っぽいスペキュラが出来るらしいぜ
光る部分の形が変わるだけっぽいけど
93デフォルトの名無しさん:2009/05/26(火) 00:25:20
まぢれすするとだな
テクスチャ張ったほうが早い
94デフォルトの名無しさん:2009/05/26(火) 00:42:53
苦労する割りには視覚的効果薄いのばっかりなんだよね
効果あるのってバンプ、環境ぐれーじゃねぇのw
妙なシェーダに凝るよりはこれをうまく使えるようになったほうがいいと思うな
質感に関しては・・・
95デフォルトの名無しさん:2009/05/26(火) 00:56:57
HDR、被写界震度、モーションブラー、シャドウマップあたりはかなり見た目に豪華になるぞ。
96デフォルトの名無しさん:2009/05/26(火) 01:30:49
>>95
それ質感違うじゃん
そういう後で載せればいいのはとりあえずいいんだ
気分でON・OFFすればw
97デフォルトの名無しさん:2009/05/26(火) 06:52:29
シャドウマップは影のジャギーが酷い
実用レベルの影を出そうとしたら、テクスチャのサイズが大きくなりすぎる
分散シャドウマップを使えば良い感じになりそうだけど
俺の頭じゃ理解できん!
98デフォルトの名無しさん:2009/05/26(火) 07:34:22
モデリングツール上ではなくて実行時にはモデルのスケールは
センチメートル単位にするのが一般的だったりしますか?
99デフォルトの名無しさん:2009/05/26(火) 09:11:16
古い話で申し訳ないが、DirectDrawはネット上の記事を見ると、
アルファブレンドは対応してないと読める。
しかし、DirectDrawで描画しているようにバイナリ上からは見えるYU-RISは、
あれだけ多彩な描画エフェクトを整備している。
あれはCPUで実現しているんだろうか?
それとも他の方法だろうか。Direct3Dを呼び出しているようには見えなかったんだが……。
100デフォルトの名無しさん:2009/05/26(火) 12:03:54
初めまして

ゲーム中にSleep()以外でループ止めたいのですがどんなやり方がありますか?
効果音が鳴り終わるまで描画を止めたりしたいです

アドバイスお願いします

厚かましいかもしれませんがスレ違いだったら誘導お願いします
101デフォルトの名無しさん:2009/05/26(火) 12:05:32
何がしたいのか分からんが再生状態を取得して描画をスキップとかか?
102デフォルトの名無しさん:2009/05/26(火) 12:08:19
ループを作ったのが自分なら、どんな方法でも止められるだろ。
一般論ならそうなる。

効果音が鳴り終わるまで待つというなら、それは何で鳴らしているのかによってくるな。
効果音の再生を別のスレッドで行い、再生の終了が検出可能ならば
CreateEvent()/WaitForSingleObject()等で同期をかけるのが一般的か。
103デフォルトの名無しさん:2009/05/26(火) 12:12:12
えっと、コードにするとこんな感じです



音を鳴らす
if(m_count = 120) { // 2秒待つ
次のシークエンスへ
}
m_count++;

こんな感じでできればと思ってます

2秒待ってから次のシークエンスに移行したりです
104デフォルトの名無しさん:2009/05/26(火) 12:31:24
>>86
それはそのまま、サーフェイスとテクスチャの差になる。
テクスチャはサーフェイスのスーパーセット(コンテナ)なので
サーフェイス+αの機能を持つ。
具体的には、シェーダの入力パラメータとして再利用できるなど。

>>99
DirectDraw時代は、MMXでピクセルエフェクトが
定石だったような。QuakeとかDiabloとか。
まあD3Dを使ってるかどうかは、DependencyWalkerや
PIXとか使えばわかるんじゃない?
105デフォルトの名無しさん:2009/05/26(火) 12:52:46
>>103
if(m_count > 120)
{
描画
}
m_count++;
106デフォルトの名無しさん:2009/05/26(火) 13:14:42
>>104
そうか!
今までむしろサーフェイスがテクスチャを持っているんだと思ってた。
そう考えるとしっくりいくところもあるかなぁ。

で、やっぱりCPUでガリガリやるのか。
いまさら車の再発明するにはしんどそうな世界だな……。
やはりシェーダーいじりで作っていった方が無難か。
107デフォルトの名無しさん:2009/05/26(火) 14:21:49
頂点カラーをつけたXFileを表示させたいのですが上手くいきません

D3DXで読み込んでもデフォルトだと頂点カラーは読み込んでくれないみたいなのでCloneFVF
でD3DFVF_DIFFUSEを加えてもダメでした。

テクスチャステージの設定
SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
頂点カラーは
m_pd3ddevice->SetRenderState(D3DRS_COLORVERTEX, TRUE);
m_pd3ddevice->SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
m_pd3ddevice->SetRenderState(D3DRS_SPECULARMATERIALSOURCE, D3DMCS_COLOR2);

デバッグのウォッチ1という欄にもしかしたら関係するかも知れない表記があったのですが良く分かりません
http://appleloader.bbsnow.net/pic_loader/nomal/html/1_7.html

正方形に頂点カラーを付けただけですが書きだしたXFileをアップしたので頂点カラーが表示されるか見てもらえると幸いです
XFileに頂点カラーは定義されてました
http://down11.ddo.jp/uploader/download/1243314815.x/attatch
PASS : 0000

お願いします

長文失礼しました
108デフォルトの名無しさん:2009/05/26(火) 15:41:25
>>107
とりあえず、D3DXMeshの頂点バッファに
頂点カラー情報は乗ってるの?

>>107で行っている各種設定は、
頂点バッファに頂点カラーが含まれていることを前提とした
表示の為の設定です。
これらをいかに変えようが
元々無いなら、反映のしようがない。

D3DXLoadMeshFromX()系でXfileを読み込んで
頂点カラーが反映されないようなら、元々サポートしてないと
いうことなのかもね。

XFileもみたけど、、まともなviewer持ってないんで
これもよくわからん。
109デフォルトの名無しさん:2009/05/26(火) 17:11:17
残念ながら
ID3DXMeshインターフェースでは頂点カラーのデータは保持しません
別の手段を考える必要があるでしょう
110デフォルトの名無しさん:2009/05/26(火) 17:13:26
D3DXはDirectXではない
111デフォルトの名無しさん:2009/05/26(火) 17:17:30
レスありがとうございます

>>108
ブレークポイントを置いて調べたのですがD3DFVF_DIFFUSEはありましたが頂点カラーは渡されてませんでした

>>109
オリジナルのフォーマットで書きだして読み込むってことでしょうか?
112デフォルトの名無しさん:2009/05/26(火) 17:28:04
別に独自フォーマットにしなくても
Xファイルから頂点バッファに読み込んでいけばいいだけだと思うけど

そもそも頂点カラー付きXファイルで何がやりたいの?
それは本当に必要なの?
113デフォルトの名無しさん:2009/05/26(火) 17:41:21
オレは逆に頂点カラーの無いメッシュが存在することに驚いた。
全部の頂点が0xFFFFFFFFという扱いになるんだろうか?
114デフォルトの名無しさん:2009/05/26(火) 18:00:11
頂点カラーじゃなくて
マテリアルカラー*テクスチャカラーで描画することが多いからじゃ?
115デフォルトの名無しさん:2009/05/26(火) 18:28:22
レスありがとうございます
>> 112
趣味でゲームを作ろうと思っていて
頂点カラー付きのフィールドモデルを表示したいからです

確認したいのですが

>Xファイルから頂点バッファに読み込んでいけばいいだけだと思う
D3DXLoadMeshFromX()で読み込んでD3DXCreateMeshFVF()でメッシュを作ればいいのでしょうか?

それともD3DXLoadMeshFromX()で読み込んだ後ID3DXMESHから頂点バッファを取得して
なんらかの方法でXFileからの頂点カラー情報を直接頂点バッファに渡せばいいのでしょうか?
116デフォルトの名無しさん:2009/05/26(火) 19:25:16
>>115
多分だけど、今までの流れから
D3DXLoadMeshFromX()は頂点カラーを読み出さない。
だから、一旦普通にD3DXMeshを作ったら、
D3DXCreateMeshFVF()で、FVFにD3DFVF_DIFFUSEを
マージしたD3DXMeshを作り直す。
んで、頂点バッファをロックして頂点カラー成分を上書きする。
って形になるんじゃないかなぁ。
書き込むべき頂点カラーだけど、これはなんらかの形で
xfileから持ってくる必要があるだろうね。
これは一苦労だし、頂点カラーとD3DXMeshの組み合わせはお勧め出来ない?
117デフォルトの名無しさん:2009/05/26(火) 19:31:08
間違った、
D3DXCreateMeshFVF()じゃなくて
ID3DXBaseMesh::CloneMeshFVF()ね。
118115:2009/05/26(火) 19:31:10
>>116

レスありがとうございます

独自フォーマットも視野に入れつつアドバイス頂いた方法で試してみます
119デフォルトの名無しさん:2009/05/26(火) 20:30:16
太陽はライトの設定的にはどんな感じになるの?
120デフォルトの名無しさん:2009/05/26(火) 20:39:43
無限遠方の白色平行光源(デフォルト値)
121デフォルトの名無しさん:2009/05/26(火) 20:53:54
>>118
D3DXMeshの頂点バッファのデータみてみたけど
頂点カラーもデータ自体はロードしてるっぽいぞ
DrawSubset内で何かいらん処理をしてるんじゃなかろうか
ロードはいままで通りD3DXMeshで読み込んで
取得した頂点バッファとインデックスバッファを使って
DrawIndexedPrimitiveで描画すればいけるんちゃう?
122デフォルトの名無しさん:2009/05/26(火) 21:34:17
>>119

エミッシブが白の球体
123デフォルトの名無しさん:2009/05/26(火) 22:48:47
半加算合成で
アルファ値が0の時はうっすら表示
アルファ値が255の時は普通に表示
であってますか?
124デフォルトの名無しさん:2009/05/26(火) 22:58:27
半加算って意味わからんが、
アルファが0なら完全に見えないだろ。
125デフォルトの名無しさん:2009/05/26(火) 23:00:22
ですよねー
どこで間違ったorz
126デフォルトの名無しさん:2009/05/26(火) 23:07:21
>>123
どう表示するかはレンダーステートの設定次第。
127デフォルトの名無しさん:2009/05/26(火) 23:29:55
device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

device->SetRenderState(D3DRS_TEXTUREFACTOR, color);

device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_DIFFUSE);
device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
device->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TFACTOR);

device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);
device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
device->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR);

こんな設定です。
128デフォルトの名無しさん:2009/05/26(火) 23:34:18
>>107

データを見てみました。

D3DXLoadMeshFromXで読み込んだところ、
メッシュのFVFは( D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE )になり、
メッシュ内の頂点バッファのデータにも頂点色(Diffuse)が存在しました。
(Xファイル内の頂点色と同じ値でした)
また、DrawSubsetによる描画でも頂点色が反映されました。
ただし、Ambientは頂点データに存在しないのでマテリアルのものが使われました。
(陰の部分に頂点色が反映されない)
あと、2個目のサブセットのマテリアルのEmissiveに、黒以外の値が入っているので
描画時にそれが使われて自己発光していました。(白っぽく表示された)

ということで…、
pDevice->SetRenderState( D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_COLOR1 );
で、頂点色(Diffuse)をAmbientとして使う設定にし、
マテリアルのEmissiveを黒(0.0f, 0.0f, 0.0f, 1.0f)にすれば、
たぶん>107さんが意図している表示になると思います。
129デフォルトの名無しさん:2009/05/26(火) 23:40:06
いやもうシェーダー使おうぜ・・・
130デフォルトの名無しさん:2009/05/26(火) 23:50:06
>>127
加重平均の式書いてみろよ

srccolor x α + destcolor x (1-α)

だろ?
ちゃんとなってるか自分で確認しろ
131デフォルトの名無しさん:2009/05/27(水) 00:07:17
Aキーを連打した回数をカウントしたいと思っているのですが、

int count=0;
if(DXUTIsKeyDown('A'))
{
count++;
}

のように記述しても、一回しかカウント変数にプラスされずに困っています。押すたびにカウントされるようにするにはどうすればいいのでしょうか?
132デフォルトの名無しさん:2009/05/27(水) 00:25:33
>>131
プログラム書いたことあんの?w

int count=0;

これで毎回初期化されてるから0なんだろ?
staticで逃げられるけど
どうも状況を想像するにそれで逃げられるとは思えないなw
133デフォルトの名無しさん:2009/05/27(水) 06:57:59
>>121さん
>>127さん

レスありがとうございます
試してみます!
134107:2009/05/27(水) 08:17:29
>>128さんのやり方でやったら黒以外の頂点カラーは表示されました

黒を表示したいのですがどうやればいいのでしょうか・・・?

赤や青はちゃんと頂点カラーとして思い通りに表示されました

アドバイスよろしくお願いします
135デフォルトの名無しさん:2009/05/27(水) 08:38:56
もう厭だあああああああ
136デフォルトの名無しさん:2009/05/27(水) 14:26:50
>>134
黒って何?
 11;0.070588;0.000000;0.015686;1.000000;,
これの事? ちゃんと表示されるよ

ためしにXファイル最後のほうのマテリアルのエミッシブの
 0.784314;0.784314;0.784314;;
をすべて0.0に修正して表示するとどうなる?
137134:2009/05/27(水) 19:12:36
レスありがとうございます

m_pd3ddevice->SetRenderState(D3DRS_EMISSIVEMATERIALSOURCE, D3DMCS_COLOR1);
にしたら思い通りに描画されました

しかし黒線の中だけ頂点カラーが反映されていませんでした
オブジェクト回転させてみたら正面向くときだけ壁の部分が頂点カラー反映されなくなるので
ライトに問題があるのかもしれませんので調べてみます

XFileのマテリアルは一律
Material {
1.000000;1.000000;1.000000;1.000000;;
51.200001;
0.000000;0.000000;0.000000;;
1.000000;1.000000;1.000000;;
TextureFilename {
"テクスチャ名";
}

}

となっています

ここが問題かもしれないというのがあればアドバイスください
よろしくお願いします
138デフォルトの名無しさん:2009/05/27(水) 19:13:18
画像へのリンクです
http://appleloader.bbsnow.net/pic_loader/nomal/html/1_9.html

連投すいません
139デフォルトの名無しさん:2009/05/29(金) 01:26:37
メタセコとかで表面を丸くする機能ってよく使われてるけどDirectXでもそういう機能があるんですか?
140デフォルトの名無しさん:2009/05/29(金) 01:49:37
ありません
自分で実装する必要があります
141デフォルトの名無しさん:2009/05/29(金) 01:55:46
>>139
リアルタイムでそんな機能いらないだろw
142デフォルトの名無しさん:2009/05/29(金) 02:05:14
やっぱりポリゴン数を増やして丸くするわけですよね?
だから重くなるし必要ないのかな?
なんでそんな機能があるんだろう
143デフォルトの名無しさん:2009/05/29(金) 02:32:59
>>142
モデリングソフトには必要な機能だろ
なにもリアルタイム3Dばっか作ってる人だけじゃねぇし
どんだけ想像力ないんだよw
144デフォルトの名無しさん:2009/05/29(金) 02:34:02
誰も彼もがリアルタイム3Dをやってるわけじゃない
それに、増えたポリゴンを摘んで造詣するなど、モデラならではの利点もある
145デフォルトの名無しさん:2009/05/29(金) 02:38:49
そっかそっか
まあ一瞬で軽い処理だけでできないってことがわかったのでサンクス
146デフォルトの名無しさん:2009/05/29(金) 02:49:41
>>143
ベトナムで生き別れた兄さん!
147デフォルトの名無しさん:2009/05/29(金) 02:50:57
>>145
いや別にやってやれないこともないんじゃない?
なにか条件を絞り込むとかさ
148デフォルトの名無しさん:2009/05/29(金) 03:10:50
ポリゴン数増やすとかメンドイから
ライティングを頂点シェーじゃなくて
法線の線形補完とかでピクセルシェーダでやれば
実際のポリゴン数よりなめらかに表示されるんじゃない?
実装も簡単だし
ただし、激重になる可能性はあるが
149デフォルトの名無しさん:2009/05/29(金) 06:01:35
同じことをDXUTを使ってするのと使わずにするのではどちらが重くなりますか?
150デフォルトの名無しさん:2009/05/29(金) 07:34:45
馬鹿が書いたらどっちも重い
151デフォルトの名無しさん:2009/05/29(金) 08:09:21
CPUをコア1個分まるまる占拠するようなゲームループしか作れないようならDXUTつかっとけ
152デフォルトの名無しさん:2009/05/29(金) 08:50:39
一応DirectX11にはポリゴン分割して曲面作る機能がつく
153デフォルトの名無しさん:2009/05/29(金) 09:18:26
Nパッチなら、DX9で
ちょっとした変更で簡単に出来た気がする
154デフォルトの名無しさん:2009/05/29(金) 09:35:21
メーカー依存のやつだろ?
155デフォルトの名無しさん:2009/05/29(金) 10:30:51
>>151
そんな状況あるのか?
流石に一個まるまる使う事はないだろw
156デフォルトの名無しさん:2009/05/29(金) 10:35:48
フレームレートを一定にするために
while( oldClock+1000/60 > clock() );
してCPU100%使ってたのは俺だけでいい
157デフォルトの名無しさん:2009/05/29(金) 11:03:37
よく入門書とかにあるような

while ( TRUE ) {
if ( PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) ) {
if ( !GetMessage(&msg, NULL, 0, 0) ) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
} else {
if ( フレームレート制御 )
{
GameLoop() ;
}
}

とかやると100%いくんでない?
158デフォルトの名無しさん:2009/05/29(金) 11:19:11
Sleep(0);じゃだめ?
159デフォルトの名無しさん:2009/05/29(金) 12:13:58
それでも良かった気もするが
ちゃんとやるならあとどれだけ待つか計算してそのうち何%くらいかでSleepかけるかな
160デフォルトの名無しさん:2009/05/29(金) 14:27:12
初めてから3日目になります。
ディレクショナルライトを設置したのですが、どうもうまくいきません。
表示しているのは、板ポリゴン1枚、メッシュ球(sphereで作った)、メッシュ人体(Xファイル読み込み)です。
ライトをオフにすると全部表示されますが、オンにすると球だけ光が当たり他は真黒になってしまいます。
原因として何が考えられるでしょうか?
161デフォルトの名無しさん:2009/05/29(金) 15:06:17
>>160
法線データがない
162デフォルトの名無しさん:2009/05/29(金) 16:35:01
そもそもDirect3DならPresent呼ぶたびにフレーム分待つんじゃないの?
163デフォルトの名無しさん:2009/05/29(金) 17:21:01
指定できるけどな
Present後すぐに次のフレーム向けの処理に移行したい等で待たない事もある
164デフォルトの名無しさん:2009/05/29(金) 17:57:47
>>162
基本的にいまどきのビデオカードなら、VSYNC同期を指定してもPresentで待たない。
ドライバの設定で指定できる(隠し設定の場合もある)フレーム数までキューが
溜まるまでは、バッファに溜め込むようになっている。
(そのために暗黙的にバックバッファを余分に作っている)

キューが上限に達したら、どこでブロックするのかは確認してないが、多分Presentか
あるいはBeginSceneで画面が更新されるまで待たされる。
そういう意味では、Presentで待つとも言える。

しかし、GPUが描画した結果に対してLockしてCPUからアクセスするようなことをすると
描画が終わるまで待たないといけないので、そこで処理がブロックされてしまう。
そのような意図がなくてもLockのフラグ指定等を間違えて使っていると、無駄な
描画待ちでパフォーマンスが落ちる。
また、SetTextureやSetRenderTargetをしたままにせずに、Presentの前に明示的に
解除して、GPUにもう必要ないというヒントを与えることも重要らしい。

ただし、このような描画命令のバッファリングは、その分画面が更新されるまでに
遅延が発生するので、アクション性の高いゲームでは嫌われる。
その場合に昔からよく使われる対策が、Presentの直前でバックバッファをLockして
強制的に描画待ちを発生させる方法。(MSはLockではなくQuery使えと言ってるが)
165デフォルトの名無しさん:2009/05/29(金) 22:54:46
で?
166デフォルトの名無しさん:2009/05/29(金) 23:13:49
>>165
オレは164の情報が素直に参考になった口なんだが。
いつもPresent()なんで何も考えずにNULLしか渡してないもんな。
167デフォルトの名無しさん:2009/05/29(金) 23:39:12
ていうかちゃんと一定間隔待つだろ
垂直同期かどうかはしんねーけど
昔作ったアプリの挙動が変わるとかいうバグはいまのところないし
168デフォルトの名無しさん:2009/05/29(金) 23:45:11
待つか待たないかはPPのPIで変えられるって話
169デフォルトの名無しさん:2009/05/30(土) 00:57:27
>>161
ありがとうございます。
D3DFVF_NORMALを追加したら表示されました。
170デフォルトの名無しさん:2009/05/30(土) 06:06:02
今まで普通に見えてたオブジェクトがプロジェクトのファイルの場所とかソースのファイルの場所とかいじってたら黒くなって見えなくなったんだけどなんで?
171デフォルトの名無しさん:2009/05/30(土) 06:54:55
実リソースへのパスが変わったからにしか思えんが…
172デフォルトの名無しさん:2009/05/30(土) 07:16:47
デスクトップのフォルダ→ヴィジュアルスタジオのファイル、デバッグのフォルダ、DXUTソースのフォルダ、DXUTのヘッダのフォルダ、ソースやリソースのフォルダ
に分けて、パスも名前\\ってつけたしプロパティでユニコードとかいくつか設定をしてデバッグしたら
今までエラーが出なかったクリック時の変数の初期化でエラーが出て、これはヌルで初期化したら解決した
でアニメーションはちゃんとしてるのに物体が真っ黒
元と大体同じはずなのになんで?DXUTの問題とかエフェクトファイルの場所とか?
173デフォルトの名無しさん:2009/05/30(土) 08:38:24
>でアニメーションはちゃんとしてるのに物体が真っ黒
初めの質問で、これを出さない時点で、
残念ならがお前はプログラムするのには性格やら能力やら諸々向いてない

明らかに、テクスチャかライティングの問題
大方、Xファイルが指す画像ファイルのパスが変わったんだろ
174デフォルトの名無しさん:2009/05/30(土) 08:42:59
そういえば動かない板メッシュやxファイルは普通にテクスチャも貼られてるのにアニメーション付きのだけ黒い
経験が浅いからどこが重要かわからないのは誰でもあることなんじゃないか?
175デフォルトの名無しさん:2009/05/30(土) 08:59:08
プログラミングの経験が浅いのと
質問する内容をちゃんと伝えられない、のはまったく別の問題

そんな奴は、プログラミングのスキルが上がった所で
自分しか知らない事を伝えもしないで、それを前提で質問とか平気でする
だからプログラマ(その他もろもろの仕事に)向かない
176デフォルトの名無しさん:2009/05/30(土) 09:17:25
ソース自体は変わってないし元々ちゃんと写ってたわけだからねえ
だからライティングではないと思うしソース中のXファイルのパスはちゃんと変えたし
177デフォルトの名無しさん:2009/05/30(土) 09:19:49
  プログラミングの経験が浅いのと
  質問する内容をちゃんと伝えられない、のはまったく別の問題
  そんな奴は、プログラミングのスキルが上がった所で
  自分しか知らない事を伝えも/ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ 質問とか平気でする
\ だからプログラマ(その他も |  うるさい黙れ   |              /
   ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\_______/ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                           ∨      (゚д゚ ) ぐおおお
                          <⌒/ヽ-、__ノヽノ |
                        /<_/____/ < <
178デフォルトの名無しさん:2009/05/30(土) 09:26:40
ああ位置だな多分サンクス
179デフォルトの名無しさん:2009/05/30(土) 09:26:49
>ソース中のXファイルのパスはちゃんと変えたし

だから、質問するくらいのレベルなのに知ったかすんな
Xファイル”内”、にパス付きで画像ファイルが指定してあるだろ
それと整合取れてるのか?って話
180デフォルトの名無しさん:2009/05/30(土) 09:27:47
>>179
そうこれだわ多分サンクス
181デフォルトの名無しさん:2009/05/30(土) 09:31:15
>ソース自体は変わってないし元々ちゃんと写ってたわけだからねえ
>だからライティングではないと思うしソース中のXファイルのパスはちゃんと変えたし

自分でやったのはフォルダの位置変えだけなのに、
パスの問題だと思えない時点 & 自分に落ち度が無いかの如くの発言
してる時点でプログラマを通り越して、まともな社会人になれないと思うww
182デフォルトの名無しさん:2009/05/30(土) 09:32:49
完全独学プログラム暦1年で3Dゲーム作ってる超絶センスなのにセンス無いとか言われてもグサッとこないんだよね
183デフォルトの名無しさん:2009/05/30(土) 09:50:13
いままでの流れのレスを見て”超絶センス”とか行ってる時点で
凡人以下が勘違いしちゃってるとしか思えんw

それにDXUTやD3DXを使ってるくせに、3Dゲーム作ってるセンスってww
184デフォルトの名無しさん:2009/05/30(土) 09:51:29
プログラマに向かないとか
社会人になれないとか
それはDirectXに関わる話か
185デフォルトの名無しさん:2009/05/30(土) 09:56:01
論的に考えればDirectXなんて全然関係ない質問を
まとに聞く事も出来ず、しかも自分の落ち度も省みず、質問者の姿勢としてもなってない

これのプログラマや社会人としての適正意外、なにを指摘しろとw
186デフォルトの名無しさん:2009/05/30(土) 10:01:47
あ?DXUTとかD3DX使ってゲーム作ったらセンス無いんか?
別にデバイスがどうのとか知らなくてもPC上の高速な3Dゲー作れるだろうし問題なくね?知らないけど
187デフォルトの名無しさん:2009/05/30(土) 10:02:21
directshowのサンプルってどのバージョンのSDKに入ってます?
188デフォルトの名無しさん:2009/05/30(土) 10:04:36
ライブラリ使おうが、使いこなせればセンスあると言える

使いこなせないで、
”3Dゲーム作ってる超絶センス”
とか、もうライブラリ機能を自分の能力と勘違いしてるだろ
としか言い様がない
189デフォルトの名無しさん:2009/05/30(土) 10:04:45
俺も最初は下から言ってたんだけどさ、結局役に立たないってことに気づいちゃったのね
覚える事の方が多いし、時間が経てば自力で気づくし
だから甘やかさないことにしたんだよね、まあ今回はちょっと解決が早まったから感謝してるけど
190デフォルトの名無しさん:2009/05/30(土) 10:06:31
>>186
DXUTを選んでる時点で"センス"はないね。
1年で3Dゲームを作ったという点は確かに立派だけど。
DXUTを使ってる時点で"高速"なゲームでもない。
たんに最近のハードウェア任せのごり押しに過ぎない。
191デフォルトの名無しさん:2009/05/30(土) 10:08:50
超絶センスがあるくせに
DirectX初心者質問スレで頓珍漢な質問&レスをした挙句
それで解決して言う事が、ピリッと違いますね
さすが、超絶センスの持ち主
192デフォルトの名無しさん:2009/05/30(土) 10:09:36
別に、DXUTで間に合ってる人はそれでいいじゃないか。
物足りなくなったときに、より低レベルのものに取り組めばいい。
193デフォルトの名無しさん:2009/05/30(土) 10:12:55
>>187
9のExtrasかDX8、mediasdk辺り。
194デフォルトの名無しさん:2009/05/30(土) 10:17:12
>>192
普通の人はね
でも、自称3Dゲーム作る超絶センスがある持ち主は別なんじゃないかね?

例えば
物理演算ラリブラリを使って1日で物体の挙動が物理制御できたら
物理演算の超絶センスがあると言えるのか?
195デフォルトの名無しさん:2009/05/30(土) 10:17:47
高速つっても目指してるところはプレステ1とか64レベルだしDXUTでいけるだろ今までの感触的に
196デフォルトの名無しさん:2009/05/30(土) 10:22:43
別に描画システム自体どんどん開発されていくのにお前らの思ってる描画の仕組みをどれだけ知ってるかみたいなことをセンスとか言っても何の意味も無いと思ってるけどね
別にDirectXとかゲーム機作りたいわけじゃないし
197デフォルトの名無しさん:2009/05/30(土) 10:22:54
でたw
得意の後だし情報の追加ww
プレステ1とか64レベルを指して光速なんて、お前意外に知るかって話だwww
198デフォルトの名無しさん:2009/05/30(土) 10:26:17
自分でやったのがフォルダの位置変えだけなのに、パスの問題を疑う事すら出来ない時点で
プログラマのセンスが無いと思うが…

出来合いのシステムを使おうが、センスある奴は理解して
頓珍漢なはまりなんてしないんだよ、はまってる時点で何を言おうがセンスは無いだろ
199デフォルトの名無しさん:2009/05/30(土) 10:26:48
お前らの言う高速って最近の妙にリアルな切り合いとかっぽいしな
まあDXUT外すとか俺のセンスから言えば1ヶ月もあれば余裕でできるだろとは思ってる
200デフォルトの名無しさん:2009/05/30(土) 10:29:48
でもどっちかっていえば
>>196の方がプロよりの考えだよね。
201デフォルトの名無しさん:2009/05/30(土) 10:30:41
つまり、その1ヶ月はこのスレで楽しませてくれるとw
202デフォルトの名無しさん:2009/05/30(土) 10:33:35
>>200
プロは基本を理解してるからこそ、人様の物を利用して早く終らせようとする

基本がなって無い奴が、御託を並べて人様の物を使っても
使いこなせなくて、このスレとかで頓珍漢な質問をする羽目になる
203デフォルトの名無しさん:2009/05/30(土) 10:36:58
例えば、
プロドライバーなどが、アクセル踏んだままクラッチ操作して車の挙動を制御したとしよう
それは、アクセル、クラッチ、エンジン等の車の挙動を理解して、自分の行動の結果をわかってるからこそ

教習所に通ってるレベルの奴が、アクセル踏んだままクラッチ操作だけをまねしても
クラッチ壊すのがオチ
204デフォルトの名無しさん:2009/05/30(土) 10:40:06
でも専門学校のやつが1年でDirectX直接叩きで3Dゲーム作ってんの見てたから
「DXUT使える俺超センス」とか言われても微笑ましさしか感じないって言う。
205デフォルトの名無しさん:2009/05/30(土) 10:42:19
神降臨の悪寒
206デフォルトの名無しさん:2009/05/30(土) 10:46:33
自分でシステムを作れるが、時間がかかるので利益を出すために他の出来合いのシステムを利用するのがプロのプログラマ
自分でシステム作れないが、他の出来合いのシステムを利用だけすることが出来るのがコーダー作業員w
207デフォルトの名無しさん:2009/05/30(土) 10:51:40
DXUTに文句つけてるのって
どうせNIH症候群のライブラリ厨だろ?
良くある簡易ライブラリと違ってDXUT使ったからって
低レベル操作ができなくなるわけじゃないし
時間掛けてもしょうがない所は何でもつかってでも短縮して
本当に時間を掛けるべき所に力をいれた方がいい
208デフォルトの名無しさん:2009/05/30(土) 10:58:09
ほら、事の発端なのにDXUTが何やってるとかあんまり理解して無い俺と大体同じこと思ってる人が現れたじゃん
俺をセンス無いと言うならこの人を論破しろよな
209デフォルトの名無しさん:2009/05/30(土) 11:02:00
そうやってDXUTやD3DX使うのはまったく問題ない
しかし使いこなせないで、DXUTやD3DXの使い方を質問する位なら
DXUTやD3DXが何をやってるか理解出来るレベルになって使わないと
時間をかけたいところすら出来ないレベルの連中が多いだけ

DXUTやD3DXが何をやってるか理解出来てるなら
自分で使う事のトレードオフを考えたり、なにより使いこなせない訳ないし
210デフォルトの名無しさん:2009/05/30(土) 11:04:12
>ほら、事の発端

歪曲するなよ
3Dゲーム作ってる超絶センスの持ち主が
実は、DXUTやD3DX使ってます、って話だろ
211デフォルトの名無しさん:2009/05/30(土) 11:04:14
DXUTがそうとは言わないけど
ある程度安定して動くと分かってるシステムがあったら迷わず使っちまうなぁ
システムから作り始めたらそこのデバックやらバグ取りやらで
結構な時間使っちまうし、納期は待ってくれないし
システムから作りたいってことは
もしシステムに致命的なバグがあって、それで損害とか出しても
責任を取るって覚悟があるってことでしょ?
そこは素直にすげーって思える
212デフォルトの名無しさん:2009/05/30(土) 11:07:35
>DXUTがそうとは言わないけど

確かに実際にそうではないね
DXUTを使ってPCゲーを商業ベースで出してるなんて聞かないし
そもそもDXUTに不具合があってもMSが責任あるわけじゃないし
213デフォルトの名無しさん:2009/05/30(土) 11:11:15
ところでDXUTってそんな便利でお手軽なもの?
ある程度DirectXを理解してる人にとっては
手間を省く手段になり得るものだとは思うけど
初心者が関数をぽんぽんっと呼べば何でも出来るようなものだっけ?
214デフォルトの名無しさん:2009/05/30(土) 11:13:29
自分のソース中でロードしてないくせに

BMPとして完全に別ファイルにあるテクスチャ画像を

XファイルとD3DX使って、あまつさえテクスチャ画像を移動させといて、

黒くなって描画されませんと言う奴が、自称

”3Dゲーム作ってる超絶センスの持ち主”

世も末だね
215デフォルトの名無しさん:2009/05/30(土) 11:15:54
D3DXの市販ソフトでの採用例は、枚挙に暇がないがな。
216デフォルトの名無しさん:2009/05/30(土) 11:16:38
センスある奴は、その時点で
Xファイル内に画像ファイルの情報が入ってる、と気が付くと思うけどねぇw
217デフォルトの名無しさん:2009/05/30(土) 11:16:54
>>212
DirectXを使ってるのはPCゲームだけじゃないぞ
DXUTベースで動いてるソフトは意外とある
DirectXAppWizardベースで動いてたゲームも結構あるしな

マイクロソフトが責任を取ってくれるわけじゃないけど
自分でデバックしなくてもある程度のバグが既知になるだけで結構違うと思う
218デフォルトの名無しさん:2009/05/30(土) 11:17:52
ちなみにDirectX始めてからは半年くらいなんだぜ?すげえだろ
だからなんでDXUTとD3DX使ったらセンスが無い事になるんだよ
本をマッハで読めてメモリやらポインタやら一瞬で理解してコードとか暗記して手打ちできる奴以外センス無いとか言う電波論なわけ?
219デフォルトの名無しさん:2009/05/30(土) 11:20:17
DXUTと上げて市販のゲームと話してるのに、D3DXが何で出てくるんだ?

こんな会話と同義だろ

2千円札なんて流通してないよね?
回答)千円札の流通なんて枚挙に暇がないがな

???
220デフォルトの名無しさん:2009/05/30(土) 11:23:20
ちなみに枚挙に無いのはいとまだろと言ってみるテスト
と言おうとしていとまを変換したら暇になったってのは秘密だぜ
221デフォルトの名無しさん:2009/05/30(土) 11:25:03
>>218
お前は自分に都合の良い解釈を辞めろw

パスの問題で頓珍漢な質問して、プログラムのセンスが無いという話と

”3Dゲーム作ってる超絶センス”を自称して
DXUTやD3DX使ってるって話だろ

プログラム歴やDX歴で個々の問題を片付けようとするな
222デフォルトの名無しさん:2009/05/30(土) 11:29:01
>>218
普通にDirectX環境が無い業界(PS3とか)を目指してる奴は
DirectX初めて数ヶ月後には、D3DX相当の自作(解析)を始めたりするぞw
223デフォルトの名無しさん:2009/05/30(土) 11:29:39
だからパスは気づかなかっただけだろあと2時間もあれば自力で気づいてたよ
224デフォルトの名無しさん:2009/05/30(土) 11:31:11
そんなこといっていちいち他人に言われることでグラついてるのは
正直、どっちがいいのが自分の中で結論出てないからでしょ?
煽るほうからすればそんなのでどっちでもいいんだよ
DXUT使ってることでもってる自分でも気づかない負い目に蹴りいれられてるだけなこと気づけ
225デフォルトの名無しさん:2009/05/30(土) 11:31:58
なんか論点があっちこっちに飛びすぎw
とりあえずDXUTとセンスの間には何の関連性もないな

Xファイルにファイルパスミスなんて誰もが通る道じゃん?
多少調子に乗ってるくらい生暖かく見守ってやれよw
ほめて伸ばすって言葉もあるくらいだし

俺個人的には「DirectXを使える」ようになるには半年もいらないけど
「DirectXを理解した」といえるようになるには3〜5年はいると思ってる
センスがあっても経験がないと上みたいはアホなミスで引っかかって時間潰すんだよね
226デフォルトの名無しさん:2009/05/30(土) 11:32:14
>>223
それを世の中では、”出来ていない”と言うのですよwwww
227デフォルトの名無しさん:2009/05/30(土) 11:33:17
だからお前らの言ってるセンスってのは行列がどうとかカメラがどうとかメッセージがどうとか理解してるかの話だろ?
そんなのセンスじゃねえよ、誰でも勉強したようにしか成長しない
228デフォルトの名無しさん:2009/05/30(土) 11:33:38
経験がなくとも、アホなミスで引っかからないのが”センス”と言うのでは?
229デフォルトの名無しさん:2009/05/30(土) 11:34:19
>>222
そういう奴は何年も言語とかの勉強してきた奴だろ
もしくはオープンGLとか
230デフォルトの名無しさん:2009/05/30(土) 11:35:03
>>187
DirectShow はWindows SDK
231デフォルトの名無しさん:2009/05/30(土) 11:35:26
>>227
お前は自分に都合の良い解釈を辞めろw

>>214>>216
これがプログラムセンスの問題

3Dゲーム作ってる超絶センス、とは別の話だろ
232デフォルトの名無しさん:2009/05/30(土) 11:36:07
>>228
センスとは最初からあるものではなく磨くものなのだよ
233デフォルトの名無しさん:2009/05/30(土) 11:37:15
もうやめて!自称3DPGの超絶センスはもう0よ!
234デフォルトの名無しさん:2009/05/30(土) 11:38:25
>>229
そんなことはない、プログラム歴半年でDX初めてとかでも結構居るぞ

…OpenGLには、算術関数等は無いが?

…あんたさ、全角使うから書き込みバレバレだよw
235デフォルトの名無しさん:2009/05/30(土) 11:39:55
でも>>222は無駄だろ
これなんのつもりでやってんの?w
だいたい会社にそろってるし
他社のエンジン使ってる会社だったら意味ないよw
236デフォルトの名無しさん:2009/05/30(土) 11:43:08
まあ毎日会社で無理矢理教えられて行列の変換がどうとか何時間もやらされたらそりゃ作れるだろうな
俺は実際片手間でやっててこの成長度なわけだし
だから有意義にできるからセンスがあるんだよ、あれもこれも短時間に手に入れるにはセンスがいるだろ
たまたまパスに気づかなかったのはセンスの有無とは関係ない、その内気づいた
237デフォルトの名無しさん:2009/05/30(土) 11:44:59
>>234
別に隠す気とかねえよ
そんな駆け引きやってるとか考えてんならお前の言ってる事がこっちをびびらせるための嘘だともとれるがな
238デフォルトの名無しさん:2009/05/30(土) 11:45:19
会社がそんな手取り足取り基本から教えてくれる所だと
考えてるならそれは夢を見すぎだぞ
239デフォルトの名無しさん:2009/05/30(土) 11:46:22
普通はピーンとくるもんだがな。
気がつかなかった自分の間抜けさを反省するどころか
そのうち気づいたと負け惜しみを言うセンスw
240デフォルトの名無しさん:2009/05/30(土) 11:46:52
>>235
は?
当然、ベクトルや行列やスキニングの基本処理を覚える為だろ
会社で作業員やるなら確かにいらんが、それしか頭に無いのかw
会社にあるエンジンや、売ってるミドルウェアは誰かが作ってるに決ってるだろ

んで、それは必ず古くなる、この業界だと凄い速さで
作業員くんは、誰かが作ってくれないと仕事が出来ないわけですよw
241デフォルトの名無しさん:2009/05/30(土) 11:49:30
しかし久々に盛り上がった
内容は全く無かったがな
また来週末あたりに爆弾投下を頼む
242デフォルトの名無しさん:2009/05/30(土) 11:49:46
>>236
たまたまならね

しかし、今回は
自分でフォルダ移動しかしてない、>>214の事実
これをもってして、たまたまとは言わないと思うね
243デフォルトの名無しさん:2009/05/30(土) 11:55:48
その内気づいた
と後だしで言ってる奴がした行動

DirectX初心者質問スレへの頓珍漢な質問

プライスレスw
244デフォルトの名無しさん:2009/05/30(土) 11:56:15
いや、実際はプロジェクト新しく作ってDXUTや元ソースのコピーを作ってきてフォルダ分けしたからDXUTとかヴィジュアルスタジオの知らないとこでバグってんのかと思って焦ってたから気づかなかったんだよ
実際プロパティいじらないとできないところとかあったし
245デフォルトの名無しさん:2009/05/30(土) 12:00:43
>いや、”実際は”

超お得意の、後だし情報
今回は追加じゃなくて、過去の全否定ですか!?

いやはや…

ともかくさ、センスあるんだろ
>>214の事を何とも思わなかったのかい?
246デフォルトの名無しさん:2009/05/30(土) 12:00:48
唯一つ俺には会社に入らなくてもゲームが作れるという強みがあるからな
お前らとは違う
就職して人生かけなくても十分片手間でできる
お前らはまたDirextXの仕様が変わったwwwとか言ってあくせくしとけよ、それでたくさん知ってるからセンス有るとか思っとけ、俺は必要なものだけすばやく使うから
247デフォルトの名無しさん:2009/05/30(土) 12:02:18
>>245
経験上いらんことを言ったら違うとこで煽られるからな
これも1年で覚えたスレで質問するセンスだぜw
248デフォルトの名無しさん:2009/05/30(土) 12:04:14
>>246
だから、それを強みと思うのは”お前の都合”なんだよ

お前と逆の立場で、仕事としてゲーム作って金が貰える強み、とかに反転できるだろ

そう言うのをさ、レスの初期のころに向いてないって指摘されてただろw
249デフォルトの名無しさん:2009/05/30(土) 12:07:26
>>247
は?>>214は、お前自身の問題だろ
D3DXとXファイル使ってる&フォルダの中身を見てるなら
Xファイルと画像BMPファイルは別に存在して
且つ画像BMPの名前を記述してないが、Xファイル名は記述している

センスあるなら、その事実から直ぐに分るだろ?
って話だ、その内容を質問しろって話じゃねーよw
250デフォルトの名無しさん:2009/05/30(土) 12:08:29
電子軌道のプログラムは難しいなあ・・・
251デフォルトの名無しさん:2009/05/30(土) 12:09:22
おめーらそんな言い合いじゃなくてプログラムでも作って勝負しろよ
252デフォルトの名無しさん:2009/05/30(土) 12:09:52
>>248
こういうスレの態度をリアルで出すかのごとく言う奴ってなんなの?
リアルで出すわけねえじゃん
253デフォルトの名無しさん:2009/05/30(土) 12:12:29
>>250
そういえば、どういう式を使えば表現できるんだろうね。
気が向いたら調べてみようかな。
254デフォルトの名無しさん:2009/05/30(土) 12:12:53
>>252
リアルで出さないと思った所でボロが出るのが大半
お前、会社か学校かで嫌われ者だろ
特定の少数の友達しかいない、若しくは居ないw
255デフォルトの名無しさん:2009/05/30(土) 12:13:56
>>249
だからDXUTとヴィジュアルスタジオのファイルのつながりとかプロパティとかのミスかと思ったんだって
そっちはいずれやってたって、センスあるし、確かに真っ先に確認すべきだったけどな、今となっては
作業がヴィジュアルスタジオとかの処理よりだったからそっちに頭がいっぱいになったんだよ
256デフォルトの名無しさん:2009/05/30(土) 12:16:20
>>255
センスある人間の言い訳とは思えないw
言ってる内容もプログラムセンスがあるとも思えないww
257デフォルトの名無しさん:2009/05/30(土) 12:18:35
>>255
お前、>>170で言ってる事とまったく違ってるだろ

>今まで普通に見えてたオブジェクトがプロジェクトのファイルの場所とかソースのファイルの場所とかいじってたら黒くなって見えなくなったんだけどなんで?
258デフォルトの名無しさん:2009/05/30(土) 12:20:23
>>254
お前って底辺っぽいよな
自分を殺したり人に気使ったり人に嫌われないようにしないと生きていけない環境なんだよな、友達とか嫌われるとかに最大の興味がある奴はそう
別に俺は勝ち組予定だからそんな環境に入らなければならないつもりはないし、顔も良いからリーダータイプだったし
259デフォルトの名無しさん:2009/05/30(土) 12:21:44
>>258
…すまん、図星だったか…
言い過ぎたよ
260デフォルトの名無しさん:2009/05/30(土) 12:22:48
>>257
今見ると焦ってた割にはもう正解付近に近い質問できてるじゃん、やっぱりあと数分で気づいてたな
261デフォルトの名無しさん:2009/05/30(土) 12:23:35
>>253
単純なs,p,d・・・軌道は簡単なんだけど
sp2,sp3とかの混成軌道が難しい

そして反応に重要なのは後者だったりする・・・
262デフォルトの名無しさん:2009/05/30(土) 12:26:22
じゃあ、その超絶センスで作ったって言うゲームをみせてもらえばいいんじゃない?
まだ製作途中でゲームの形をしてないとかなら良いとこ取りな動画でもいいし
「俺はゲームが作れる」って言い張ってるんだから
パスの問題が解決したなら多少は動く絵があるんでしょ?
うp
263デフォルトの名無しさん:2009/05/30(土) 12:31:18
>>259
むしろお前の図星だろ、突くように言ったんだけどな
ゲーム会社にどれほどの学歴がいるかとか年収とか人間環境とか知らないけど、思考自体底辺っぽいし
人間関係が思考の中で優先されるような仕事環境は底辺がやるものと思ってるから
264デフォルトの名無しさん:2009/05/30(土) 12:32:38
ここは初心者質問スレだ。
質問や回答でないものを延々と語りたいやつは他でやれ。
265デフォルトの名無しさん:2009/05/30(土) 12:34:24
>>263
>人間関係が思考の中で優先されるような仕事環境

全ての会社の基本ですw
お前程度の奴は、上司が気に入らなかったら徹底的にイビられるぞ
会社のイジメは性質が悪いぞ?w
266デフォルトの名無しさん:2009/05/30(土) 12:37:24
ちなみにゲームは作れるレベルにいると思ってるけど作ったことはないよ
モデリングのセンスがまだ無いからそこの成長混みで3年くらいかけて大作作るつもりだし
それを作り出すためにコピーして新プロジェクト作ったんだよ
267デフォルトの名無しさん:2009/05/30(土) 12:38:41
>>265
だからそれはお前の常識だろ
お前の低学歴ゆえの底辺環境を人にあてはめんな
268デフォルトの名無しさん:2009/05/30(土) 12:51:05
底辺とか関係なしに
現場責任者レベルの人が「職人」みたいな人だと
周りもみんな出社してから退社するまでただ黙々と作業するなんてことは結構あるな
人間関係に気を使う人だと
たまに冗談とかも出たり和やかな空気で仕事できるけど
269デフォルトの名無しさん:2009/05/30(土) 12:55:29
あるある
いまの自分の仕事に不満はないけど
隣のチームがすげー楽しそうなんだよ
あのディレクターの下で働きたいって普通に思える
270デフォルトの名無しさん:2009/05/30(土) 12:59:46
やっぱ職業グラマーは底辺だな
2ちゃんでもなるなって言われてるし
便利ツール貰える以外に価値ないだろ
271デフォルトの名無しさん:2009/05/30(土) 13:00:27
もういいからvipとかいけよ
272デフォルトの名無しさん:2009/05/30(土) 13:01:27
掲示板での評価なんてどうでもいいじゃないか。
こんな流れじゃ初心者が来ても質問できないよ?
意地張ってないでさっさと仲直りしろよ。
273デフォルトの名無しさん:2009/05/30(土) 13:03:19
あばばばばばばば
274デフォルトの名無しさん:2009/05/30(土) 13:07:03
私初心者ですけど、DirectXを使ったゲームのうち、DXUT使ったゲームって少ないのですか?
275デフォルトの名無しさん:2009/05/30(土) 13:14:04
ちなみに理由も教えてください
276デフォルトの名無しさん:2009/05/30(土) 13:33:53
DX8以前のゲームの方が多いから、DXUT使ったのは相対的に少ないよ
277デフォルトの名無しさん:2009/05/30(土) 13:39:24
DirectX11でも同じようなサンプルフレームワークが用意されていたら
もうちょっと使われるようになるかもね
278デフォルトの名無しさん:2009/05/30(土) 14:24:55
まぁでも実際には面倒くせぇからオープンソースのライブラリ使ったりするよな。
ゲームが作りたいんであってシステムが作りたいわけじゃないし。

個人的にはオープンソースライブラリ使う⇒完成させたらライブラリの中を気にしてみる
⇒気づけばDirectXウマーくらいでいいと思うけどね。

いずれプロになりてーっつーなら別だけど。
279デフォルトの名無しさん:2009/05/30(土) 14:30:29
>>240
は?
それがD3DXみたいなもんを作ることなの?
D3DXなんて数学の本みながらテキトーに作ればいいじゃん
これがなんの勉強になるの?
どうせなら使い方を知っておいてくれよ
あまりのズレっぷりに悶絶したw
280デフォルトの名無しさん:2009/05/30(土) 14:32:05
とりあえずスキニングは当然として
バンプ、環境、グレアぐらいは入ってないとマジでとらない
年々ライブラリチームは難易度が上がってる気がする
ゲーム作っていったほうが最近は楽だよ
281デフォルトの名無しさん:2009/05/30(土) 18:23:37
アイヤー!
憲法改正で軍靴の足音が
聞こえてくるアルヨー!!!
 ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ∧∧     ウリナラにも聞こえるニダ! ノ       ゚.ノヽ  , /}
  / 支\     ̄ ̄ ̄ ̄ ̄ ̄ ̄V ̄,,イ`"      、-'   `;_' ' ヒィー、スミマセンスミマセン!!!
 ( `ハ´)        ,-、  ∧_∧          (,(~ヽ'~∧朝∧
 ( ~__))__~)     )'~  レ 、<丶`∀´>.         i`'}  (@Д@-),,  ノ ))
 | | |      ~つ  /核∧_∧          | i'  (( l|lll|lll| (⌒,)
 (__)_)     /   "ゝ<丶`∀´>      。/   ! と(   とノレ
           /     {   }         /},-'' ,,ノ   ∨ ∨ Σ ガンガンガン…
   ./.|  ./.|   ./.|  ./_;=-" ,i' _,,...,-‐-、/    i
   /核/  /核/  /核/      <,,-==、   ,,-,/     / ̄ ̄``\l|l|l|l|l|l|l/
_ / /_ / / _ / /      {~''~>`v-''`ー゙`'~_-_ニ三ミ:/ /"^`\、二 の .言 ギ ひ そ 二
\/ ./ヘ\/ ./ヘ\/ ./ヘ .      .レ_ノ       ./´    ヾ|テ〉 'テテヽ二 か .っ ャ ょ れ 二
 .◎丶i  ◎.丶i .◎丶i       ''        |テ〉 'テテ` |.〈ッ   u 二. !?. て グ .っ は 二
   ./.|  ./.|   ./.|             .  |.〈ッ  u  | `ニ''   二.    る で と   二
   /核/  /核/  /核/.               | ゙ニ''′  ノ `r--‐''_, 二       し   二
_ / /_ / / _ / /                `r--‐''__, ┘ ̄´   二        て   二
\/ ./ヘ\/ ./ヘ\/ ./ヘ               .,.-┘ ̄´ /   0     /l|l|l|l|l|l\
  ◎丶i ◎.丶i ◎.丶i
282デフォルトの名無しさん:2009/06/01(月) 05:20:39
初心者なんですけど、ローポリは三角ポリゴンが多いと聞いたのですが、四角ポリゴンのほうが処理が軽いのではないのですか?
283デフォルトの名無しさん:2009/06/01(月) 06:25:03
なんで軽いと思うの?
284デフォルトの名無しさん:2009/06/01(月) 06:39:14
1枚でいいし角度がつかないから?
そんなに違わないの?
285デフォルトの名無しさん:2009/06/01(月) 07:30:37
SetRenderTargetをテクスチャに変更して
スプライトを描いてもバックバッファにかかれるんですけど?
286デフォルトの名無しさん:2009/06/01(月) 10:30:00
そらそうだ
287デフォルトの名無しさん:2009/06/01(月) 10:53:15
>>282
>四角ポリゴン
そんなモノは無い。
288デフォルトの名無しさん:2009/06/01(月) 13:57:19
>>285
DirectXにスプライトなど無い
289デフォルトの名無しさん:2009/06/01(月) 15:20:02
じゃあ三角ポリゴンで全部作っても四角ポリゴンで作っても同じなの?
290デフォルトの名無しさん:2009/06/01(月) 15:24:10
ていうか、そもそも四角ポリゴンってOpenGLにしかない。
あと、曲面を表現する際には三角形の方が四角形よりも表現性が高い。
291デフォルトの名無しさん:2009/06/01(月) 17:10:30
>>285
D3DXはDirectXではない。
292デフォルトの名無しさん:2009/06/01(月) 17:22:46
そっか、重くならないのならむしろ全部三角にした方がいいんだな
293デフォルトの名無しさん:2009/06/01(月) 18:31:06
>>288 >>291
ちょっと古い記事だが。
http://msdn.microsoft.com/ja-jp/library/dd148679.aspx
D3DXはDirect3Dの上位レイヤーに位置する列記とした
DirectXの一部(ヘルパ サービスを提供するユーティリティ ライブラリ)だ。
嘘を書いちゃいけない。

スプライトはD3DXの機能の一部だから同様の論理で。
294デフォルトの名無しさん:2009/06/01(月) 18:42:39
>>293
基地害に関わらない方がいいと思うよ
295デフォルトの名無しさん:2009/06/01(月) 18:56:08
D3DXにスプライトなど無いが正解
296デフォルトの名無しさん:2009/06/01(月) 19:15:42
http://msdn.microsoft.com/ja-jp/library/cc372361.aspx

ID3DXSprite インターフェイスは、MicrosoftR Direct3DR を使ってスプライトを描画するプロセスを単純化する一連のメソッドトを提供する。
297デフォルトの名無しさん:2009/06/01(月) 20:14:02
http://msdn.microsoft.com/ja-jp/library/cc372560.aspx

ID3DXLine インターフェイス

ID3DXLine インターフェイスは、テクスチャ化した三角形を使ったライン描画を実装する。

D3DXにラインは存在しないが、ID3DXLineというインタフェイスは存在する。
ただそれだけの話。

298デフォルトの名無しさん:2009/06/01(月) 20:32:32
へりくつ
299デフォルトの名無しさん:2009/06/01(月) 20:42:05
ID3DXMeshをメッシュとは呼ばない
ID3DXLineをラインとは呼ばない
ID3DXFontをフォントとは呼ばない
ID3DXSpriteをスプライトとは呼ばない

何故ならそれらは個別のインタフェイスを表す言葉ではなく、一般用語だから。
300デフォルトの名無しさん:2009/06/01(月) 20:50:51
>一連のメソッドトを提供する
どうしたらこんな変な翻訳になるんだろう?
301デフォルトの名無しさん:2009/06/01(月) 20:52:59
>>299

普通に呼びキスね。はいさようなら。
302デフォルトの名無しさん:2009/06/01(月) 20:57:14
303デフォルトの名無しさん:2009/06/01(月) 20:57:58
呼びキス
304デフォルトの名無しさん:2009/06/01(月) 21:00:48
つまり一般用語と区別を付けるため、D3DXでメッシュを使う場合という言い方をしなければ意味が通らないというのが結論。
305デフォルトの名無しさん:2009/06/01(月) 21:32:24
D3DXCreateSprite関数とD3DCreateTextureFromFileInMemory関数を使ってスプライトを表示したいのですが、
両者の関数に渡す引数って、よく見ると関連してませんよね?
(例えば、CreateTexture〜で作ったテクスチャをCreateSpriteに渡すとか)

ということは、
この2つの関数を連続して呼び出すと勝手にDirectXの側でテクスチャとスプライトを関連づけてくれる、
ということになっているのでしょうか。何だか釈然としません。

いま、CreateTexture〜で作ったテクスチャはテクスチャとして保持しておいて、
Spriteだけをとっかえひっかえして表示したいと思っているので困っています。
空のスプライトオブジェクトに、後から、あらかじめ読み込んでおいたテクスチャを流すような方法はないでしょうか?


ちなみになぜこんな事をしたいかというと、フォントだけをひたすら並べた画像の一部を切り出して
スプライトに乗せて文字列として表示するクラスを作っているからです。画像&テクスチャを使い回したいのはそういう理由からです
306デフォルトの名無しさん:2009/06/01(月) 21:45:18
>>304
しかしめんどくさいので単にメッシュを使うという

>>305
CreateTexture〜で作ったテクスチャはID3DXSprite::Drawに渡すんじゃないかな
307デフォルトの名無しさん:2009/06/01(月) 21:49:31
DirectXにテクスチャなどない。
308デフォルトの名無しさん:2009/06/01(月) 21:50:46
>>306
その通りでした。
見落としてました。
ありがとう
309デフォルトの名無しさん:2009/06/01(月) 21:53:05
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
310デフォルトの名無しさん:2009/06/01(月) 21:56:30
>>304
話の流れを見ても一般用語の方かD3DXの方か分からないんです><
って言いたいの?
311デフォルトの名無しさん:2009/06/01(月) 21:59:14
こまけぇこたぁいいんだよ!!(AA略
312デフォルトの名無しさん:2009/06/01(月) 22:14:12
見た目で新ジャガイモと新メークインの違いがわかりません。
313デフォルトの名無しさん:2009/06/01(月) 22:15:06
IDirect3DTexture9をテクスチャとは呼ばない
314デフォルトの名無しさん:2009/06/01(月) 22:36:34
で?
315デフォルトの名無しさん:2009/06/01(月) 22:56:50
衝突判定で悩んでいるのですが
プレイヤーとフィールドの衝突判定を主人公(OBB)を作りフィールドの法線の逆にOBBが出たら戻すという感じで考えています

プレイヤーとフィールドの衝突判定は普通どんな感じでやるのですか?
316デフォルトの名無しさん:2009/06/01(月) 23:00:21
プレイヤーとフィールなどDirectXにない
317デフォルトの名無しさん:2009/06/01(月) 23:04:36
秋田
318デフォルトの名無しさん:2009/06/01(月) 23:10:08
答えられないなら黙っててください
319デフォルトの名無しさん:2009/06/01(月) 23:10:10
DirectXと無関係なのでスレ違い
320デフォルトの名無しさん:2009/06/01(月) 23:32:04
答えられないなら黙っててください
321デフォルトの名無しさん:2009/06/01(月) 23:33:21
最近のSDKだとコリジョンぽいことやろうとしてるのが入ってるけど
322デフォルトの名無しさん:2009/06/01(月) 23:42:59


  .‐'' ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ヽ
  |    ________                       |
  |    |   ∧__∧     |                    |
  |    |  <`∀´ >     |                    |
  |    |_/   二\  |                     |
  |    |_/\  \\) |                    |
  |    |     \  \ |                      |
  |    |    / /\ ̄ ̄ )                |
  |    |   / /    ̄| ̄     非 常 識      |
  |    \ \ \     \                 |
  ゝ、     \ \ \     \              ノ
     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
323デフォルトの名無しさん:2009/06/01(月) 23:45:20
それはこりあん
324デフォルトの名無しさん:2009/06/01(月) 23:58:15
アーキテクチャーを一新したdx10の下位互換のdx9とxpdx9とは違う物なの?
それともosの互換性?dx10用のビデオドライバーの仕様の違いとか。
このエミュー使う為にはdx10環境は必項ですね。使ってないvistaが有るので入れてみます。
325デフォルトの名無しさん:2009/06/02(火) 07:37:37
また下位互換と上位互換を混同している馬鹿が。
326デフォルトの名無しさん:2009/06/02(火) 09:58:57
>>324
下位互換のAPIは延々と収録されていく仕様。
でもAPIは変更したいからそのためにバージョンを分けている。
バージョンごとには基本的には普遍。
そうしないと昔のゲームが動かないだろ?
327デフォルトの名無しさん:2009/06/02(火) 10:34:09
DirectXに下位互換があったらDirectX10用のゲームがDirectX9以前で動くことになるぞ。
なんでこういう誤用を平気でかますんだろう?
328デフォルトの名無しさん:2009/06/02(火) 10:41:35
>>327
そうはならない。
DirectXが下位互換・上位互換をサポートしていることと、
それに依拠したアプリ(ゲーム)が上位互換・下位互換をサポートしていることは全然別だから。

ただし、>326 はやはり、『APIは上位互換として延々と〜』いう言い方をするべき。
ここで下位互換を使うと意味が通じにくくなる。
329デフォルトの名無しさん:2009/06/02(火) 10:59:06
右手座標系の正規直交基底行列UVWって
以下でいいんでしょうか?

[Ux,Uy,Uz]
[Vx,Vy,Vz]
[Wx,Wy,Wz]

それともそれの転置?
330デフォルトの名無しさん:2009/06/02(火) 11:25:27
>>329
転置かどうかは、行ベクトルか列ベクトルかって話で
右手か左手かは関係ないでしょ。
331デフォルトの名無しさん:2009/06/02(火) 11:41:26
正規直交基底とは通常行列ではなくベクトルの組に対して使う用語なんだから、
そのUVWというのも単なる列ベクトルじゃないのか?
詳しくないので間違ってるかもしれないが。
332デフォルトの名無しさん:2009/06/02(火) 11:46:33
>>330-331
わかりづらくてすみません。
オブジェクトの姿勢を表す為に、
オブジェクトに基底行列を持たせる場合、
Direct3DやOpenGLの右手座標系だと、
行ベクトルの組で持つのと、列ベクトルの組で持つのは
どっちが一般的なのかと思いまして。
333デフォルトの名無しさん:2009/06/02(火) 12:17:13
RH系でレンダリングする以外に意識する所ってあったっけ?右手座標
334デフォルトの名無しさん:2009/06/02(火) 13:06:03
>>333
右手が、というよりは
Direct3DやOpenGLで右手の場合、
ベクトルは列ベクトルで扱うってのが一般的らしいです。
それにあわせると、基底行列はどっちが
いいのかな?と考えたらよくわからなくなりまして。
基底行列がU,V,Wのベクトル3つ並べたものだと考えると
3 x 列ベクトルが正しそうな気がしますが、
今既に、行ベクトルx3にしちゃってるんですよね。
335デフォルトの名無しさん:2009/06/02(火) 17:04:30
     クライム カタリスト  オラトリオ
「まさか、後罪の触媒を<讃来歌>無しで?」

 教師たちの狼狽した声が次々と上がる。

 ……なんでだろう。何を驚いているんだろう。

           カタリスト     チャネル
 ただ普通に、この触媒を使って名詠門を開かせただけなのに。

            よ
 そう言えば、何を詠ぼう。

 自分の一番好きな花でいいかな。

 どんな宝石より素敵な、わたしの大好きな緋色の花。

      赤
 ――『Keinez』――

 そして、少女の口ずさんだその後に――
336デフォルトの名無しさん:2009/06/03(水) 00:45:14
メッシュってxファイルが存在しないと使用できないんですか?
球体を描画するのに使おうと思ったのですが・・・
337デフォルトの名無しさん:2009/06/03(水) 01:04:56
xファイルを使わないなら、頂点バッファで良いじゃん?
338デフォルトの名無しさん:2009/06/03(水) 01:07:32
>>337
俺もそう思って、D3DXMeshを使うのをやめてしまった。
ポリゴンの初期化は手でやっちゃうからな。
339デフォルトの名無しさん:2009/06/03(水) 01:14:10
>>336
聞く前にリファレンス見れば一目瞭然だろう。
Create系関数が大量にあるだろ。
しかも、球なら専用の関数も用意されてるし。
340デフォルトの名無しさん:2009/06/03(水) 01:28:01
>>337-339ありがとうございます
どうやら可能みたいですね。このまま頑張ってみます。
341デフォルトの名無しさん:2009/06/03(水) 02:13:33
ID3DXMeshをメッシュとは呼ばない
342デフォルトの名無しさん:2009/06/03(水) 11:41:59
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /
343デフォルトの名無しさん:2009/06/03(水) 12:16:12
モデルの色をテクスチャにディフューズ色を乗算したものにしようと思い
以下のようにしたのですが、

pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
pD3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);

テクスチャは表示されるのにディフューズ色が乗算されません
ライトを有効にすると乗算されますが無効にするとテクスチャしか表示されません
何か設定がまずいのでしょうか?

344デフォルトの名無しさん:2009/06/03(水) 15:54:42
あのねチミ、ディフューズというのは拡散反射光という事なんだよ
ライト無しにディフューズできる訳無いんだよ
わかったかね?
345デフォルトの名無しさん:2009/06/03(水) 17:08:59
シェーダーでやれば一発解決
346デフォルトの名無しさん:2009/06/03(水) 17:14:34
レンダーターゲットにいろいろ描画したあとに
特定の色のアルファだけ0にするにはどうすればいいですか?
347デフォルトの名無しさん:2009/06/03(水) 18:38:44
   __     \お嬢様とまた一緒に/      ,. ‐- 、
/  ./|      \まんまる焼きを/   ___(_,ィ,=o=)
| ̄ ̄|  |        \ ∧∧∧∧/   〔〔 | ん( *‘ヮ‘) アイハブコントロール!
|   |  |<イモ    <    映  >  _/ ||Ξ/ つ¶つ¶
|   |  |   ちゃん!< 予 画  >__\|/ ̄ ̄ ̄ ̄ ̄\
|__|/         <    化 >
 ─────────< 感 決  >──────────
ねぇ…イモちゃんは?<    定  >         ,. ‐- 、
さっきまで一緒に    < !!!! の  >     ___(_,ィ,=o=)
. _, '´!p`´qj、 いたのに/∨∨∨∨\     〔〔 | ん( *^ヮ^) お嬢様…大好きです!
ゝ. ノ从从リゝ    /突っ込んでくぜ\   _/ ||Ξ/ つ¶つ¶
`'メ(リ ゚ . ゚ノ)゙´   /  クレイジー!   \__\|/ ̄ ̄ ̄ ̄ ̄\


348デフォルトの名無しさん:2009/06/03(水) 18:51:37
>>346
要するに、抜き色のことだろ?
D3DXCreateTextureFromFileEx()あたりを使ってみたらどうだ。
349デフォルトの名無しさん:2009/06/03(水) 20:34:04
>>348
最初からテクスチャがあるならそれでもいいんだが
あるテクスチャをもとに派生テクスチャをリアルタイムで描けないとまずくて、
しかも透明色もつかえないとまずく、
D3DXCreateTextureだとカラーキーが設定できないし
D3DXCreateTextureFromFileExはファイルからテクスチャ作るときだし
なにかいい手はないかと思ってたけど

pD3DDevice->Clearするときに
ARGBを0x00000000で透明色でぬりつぶすことで事足りまつた
350デフォルトの名無しさん:2009/06/03(水) 22:01:08
テクスチャをロックして好きな場所のα値を書き換えればいいだけ。
351デフォルトの名無しさん:2009/06/03(水) 22:16:05
PSでなんとかしてみたい
352デフォルトの名無しさん:2009/06/03(水) 22:23:28
固定機能でやりたいんですと初心者なら言うはず
353デフォルトの名無しさん:2009/06/03(水) 23:32:50
ピクセルシェーダ使うなら
ifで色判定してアルファを0にするだけじゃん
354デフォルトの名無しさん:2009/06/04(木) 10:02:20
カメラのデータとして、
a:カメラ位置
b:カメラの注目点
c:カメラの頭上
の3点をデータとして持ち、直角三角形になるように配置します。
そしてカメラの移動する際に
@z軸を回転軸としてカメラの横方向回転
A直角三角形の法線を求めて、それを回転軸として縦方向回転

という処理をしているのですが、何度もグルグル回していると、何故かカメラがどんどん傾いていきます。
aとbとcを通る平面が絶対に地面から垂直になるようにしたつもりなのに、グルグル回すし続けるとどんどん斜めに傾きます。

これは法線を求める段階やそこから縦回転させる計算での、コンピューターの丸め誤差が影響してるのでしょうか?
それとも何か根本的な間違いをしているのでしょうか?
355デフォルトの名無しさん:2009/06/04(木) 10:44:04
計算方法も書いてないないのに何を指摘しろと

abcの値を直接いじってる?
abcは初期姿勢として残しておいて
それぞれを回転トランスフォームした値をつかってビュー行列を作ればいいかと
356354:2009/06/04(木) 11:47:45
>>355
abcの値を直接いじってました。
今ご指摘の方法で動かすために大幅改造中です。
357デフォルトの名無しさん:2009/06/04(木) 16:18:37
実行時のビデオカードのピクセルフォーマットでサーフェイスを作って、
LockRect後にサーフェイスの中身を直接いじりたい場合、
環境によって24ビットカラーだったり32ビットカラーだったりするけど、
ここはどう差を吸収したら良いんだろう?

例えば、サーフェイス上の左上隅から X:10 Y:10 の場所のピクセルを
青 RGB(0, 0, 255)に設定したい場合とか…
358デフォルトの名無しさん:2009/06/04(木) 16:37:03
想定されるメジャーなフォーマットに対応させて処理を分ける。
また想定外なフォーマットしか対応していないビデオカードなら、
起動時に弾けば良いだけ。
また24bitなんてフォーマットがそれこそ想定外。
359デフォルトの名無しさん:2009/06/04(木) 16:44:59
てか、何のフォーマットで作ってるかどうかは分かってるんだから
取得ポインタを3Byteずつずらすか4Byteずつずらすか変えればいいだけじゃん
360357:2009/06/04(木) 17:21:16
>358
スマソ、古いPC使っていてVRAM容量が小さいから
24ビットは普通なんだと思ってた。
確かに、ビデオカード(MilleniumG450)を24ビットカラーに設定すると、
DirectXの初期化ですでに上手く動かない…

>359
これはじゃあ、GetAdapterDisplayMode関数でカラーモード取得した
値に応じてポインタの移動量を3Byteか4Byteにすれば良さそうですね。

ありがとうございます。
361デフォルトの名無しさん:2009/06/04(木) 18:03:17
DX9なら、全てのフォーマットを網羅しても大したことないし
俺は、フォーマットごとに型を作ったよ。

struct R8G8B8
{
enum
{
format = FMT_R8G8B8,
b_bits = 8,
g_bits = 8,
r_bits = 8,
};

union
{
struct
{
uint8_t b;
uint8_t g;
uint8_t r;
};
uint24_t value;
};

operator const uint24_t&() const { return value;}
operator uint24_t&() { return value; }
R8G8B8( const uint24_t& value_ ) : value(value_){}
R8G8B8(){}
};

これと、__if_exists()を組み合わせれば何でも出来る。
362デフォルトの名無しさん:2009/06/04(木) 20:07:49
>>357
24bitのサーフェスに3D描画できるGPUってほぼ存在しないと思うよ。
だから、DirectX8以降で24bitを使うことはまずないかと。
363デフォルトの名無しさん:2009/06/04(木) 20:16:02
質問です。

ピクミンやメタルギアのような3Dゲームでは、建物などの静的オブジェクトの落とす影は事前に焼きこみしてあると聞きました。
焼きこみの方法としては
・頂点に焼きこむ
・テクスチャーに焼きこむ
とのことですが、
前者の場合、地面などがかなり細かく分割されていないと意味がないですよね?
(たとえば三角ポリゴン2枚で作られたひろーいグラウンドなどには落とせない)

後者の場合は、かなり大量の焼きこみ影テクスチャを用意しておかなければならない気がします。

両方かなり力技な気がするのですが、こういうものなのでしょうか?

後者の場合、マップをマップチップのようにいくつもに区切って、自分の近くのマップチップだけ読み込み。
遠景の影は小さい影テクスチャを用意しておいて、そっちを読むようにして負荷を減らして…。
とかそういう工夫ができるような気もしますが
364デフォルトの名無しさん:2009/06/04(木) 20:22:57
D3DFVF_XYZ | D3DFVF_TEX1

デツクッタタイラナシ角形にテクスチャを張るのですが
一時的に表示される色を変えることは出来ますか?

ポリゴン自体の色は白で固定のままで。
365デフォルトの名無しさん:2009/06/04(木) 20:30:01
>>364
D3DRS_TEXTUREFACTOR で色を設定して
pDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TFACTOR);
とかをうまく設定すればできるんじゃないかね
366デフォルトの名無しさん:2009/06/04(木) 20:38:23
できました。
367デフォルトの名無しさん:2009/06/04(木) 20:42:24
シェーダー使えば一発
368デフォルトの名無しさん:2009/06/04(木) 21:58:05
>>363
そういうもの
369デフォルトの名無しさん:2009/06/04(木) 21:59:42
D3DRS_TEXTUREFACTORはひとつしかないですか?
数字を変えると最後のが使われてるみたいなんですけど。
370デフォルトの名無しさん:2009/06/04(木) 22:01:58
371デフォルトの名無しさん:2009/06/04(木) 22:09:41
>>370
とりあえず、キューブ面4頂点の座標がわかれば
射影空間からWorld空間に変換でいけるんじゃないの
372デフォルトの名無しさん:2009/06/04(木) 22:14:26
Webカメラと組み合わせるのは最近のはやりだわねぇ。
Gemsでも読んで勉強すべし。
373デフォルトの名無しさん:2009/06/04(木) 22:19:42
たんじぶるとかいうやつか
374デフォルトの名無しさん:2009/06/04(木) 22:20:28
なんかニコニコあたりで流行ってたと思うよ?
375デフォルトの名無しさん:2009/06/04(木) 22:20:51
>>370

上のおっさん変態だろw
376デフォルトの名無しさん:2009/06/04(木) 23:08:39
DirectShowとDirect3Dでいけるんじゃないの?
377デフォルトの名無しさん:2009/06/04(木) 23:35:21
>>369

無理
378デフォルトの名無しさん:2009/06/05(金) 00:00:51
板ポリゴンにテクスチャを張るときに
フォームのBackColorみたいに
背景色を着けるにはどうすればいい
379デフォルトの名無しさん:2009/06/05(金) 00:08:14
>>378
ttp://marupeke296.com/DXG_TextureStage.html

でもシェーダー使えばもっと楽
380デフォルトの名無しさん:2009/06/05(金) 00:12:49
なんでみんな固定機能大好きなんだろう?
今はシェーダーの方が資料が多いし楽なのに
381デフォルトの名無しさん:2009/06/05(金) 00:16:16
ここが初心者スレだからだ。
382デフォルトの名無しさん:2009/06/05(金) 00:57:30
>>380
そういや、固定シェーダーとプログラマブルシェーダーって
速度差はどんなものなんだろう?
ビデオカードの型番によっても変わってくるだろうけど。
383デフォルトの名無しさん:2009/06/05(金) 01:22:55
GeFo5〜6世代くらいだと固定機能のほうが速い
7世代くらいでもまだちょっとだけ固定機能のほうが速い
普通にやるくらいなら8世代以降でシェーダーのほうが速くなる
頂点シェーダーはともかく
ピクセルシェーダーに負荷かけるとさすがに重いけどね
384デフォルトの名無しさん:2009/06/05(金) 01:24:13
初心者こと固定機能のことなんか忘れて
シェーダーから入るべきだと思うが
385デフォルトの名無しさん:2009/06/05(金) 01:28:40
イメージコントロールみたいな背景色と前景色の指定できる板なのですが
もっと縮まないでしょうか?

// 板ポリゴンのカラーと透明度の係数
g_pdevice->SetTextureStageState(0, D3DTSS_CONSTANT, 0xffff0000);

//板ポリゴンのカラーを変更
g_pdevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
g_pdevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_CONSTANT);

// 板ポリゴンの透明度を変更
g_pdevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
g_pdevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_CONSTANT);

// 板ポリゴンを描画 (下地)
g_pdevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);

// テクスチャのカラーと透明度の係数
g_pdevice->SetTextureStageState(0, D3DTSS_CONSTANT, 0x7f00ff00);

// テクスチャのカラーを変更
g_pdevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
g_pdevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
g_pdevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CONSTANT);

// テクスチャの透明度を変更
g_pdevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
g_pdevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
g_pdevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CONSTANT);

// 板ポリゴンを描画 (絵)
g_pdevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
386デフォルトの名無しさん:2009/06/05(金) 01:31:49
387デフォルトの名無しさん:2009/06/05(金) 01:39:43
何故二回描
388デフォルトの名無しさん:2009/06/05(金) 01:44:57
D3DTA_TEMP
389デフォルトの名無しさん:2009/06/05(金) 08:47:23
シェーダー使え
390デフォルトの名無しさん:2009/06/05(金) 15:53:14
Direct3D9 の Present で640×480のバックバッファを60FPSで
表示していますが、GDIのDDBのBitBltよりも随分遅い気がします。
こんなもんですか?
391デフォルトの名無しさん:2009/06/05(金) 16:00:57
VSYNCかかってるだけでしょ。

つD3DPRESENT_PARAMETERS.PresentationInterval
392デフォルトの名無しさん:2009/06/05(金) 18:47:24
>>285 こうか?

// 前景色と背景色
g_pdevice->SetTextureStageState(0, D3DTSS_CONSTANT, 0xffffffff);
g_pdevice->SetTextureStageState(1, D3DTSS_CONSTANT, 0xffffffff);

// C0 ← Cテクスチャ * C前景色
g_pdevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
g_pdevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
g_pdevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CONSTANT);

// A0 ← Aテクスチャ * A前景色
g_pdevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
g_pdevice->SetTextureStageState(0, D3DTSS_ALPHAARG1 , D3DTA_TEXTURE);
g_pdevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CONSTANT);

// C1 ← C0 * A0 + C背景色 * !A0
g_pdevice->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_BLENDCURRENTALPHA);
g_pdevice->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_CURRENT);
g_pdevice->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_CONSTANT);

// A1 ← A背景色
g_pdevice->SetTextureStageState(1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
g_pdevice->SetTextureStageState(1, D3DTSS_ALPHAARG1, D3DTA_CONSTANT);


// 板ポリゴンを描画
g_pdevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
393デフォルトの名無しさん:2009/06/05(金) 19:24:30
よくFPSとかで凸凹の地面にあわせて表示するオブジェクトを上下させてるけど
あれって凸凹のデータだけ別に用意してんの?
それとも地面のXデータから逐一取ってんの?
394デフォルトの名無しさん:2009/06/05(金) 20:24:29
大抵はナビゲーションメッシュを用意してる

・・・それとも歩いているときにカメラが上下するって話?
395393:2009/06/05(金) 20:33:48
いやあたり判定でD3DXComputeBoundingBoxを使うと直方体の形に判定を取るから
凸凹の物体へのあたり判定はどうしてるのかなーと思いまして
396デフォルトの名無しさん:2009/06/05(金) 21:04:07
convexhullでググれ
397デフォルトの名無しさん:2009/06/05(金) 22:51:13
そんなの好きにすればいいやん
逐一とっても良いし
毎フレーム計算するのがいやなら
最初に一度だけ計算して高さマップを作るなり
あらかじめファイルにして保存しておくなり
高さデータから地形を生成する場合もあるし
398デフォルトの名無しさん:2009/06/05(金) 23:44:36
楽なのは、平行投影で真上から撮影して、色の代わりに深度を書きだす方式だな。
399デフォルトの名無しさん:2009/06/05(金) 23:52:33
ttp://monsho.hp.infoseek.co.jp/dx/dx95.html
ここでも紹介されている、平行分割シャドウマップについて質問です。

リンク先では4分割したシャドウマップを、すべて保持し続けていますよね。

(近い方から順に、分割1、分割2・・・と呼ぶとします)
・分割1のための深度を、シャドウマップ全体に書き出し
・分割1の範囲を描画
・分割2のための深度を、シャドウマップ全体に書き出し
・分割2の範囲を描画

という順番に行っていけば、4分割したり、(他のサイトのように)複数のシャドウマップを作成したりする必要がない気がします。
なぜ、使いまわしを行っていないのでしょうか?
400デフォルトの名無しさん:2009/06/05(金) 23:58:25
サンプル見てないけど、
シャドウマップの切り替わる部分で2枚を補間するんじゃないの。
もしくはそうする予定でいてたけどサンプルは未実装のままで放置とか。

401デフォルトの名無しさん:2009/06/06(土) 01:52:01
Directx9 Dec2004のサンプルブラウザから生成したSkinMeshサンプルで質問があります

HLSLを使用する場合、FOGENABLEをTRUE、フォグ色を設定し
skinmesh.fxの内部でフォグの計算を行うようにしてフォグが使えるようになったのですが、
HLSLを使用しない場合のフォグはどうやって実装すればよいのでしょうか?

FOGENABLEをオンにすると、フォグ色に関わらずモデルが真っ黒でしか表示されません
FOGSTART、FOGENDなどのパラを変更しても特に変わらず真っ黒のままです
402デフォルトの名無しさん:2009/06/06(土) 07:59:29
>>401
スキンメッシュ以前に、ちゃんとフォグできてる?
2つのことをいっきにやろうとするのはNGだぜ
403デフォルトの名無しさん:2009/06/06(土) 08:31:03
>>401
とりあえず、ヘルプのフォグのところを読んでくれ。
フォグにはVertex FogとPixel Fogがあるわけだが、その設定はしたの?
404デフォルトの名無しさん:2009/06/06(土) 10:26:12
>>402-403
ありがとうございます
スキンメッシュ置いといて、フォグだけの実装からやり直してみます
405デフォルトの名無しさん:2009/06/06(土) 13:32:12
物凄く初心者な質問ですが、Directxで3D空間上の物体を動かす場合、
ローカル座標を移動させてるのではなく、カメラを移動させるのでしょうか?
例えばキャラクタが3人居た場合、それぞれのキャラクターが3D空間上で色んな方向に歩いた場合、
3人分のレンダリング時にカメラを3回移動させて描画しているのでしょうか?
(つまり3人の位置データは実はカメラの位置データとなる)

もしそうである場合、一人のキャラクタがもう一人のキャラクタに銃を撃った時の当たり判定を厳密に
する場合(直線とポリゴンの交点を判定する)は判定されるポリゴン群の実際の位置を計算してから行うという、
面倒な処理になるのでしょうか?
(光源などもカメラ移動に合わせて動かさないとつじつまが合わなくなる?)
406デフォルトの名無しさん:2009/06/06(土) 14:19:44
ワールド座標を動かすにきまってるんだろタコが
407デフォルトの名無しさん:2009/06/06(土) 14:27:59
うるせえ最初からすんなりわかるわけないだろイカ野郎
408デフォルトの名無しさん:2009/06/06(土) 14:35:17
おまえ2chに向いてないな
409デフォルトの名無しさん:2009/06/06(土) 14:41:46
まーた煽り合いか
お前らって人の目とか気にしすぎなだんだよ底辺
410デフォルトの名無しさん:2009/06/06(土) 14:45:37
>>406っていつもの奴だろ
まともな会話が出来ない奴は出てくるなよ
411デフォルトの名無しさん:2009/06/06(土) 14:57:33
いつものやつってスプライト云々D3DX云々言い出すやつか?

ところでさあボーンってどうやって読み込むの?
412405:2009/06/06(土) 15:10:31
ようやく理解しました。
ありがとうございました。
413デフォルトの名無しさん:2009/06/06(土) 15:19:41
>>406
誰でもわかるような質問にだけ
調子に乗って出てきて、中傷9割の
一言レスだけ残してく奴だよ。
414デフォルトの名無しさん:2009/06/06(土) 15:52:44
そんなのどこにだっているがな
415デフォルトの名無しさん:2009/06/06(土) 16:37:12
と、いうことにしたいのですね
416デフォルトの名無しさん:2009/06/06(土) 16:51:10
よくFPSとかで人のオブジェクト動かしてるけどあれってやっぱりボーンっての使ってるんだよなあ?
ボーンってどうやってつかうねん・・・?
417デフォルトの名無しさん:2009/06/06(土) 16:53:23
>>416
SDKサンプルのSkinnedMesh参照
418デフォルトの名無しさん:2009/06/06(土) 18:11:04
Direct3DにMeshなどない
419デフォルトの名無しさん:2009/06/06(土) 18:15:04
これはすごい馬鹿を見た
420デフォルトの名無しさん:2009/06/06(土) 18:15:46
ま た お ま え か
421390:2009/06/06(土) 18:45:43
>391
PresentationInterval変えてもダメでした。
描画が遅いというか画面には意図した通りに表示されるけれど、CPU使用率がバックバッファをウィンドウに描画するだけで60%くらいいっちゃうんです。
GDIのDDBのBitBltならVRAM上でコピーできて超高速だったはず…
422デフォルトの名無しさん:2009/06/06(土) 18:49:11
それはDirectXのせいじゃなくて設計の問題
CPUの空き時間すべて使ってループまわしてるだろ
423390:2009/06/06(土) 18:53:57
いや、試しにFPSを30に落とすとCPU使用率も30%くらいに落ちるから、空き時間全て使ってることはないはず。ていうか、それなら使用率100%になるような…
424390:2009/06/06(土) 18:59:13
すみません、自己解決です。
新しいPCで実行したら無事にCPU使用率2%になりました。
多分ビデオカードの都合でソフトウェアエミュレーションになってるようです。
425デフォルトの名無しさん:2009/06/06(土) 19:47:18
http://www.turbolinux.co.jp/about_us/ir/news/08110701_rvs.pdf
会社名 ターボリナックス株式会社

7.今回の増資後の大株主構成
1 株式会社LDH 48.26%
2 新日本投資事業有限責任組合 9.20%
3 藤井 衛 1.80%
4 谷口 剛 0.57%
5 矢野 広一 0.36%
6 バンクオブニューヨークジーシーエム 0.36%
7 大阪証券金融株式会社 0.30%
8 野村證券株式会社 0.29%
9 金 正男 0.25% ←まさお
10 大和証券株式会社 0.24%
426デフォルトの名無しさん:2009/06/06(土) 22:23:05
http://www.it.ecei.tohoku.ac.jp/~sho/wiki/wiki.cgi?page=DirectX+hooking%28%C6%E6%29
下のほうに書いてある直接フックってのがしたいんですが、やり方がわかりません。
メモリ空間に書き込みとかどうやってするんでしょうか?
427デフォルトの名無しさん:2009/06/06(土) 22:34:42
アセンブリ言語とデバッガを使える程度の能力が必要です
428デフォルトの名無しさん:2009/06/06(土) 22:36:20
厨ウゼエ
http://sfb7.org/software/
ここみてdxwnd120落とせ。ソース付いてるから解読しろ
429デフォルトの名無しさん:2009/06/07(日) 00:33:06
>>399
分割したバウンディングボックスで、解像度が最大になるように行列作るのに
同じテクスチャに追加でレンダリングしてどうする

キミの理屈だと、1回のレンダリング(同じ行列)で済む描画を
距離で複数回に分けてるだけで意味がない



430デフォルトの名無しさん:2009/06/07(日) 01:22:37
>>429
>>399のリンク先は、4回描画してると書いてある。
視錐台を4つ輪切りにして、4回描画するなら
1つのボリュームにつき、SMは1枚でいいから
全部取っとく必要はないだろうってことで、
この点は正しいと思う。
リンク先はちょっと端折ったのか。
思ったんだけど、SMはミッブマップにして
各レベルに描くといいよねぇ。
431デフォルトの名無しさん:2009/06/07(日) 01:48:10
>>430
だから、シャドウマップ用のライトからのカメラ視錐台を、バウンディングボックス毎に
書き込み内容が最大になるように作るって意味分る?

単位が違う4回の書き込みを1枚のシャドウマップに追加でレンダリングして一緒にしてどうする
432デフォルトの名無しさん:2009/06/07(日) 02:11:50
>>431
SM作成 -> 輪切りのレシーバ描画 -> SM作成 -> 輪切りのレシーバ描画 -> ...
ってことだと、思ってたけど。リンクのソースは見てないけどさ。
これならSMは1枚でいいでしょ。
433デフォルトの名無しさん:2009/06/07(日) 02:20:46
あー、ソースくらい見てね
434デフォルトの名無しさん:2009/06/07(日) 02:24:41
>>432
あのさ、本当にそれでいけるなら
リンク先の作者や他のWEBやら技術本で、複数テクスチャを使うのは勿体無い
となるだろ…

もともと、カスケードシャドウって
シャドウマップのサイズで影の解像度が影響を受けるって問題を解決する方法なんだぞ?
435デフォルトの名無しさん:2009/06/07(日) 02:34:30
>>434
>あのさ、本当にそれでいけるなら
別にこれでいける。いけない理由がない。

>シャドウマップのサイズで影の解像度が影響を受けるって問題を解決する方法なんだぞ?
SMのサイズなんて、バウンディングボックスの作り方でどうにでもなる。
近いエリアのSMのサイズを相対的に大きくしたければ、
バウンディングボックスを小さくすればいいだけ。

ただ、複数回描画自体どうかと思うので、この方法を推奨してる訳じゃない。
さっきも言ったけど、複数枚保持するならミッブマップがいいよね。
436デフォルトの名無しさん:2009/06/07(日) 02:39:40
>>435
>別にこれでいける。いけない理由がない。
じゃ、カスケードシャドウマップを、1枚のシャドウマップで複数描画で行なう例を
アンタの改造ソースか、他のWEBサイトか技術本でも良いけど
教えてくれよw

…本当にカスケードシャドウマップのやり方理解してる?w

437デフォルトの名無しさん:2009/06/07(日) 02:42:54
>近いエリアのSMのサイズを相対的に大きくしたければ、
>バウンディングボックスを小さくすればいいだけ。

あの…バウンディングボックスは、視錐台内のZ毎のOBJに応じて作る物なんですけど…
438デフォルトの名無しさん:2009/06/07(日) 02:50:13
>>436
カスケードシャドウマップがなんたるか
残念ながらわからないけど、1枚のSMで
OKな理由なら、>>432で十分じゃない。

視錘台をブツ切りにして、複数に分けて描画するから
SMのサイズを、そのエリアにフルに使うことが出来る。
-> エイリアスを改善

ブツ切りを複数回に分ける。
-> 各エリアはシリアルに描画されるので、その時々で
必要なSMは1枚のみ。
 -> SMを複数枚同時に保持する必要はない。

別に、作らなくても自明でしょ。

逆に、SMを複数枚同時に保持しなきゃならない理由って何?
参照先があるなら教えれ。
439デフォルトの名無しさん:2009/06/07(日) 02:59:33
>>438
>参照先があるなら教えれ
だからさ、
カスケードシャドウマップも知らない
リンク先にサンプルソースコードもあるのに見もしないで
そう言い張る神経が理解できんw
440デフォルトの名無しさん:2009/06/07(日) 03:06:31
>>439
どうせなら、探してもらった方が楽だし。w

http://memeplex.blog.shinobi.jp/Entry/118/
適当にヒットしたこのブログには、XNAサンプルは
俺の方法でやってると書いてあるよ。
カスケードじゃなくてPSSMらしいけど。
441デフォルトの名無しさん:2009/06/07(日) 03:13:51
だから、カスケードシャドウマップだと何度言わせる気だ…
真性のゆとり君?
442デフォルトの名無しさん:2009/06/07(日) 10:23:35
まぁDirectX10以降なら配列テクスチャあるから1枚で出来るっちゃ出来る。
どうしても1枚でやるならビューポートで4分割とかして描画するくらいか。
個人的に試してみたいのはARGB32Fのそれぞれのチャンネルにそれぞれの
分割シャドウを格納させてみたいがDirectX9だと結局4回描画なんだよなぁ。
443デフォルトの名無しさん:2009/06/07(日) 11:20:04
DX10にもDX3DXある?
2D描画は固定機能3D描画はシェーダーって使い分けてる?
それとも全部シェーダー?
444デフォルトの名無しさん:2009/06/07(日) 11:39:38
なんでヘルプぐらい確認しないんだ?
445デフォルトの名無しさん:2009/06/07(日) 11:43:29
>>443
DirectX10以降は固定機能なんていう負の遺産はない。
2Dも全部シェーダーで自由に書け。
446デフォルトの名無しさん:2009/06/07(日) 20:00:44
板状の四角形と空間の行列なのですが
0,0を右上にするにはどうすれば良いですか

カメラとかスクリーンとか
447デフォルトの名無しさん:2009/06/07(日) 20:20:21
完全な2D目的でいいなら

D3DXMatrixOrthoOffCenterLH (&matProj, 0, 画面幅, 画面高さ, 0, 1, 100 ) ;

その他のパラメーターは自分用に適宜変更
448デフォルトの名無しさん:2009/06/07(日) 20:59:38
それだけだと真ん中が0,0,0になるのですが。
449デフォルトの名無しさん:2009/06/07(日) 21:25:11
ずらせよ
450デフォルトの名無しさん:2009/06/07(日) 21:37:07
A8R8G8B8のテクスチャ画像ってどうやって作ってますか?
DxTex使わないで、PhotoShop単体で作ること可能でしょうか?
451デフォルトの名無しさん:2009/06/07(日) 21:46:50
NVIDIAのサイトにフォトショ用のDDS読み書き用のプラグインがある
プラグインの入れ方がわかりませんとかって質問はここでは無しな
452デフォルトの名無しさん:2009/06/07(日) 21:55:30
32bitbmpやtga使え
453デフォルトの名無しさん:2009/06/07(日) 21:56:21
DirectXSDKにもPhotoshopプラグイン入ってるはずだが
454デフォルトの名無しさん:2009/06/07(日) 22:06:12
トランスフォームでずらしてもオブジェクトの真ん中ナナって切れるのです。
左上の
455デフォルトの名無しさん:2009/06/07(日) 22:10:15
>>454
視点と注視点のx,yは0,0でいいんだぞ
456デフォルトの名無しさん:2009/06/08(月) 07:28:40
clt+alt+delからの復帰の時ってどうしてる?
DirectX関連描画全部クリアされちゃうんだけど・・・
457デフォルトの名無しさん:2009/06/08(月) 07:35:47
アプリクラッシュでおk

若しくは全画面でもウインドウモードで動かす
458デフォルトの名無しさん:2009/06/08(月) 08:49:54
いやいやいや・・・普通にデバイスロスト対策しろよ。
ヘルプに書いてあるだろ。
459デフォルトの名無しさん:2009/06/08(月) 11:07:51
なるほどデバイスロストというのか
特殊なことしてないし全部消して一から再描画にするかな
解決の糸口は見つかった、ありがとう
460デフォルトの名無しさん:2009/06/08(月) 11:53:26
デバイスロストじゃなくただの再描画問題の質問に見えるけどまあいいか
もしそうならWM_PAINTを受け取ったら再描画するようにすればいい
461デフォルトの名無しさん:2009/06/08(月) 12:06:31
>clt+alt+delからの復帰
って書いてるからなあ
462デフォルトの名無しさん:2009/06/08(月) 14:45:42
処理を書き込むと逆にFPSが早くなることってあるのでしょうか。

FRAPSっていうFPSを測れるフリーソフトでDirectXのサンプルの
Tutorial 1: CreateDevice てのを少しいじって
(デフォは無効領域が発生した時のみ更新するからFPSが0で、
ループを作ってPeekMessageとDevice->Presentを足した)
FPSを測ったら40〜50程度しか出ていません。

DeviceのPresentationIntervalはD3DPRESENT_INTERVAL_DEFAULT
であり、中身は基本的なフレームしかなく描画処理は書かれていません。

家のパソコン環境がおかしいのかと思って他のDirectXを使っているソフトで測ったら
他のソフトは問題なくFPSが60になるので環境が悪いわけではないと思います。
463デフォルトの名無しさん:2009/06/08(月) 15:02:23
モニターのリフレッシュレートが50くらいとか?
464デフォルトの名無しさん:2009/06/08(月) 15:10:09
>>463
すみません
60でした。
465デフォルトの名無しさん:2009/06/08(月) 15:51:25
コード晒してみそ
466デフォルトの名無しさん:2009/06/08(月) 16:33:09
二次添削になるかもしれないので、後長いので、変えた部分を載せます。
サンプルはDirectX SDKを入れるとApril2007には入っていました。
最新のにも入っています。
タイトルはTutorial 1: CreateDeviceです

メッセージループを

if(PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
{
if (!TranslateAccelerator(hWnd, hAccel, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
InvalidateRect(hWnd, NULL, TRUE);

と置き換えました。
WM_PAINTの所でDevice->Presentをやっています
467デフォルトの名無しさん:2009/06/08(月) 16:36:34
というか、ディスプレイの周波数に同期して描画させるなら、
WM_PAINTなんて標準機構はまどろっこしくて使ってられないと思うんだが?
PeekMessage()かけながら永久ループをまわすのが常道じゃないかと。
468デフォルトの名無しさん:2009/06/08(月) 16:57:08
ゲーム進行をウィンドウドラッグ中や非アクティブ時に停止させたいけど
被ったら消えて戻らないのがいやだって時につかえるだろ
進行停止してるのにガンガンリソース使っていいならループで回せばいい
469デフォルトの名無しさん:2009/06/08(月) 17:15:07
InvalidateRectはWM_PAINTを発生させるだけ
WM_PAINTは優先順位低い
したがって他のメッセージがあると後回しにされる。
この優先度を上げるにはUpdateWindowを呼ぶ
470466:2009/06/08(月) 17:17:18
このように書いたのは単純に楽で便利そうだからです。

元のサンプルコードがWM_PAINTでDevice->Presentを呼び出す関数、
そのほかにもこの関数を呼び出すために必要な処理を
まとめた関数が描かれていたので、それを利用しました。

FPSを知るために一時的に変えただけです。
471466:2009/06/08(月) 17:24:07
>>469
無効領域を発生させるため
InvalidateRectの後にUpdateWindow追加して
試したけど、FPSは低いままでした
472デフォルトの名無しさん:2009/06/08(月) 17:38:00
ちょっとやってみたけど60行くなあ
WM_PAINTはそのままで、InvalidateRectの場所にRender();置いてみるとどうなる?
vsyncオフも試してみてほしいが、ビデオカードはRadeonだったりする?
473デフォルトの名無しさん:2009/06/08(月) 17:48:22
無効領域
474466:2009/06/08(月) 19:49:14
少しわかった事がありました。
結論から言うとパソコンのスペックのせいか
遅くなる時と速くなる時があります。
もちろんコードはいじっていません。

不思議なのは
1.なぜこのような波が生じるのか
→遅い時は重い作業をしていなく、CPU使用量も5%前後
→何かのプログラムを実行するとデバイスの内部で設定が変わるものがある?

2.遅い時、早い時ともにFPSが60をキープしているプログラムがある事
→そのプログラムはDeviceのPresentationIntervalはD3DPRESENT_INTERVAL_DEFAULT
なのでタガを外しているわけではない、FPSも60に設定
→他にリミットを解除する方法があるかも

実際にサンプルを実行していただいた方ありがとうございました。
475デフォルトの名無しさん:2009/06/08(月) 20:14:36
>>462
PresentationIntervalをD3DPRESENT_INTERVAL_ONEにしても駄目?
476デフォルトの名無しさん:2009/06/08(月) 22:10:50
最小タイマ分解能ので、似たような話あったね。
他プログラムでデバイスの設定かわると、それ以外にも影響するとか。
477デフォルトの名無しさん:2009/06/08(月) 22:24:25
FPSを一定に保つことと、Windowsのメッセージパイプラインの維持は
ものすごい相性が悪いので、WM_PAINTを使って行儀よくやろうなんて考えないほうがいいよ。
別の人が言ってるように、WM_PAINTはWindows側が勝手にタイミングを決めて送ってくるので、
無効領域を設定しても必ず呼び出してくれるわけではない。

それから、無限ループによる描画を行っていて、
最小化時に描画をスキップさせるようなのは、別に実装は難しくないよ。
478デフォルトの名無しさん:2009/06/09(火) 12:56:03
Direct3Dのことをうまいとこまとめあげている書籍って何がありますか?
色々ありすぎて迷ってます。
ハードウェアよりの視点で書いてるのがよりよいです。
よろしくお願いします。
479デフォルトの名無しさん:2009/06/09(火) 23:14:03
ハードウェアよりの意味がわからんが・・・
とりあえず高額社の本でもよんどけばいんじゃないだろうか。
480デフォルトの名無しさん:2009/06/10(水) 14:53:46
MFCとDirectxを使って3Dモデリングツールを自作しています。
モデリングする対象の頂点バッファやインデックスバッファ(ビデオカード上?)
の領域確保ですが、ユーザーがエディットして頂点数などが増えていく度に容量増やしてそのつど
確保しなおすべきでしょうか?それともある程度の大きさの容量をまとめて確保しておくべきでしょうか?
(多分drawprimitive時にどこからどこまでを描画とか出来たし)

ビデオカードの挙動をよく知らないのですが、細かくバッファ開放と確保を繰り返しまくってると
領域が分断されまくって動作に影響したりするのでしょうか?
481デフォルトの名無しさん:2009/06/10(水) 15:04:39
サイズが動的に変化と言えば大体2,4,8,16って二乗に増やすかな
482480:2009/06/10(水) 15:07:42
システムメモリ側に元となるデータを確保しておき、
ビデオカード側に編集後のデータを転送しようと思ってます。

システムメモリ側でのバッファ管理はどうしようかとググって調べてみると、
リングバッファやギャップバッファなど面白そうな概念が出てきたので、
そういう管理にしようと思ってます。
483デフォルトの名無しさん:2009/06/10(水) 15:11:48
つまり
100byteの領域が欲しい
128byteの領域を確保
120byteの領域が欲しい
現状維持          (足りているため)
200byteの領域が欲しい
256byteの領域を再確保
100byteの領域が欲しい
現状維持          (128byteの境目で確保が頻繁に発生しないため)
40byteの領域が欲しい
128byteの領域を再確保 (64byteの境目で確保が頻繁に発生しないため64にはしない)

こんな感じか?異論は認める
484480:2009/06/10(水) 15:12:45
>>481
頂点数が3以上になったら4の領域を再確保、
頂点数が5以上になったら8の領域を再確保、
頂点数が9以上になったら16の領域を再確保ということでしょうか?

なぜでしょうか?
485デフォルトの名無しさん:2009/06/10(水) 15:15:42
AddVector( vec(0,0,0) )
とか1頂点追加するごとに何MBもするメモリを再取得してたら大変だから

リングバッファでもいいと思うけど
486480:2009/06/10(水) 15:26:31
バウンダリ調整みたいなのがビデオカードのバッファ確保でも入って
100バイト確保しても実際は128バイト確保されるのでしょうか?
487デフォルトの名無しさん:2009/06/10(水) 15:30:20
違います
数バイトの変化でいちいち再取得しなくていいようにあらかじめ自分で多めに取得すると言うだけの話
488デフォルトの名無しさん:2009/06/10(水) 15:59:24
それってジオメトリシェーダーで出来ないのかな?
使った事ないからわからんが。
489デフォルトの名無しさん:2009/06/10(水) 16:10:22
動的にサイズ変更が出来ない頂点バッファを
使う理由はなんだ?
490デフォルトの名無しさん:2009/06/10(水) 16:38:17
どうしてD3DRECTにコンストラクタ付けておくくらいの頭が廻らないかな
491480:2009/06/10(水) 16:50:01
>>489
すいません。まだよく分からないのですが何を使うのがお勧めでしょうか?

>>490
480へのレスでしょうか?
492デフォルトの名無しさん:2009/06/10(水) 16:51:04
>>489
どうしても何も、メモリの再割り当てのロジックを考えれば分かるだろう。
いったい何を言っているんだ?
UP系の話だったとしても、結局は必要ならメモリの再割り当てをするのは同じだろ。
493デフォルトの名無しさん:2009/06/10(水) 16:52:59
そりゃC言語に対応するためだろ
494デフォルトの名無しさん:2009/06/10(水) 17:01:43
>>492
>メモリの再割り当てのロジックを考えれば分かるだろう。
ごめん、わからない。もうちょっと具体的に言って。

>UP系の話だったとしても、
そのとおり、
頂点バッファのサイズが動的に増減する用途に
std::vector + UP系ではなく、頂点バッファを使うメリットが
浮かばなかったので。
495480:2009/06/10(水) 17:29:35
自分の考えてる事

○システムメモリ
リングバッファ+ギャップバッファで頂点情報を持つ。
途中の削除や挿入などにも対処。

○グファフィックカードのメモリ
予め確保された領域(システムメモリの頂点数を元に、段階的に再確保)
に対して、システムメモリの頂点情報を必要あらば編集やソートを行いつつ、
隙間無く詰める。
Drawprimitiveの開始位置やら頂点数やらの設定にてデータのある部分のみ描画。
496480:2009/06/10(水) 17:40:51
○グラフィックカードの確保するメモリ容量
このツールで作成する予定のものの頂点数の平均値を考慮(まだ色々作った事無くて凄い適当。定数にでもして後で変更可にする)

ミサイル、弾丸や板ポリなど:30か40?
描画数の多い登場キャラ:300か400?
そこそこ精密なオブジェクトやキャラ:5000くらい?
CG並のクオリティ:2万か3万?

初期の確保領域数を5000程度に設定。
そこから足りなくなる毎に倍倍にしていく(全体コピーペーストで一気に倍になるし、
頂点数多いほど瞬間的に増加する量も増えていくと予想されるため)
497デフォルトの名無しさん:2009/06/10(水) 17:47:23
VRAMに取れるように設計しておいて、とりあえずUPで実装すれば良い。
498デフォルトの名無しさん:2009/06/10(水) 17:51:17
>>494
up系じゃない理由はレンダリングの高速化だろjk
モデリングツールならup系でもいいかもな
499480:2009/06/10(水) 18:17:09
色々教えて頂いた方々ありがとうございました。
500デフォルトの名無しさん:2009/06/10(水) 18:53:11
>>494
std:vectorだってサイズが変わって、予約サイズをオーバーしたら、
内部で再割り当てするだろう。
見えるところでやっているか否かの違いでしかないし、
頂点バッファでも同様の処理を一度書けばいいだけの話。
501デフォルトの名無しさん:2009/06/10(水) 21:29:00
,==============、
| .__     /:::::::::|   ロH  ヨ メッコール
|(一和)  /:::__:::::|    ̄」  己
| . ̄ ̄   /:::::| |:::::|
|     /:::::::L二l| メッコールは大麦エキスと世界三大名水のひとつチョヂュン鉱泉水から
|     /::/二丶:::| 生まれ、ビタミンが豊富に含まれたまったく新しいタイプの健康飲料水です。
|    /::::| l___l |:::| ┌────────────────────┐
|     /::::::ヽ─:::::::| |・品    名 :炭酸飲料                     |
|   /:::/.二l:::::::./| |・原 材 料 :糖類(砂糖,果糖ぶどう糖液糖).. . |
|   /:::::l l_:::::::/ | |           .大麦エキス,酸味料,香料,ビタミンC |
|  ./_:::::_ヽ─': / /| |          ナイアシン,ビタミンB2,ビタミンB1  |
| /| ヽ/ .|,__::::/ コ | |・内 容 量 :250ml                     |
| /:|_lヽ/l_(二/ .ッ | |・製造年月日:缶底に記載                 |
|/:::::::::::::::: ̄/ .メ  | |・原 産 国 名:大韓民国                   |
|::::::::::::::::::::::/    | |・輸 入 者 :株式会社ハッピーワールド     . |
|::::::::::::::::::::/    | └────────────────────┘
ヽ============〃 ※なお、日本版の缶には、「あき岳はりサイクルへ(空き缶はリサイクルへ)」という誤植がある。

502デフォルトの名無しさん:2009/06/10(水) 21:39:05
突然なんだ?
503デフォルトの名無しさん:2009/06/10(水) 21:47:23
初心者が無駄な最適化を気にして詰まる典型。
504デフォルトの名無しさん:2009/06/11(木) 10:05:52
キーを押している間は移動して、キーをはなしている間は
元の位置に戻るようなことをさせたいんだけど…

DirectInputでキーボード入力を読み取るのは押したかどうかしかわからないの?
505デフォルトの名無しさん:2009/06/11(木) 11:57:09
押してるかどうかだけ分かってれば
押した瞬間も離した瞬間も検出できるだろ
506デフォルトの名無しさん:2009/06/11(木) 12:00:16
なんだっけ四聖なんとかのサイトにDXライブラリで押してる時間の検出方法があったから
それでも参考にしたら?
507デフォルトの名無しさん:2009/06/11(木) 13:43:38
IDirectInputDevice8::GetDeviceDataで
入力履歴の配列が得られる。
これで何時押されて、何時離されたか
判断出来る。
508デフォルトの名無しさん:2009/06/11(木) 14:06:11
あとは、毎フレームごとに前フレームでもキーが押されていたら
数字を足していくとかすれば、自前でも処理可能。
押されていない状態が検出されたらカウントを0にリセット。
60FPSだったら、60カウントで1秒間押されていたとかね。
509デフォルトの名無しさん:2009/06/11(木) 15:06:58
>DirectInputでキーボード入力

禁止
510デフォルトの名無しさん:2009/06/11(木) 17:48:56
>>509
まー確かに禁止されて入るんだが、
DirectInputによるキーボード処理は実装しやすいから
このままで全然困ってないんだよな。
サポートされなくなったら考えようかな、といったところ。
511デフォルトの名無しさん:2009/06/11(木) 18:17:53
あるベクトルを90度回転したベクトルってどうやって
求めればいいですか?
512デフォルトの名無しさん:2009/06/11(木) 18:24:21
90度って2次元?
513デフォルトの名無しさん:2009/06/11(木) 18:25:40
行列なりなんなり・・・
514デフォルトの名無しさん:2009/06/11(木) 18:57:47
いえ、3次元です
行列を使ってどのようにすればよいのでしょうか?
515デフォルトの名無しさん:2009/06/11(木) 18:58:10
3次元だともう1本軸がないとグルグル回ってしまって求めることができない
516デフォルトの名無しさん:2009/06/11(木) 18:59:54
なかなか面白い質問だと思わない?
ベクトルを回転させる為には、直交する軸ベクトルが
必要になるが、直交している時点で既に要件を満たしているという。
517デフォルトの名無しさん:2009/06/11(木) 18:59:55
全く点を動かさないクォータニオンを教えてください!
518デフォルトの名無しさん:2009/06/11(木) 19:03:21
>>517
(0,0,0,1)
519デフォルトの名無しさん:2009/06/11(木) 19:04:22
もう1本軸がないと無理ですか…馬鹿な質問ですみませんでした
ありがとうございます
520デフォルトの名無しさん:2009/06/11(木) 19:06:55
>>518
ありがとうございました
521デフォルトの名無しさん:2009/06/11(木) 19:13:59
>>519
そこで、あきらめるんかw
いまの条件では求めることはできないけど
あなたの求める値は求められるかもしれないのに
単に90度回したいじゃなくて
なぜ90度回したものがほしかったのかを書くんだ
522デフォルトの名無しさん:2009/06/11(木) 20:49:54
LPD3DXFONT g_pxfonts[];
int x=3;
g_pxfonts[hgofont]->DrawText(g_ptextsprite,文字列,-1,&rect,DT_CENTER|DT_VCENTER,D3DCOLOR_COLORVALUE(1.0f,0,0,1.0f));
とやって文字列の部分に変数を表示しようと思い_T("%d",x)と書いたんですが
%dとは表示されるが変数xの中身は表示されません
何ででしょう?
523デフォルトの名無しさん:2009/06/11(木) 21:04:01
なんかメッシュの裏っ側にテクスチャが貼られるんだけどなんで?
524デフォルトの名無しさん:2009/06/11(木) 21:05:07
>>522
_T() ってどういう意味か知っているのか?
知らないなら調べておけよ。
ちなみに、文字列の合成はsprintfでやるんだぞ。
525デフォルトの名無しさん:2009/06/11(木) 21:17:03
>>524
すいません_Tはいりませんでしたね
言われたとおりsprintf使ったらできますた

ありがとうございますた
526デフォルトの名無しさん:2009/06/11(木) 21:56:10
DirectXで画像読み込みってどうするの?
画像読み込んでスプライトに表示したいんだけど・・・

もしかして画像読みこみに関してはLPD3DXFONTみたいにカプセル化されてない?
527デフォルトの名無しさん:2009/06/11(木) 22:09:55
カプセル化も何もLPD3DXFONTはただのポインタ
528デフォルトの名無しさん:2009/06/11(木) 22:40:52
DirectXには
メッシュもフォントもスプライトもない。
529デフォルトの名無しさん:2009/06/11(木) 22:47:03
またおめえか
>>526
D3DXCreateTextureFromFileを使うんだ!
詳しいことはヘルプをダウンロードして読むんだ!

ヘルプは難しくない!だいたい同じようなことが書いてあるだけだ!
530デフォルトの名無しさん:2009/06/11(木) 22:51:00
D3DXはDirect3Dではない。
531デフォルトの名無しさん:2009/06/11(木) 22:54:50
>>529
おかげでうまくいったわ

ただ背景(RGB(0,0,0))を透過するのはどうすればいいんだろ?
532デフォルトの名無しさん:2009/06/11(木) 23:02:13
α値を適切に設定するだけ
533デフォルトの名無しさん:2009/06/11(木) 23:05:57
>>523
ポリゴンは、それを構成する3頂点の並び順で
表裏を決定する。
それが貴方とDirect3Dで逆になってるんだろう。
CullModeでぐぐれ。
534デフォルトの名無しさん:2009/06/11(木) 23:08:56
>>531
最初からアルファの入ってるフォーマットで画像を作成すれば解決
pngとかddsとかtgaとか
535デフォルトの名無しさん:2009/06/11(木) 23:15:17
D3DXCreateTextureFromFileEx()を使って、
カラーキーに抜きたい色を設定すれば、
その色のアルファは0x00になる。

色変換は下記を参照
http://msdn.microsoft.com/ja-jp/library/cc373099(loband).aspx
536デフォルトの名無しさん:2009/06/11(木) 23:16:32
>>533
ありがとうございました
537デフォルトの名無しさん:2009/06/11(木) 23:39:47
いっつも訳して厨が湧くので、
対訳付き画像に加工してみた
こっちにも貼っておくね

http://www.rupan.net/uploader/download/1244728697.jpg

538デフォルトの名無しさん:2009/06/12(金) 03:48:53
今MSDNバグってるページない?
539デフォルトの名無しさん:2009/06/12(金) 03:54:01
>>538
お前はMSDNが何ページあるのか数えたことがあるのか。
540デフォルトの名無しさん:2009/06/12(金) 03:57:48
あるけど?
541デフォルトの名無しさん:2009/06/12(金) 08:28:08
>>540
なら数字出してみろ
542デフォルトの名無しさん:2009/06/12(金) 09:13:59
1ページだけ数えた:b
543デフォルトの名無しさん:2009/06/12(金) 11:33:35
MSDNってリンク切れしてるような古いページも残ってたりするから
TOP以外の例えば検索エンジンとかからたどったページがおかしいなんて良くあることじゃ
544デフォルトの名無しさん:2009/06/12(金) 15:02:37
ブログとかいうやつは大半がおかしいな
545デフォルトの名無しさん:2009/06/12(金) 15:24:09
                      ヘ(^o^)ヘ
                        |∧  私のコード
                    /  /
                (^o^)/
               /(  ) 夢と恋と不安で出来てる
      (^o^) 三  / / >
\     (\\ 三
(/o^)  < \ 三 でも想像もしないもの
( /
/ く 隠れてるはず!
546デフォルトの名無しさん:2009/06/12(金) 18:45:39
スプライトを自分で作ろうと思うんだけど
FVF_CUSTOMとかCUSTOMVERTEXは
クラスの静的と外におくのどっちがいい?
547デフォルトの名無しさん:2009/06/12(金) 18:50:41
クラスの外で使わないなら
private static constで
548デフォルトの名無しさん:2009/06/12(金) 18:51:10
好きにしろよ
549デフォルトの名無しさん:2009/06/12(金) 22:12:56
ポリゴン数ってメッシュ数のことですか?
ゲーム用のローポリってどれくらいのことを言うんですか?
550デフォルトの名無しさん:2009/06/12(金) 22:24:34
人体キャラクタで2000ポリくらい
551デフォルトの名無しさん:2009/06/12(金) 22:43:50
PS1時代なら500〜800ポリ
PS2で1500〜2000ってところか
もちろんメインキャラ級の話で雑魚Mobなんかはもっと少ないし
主人公キャラだけ3000〜4000使ってるゲームもある
慣れてる人なら1000ポリあればたいていのものは作れる
552デフォルトの名無しさん:2009/06/12(金) 23:00:38
現在Xファイルを読み込んで表示する、ビューアを作成しています。

ttp://sorceryforce.com/manageddirectx/direct3d_cameraoperation.html
ttp://sorceryforce.com/manageddirectx/direct3d_inputmouse.html

↑のページを参考にしているのですが、φが90度を超えた場合でも、
カメラをそのまま回転させる方法がわかりません。
DirectXSDK付属のMeshViewerのように、360度自在にモデルを回転させるには、
↑のコードをどのように改造すればよいのでしょうか?

識者の方、知恵をお貸しください。
553デフォルトの名無しさん:2009/06/12(金) 23:01:23
マジか…
今見たらMesh5700くらいだった…
554デフォルトの名無しさん:2009/06/12(金) 23:21:05
>>552
カメラをオイラー角で制御しようとするのはいろいろ無理がある
ここを参考にするといいかも
ttp://marupeke296.com/DXG_No36_DependenceCamera.html


ManagedDirectXに関してはスレ違いなので具体的な書き方は別の場所で聞いてね
555デフォルトの名無しさん:2009/06/12(金) 23:33:53
ロストプラネットの主人公モデルが30000ポリゴンくらいだっけ?
556デフォルトの名無しさん:2009/06/12(金) 23:36:35
DirectXにメッシュなどない。
557デフォルトの名無しさん:2009/06/12(金) 23:39:31
>>552
発想の転換

モデルを回転、前後させカメラは固定
558デフォルトの名無しさん:2009/06/13(土) 11:40:15
すみません、directinputでドラッグ&ドロップする方法が分かりません。
一応ググったりmsdn見たりしたんですが分かりません。
559デフォルトの名無しさん:2009/06/13(土) 12:07:07
DirectInputはあくまでマウスやキーボードなどの状態を取得するためのものです
その情報をつかってどう動かすかは自分で実装してください
例えばマウス位置と物体との当たり判定をとってマウス位置に追従させるなど
560558:2009/06/13(土) 12:16:25
いえwindowsapiだとWM_BUTTONDOWNとWM_BUTTONUPがありますが
directinputだと押したときと離したときのメッセージがあるかどうか分からなかったのですが
よく読むとキーを押したときと離したとき両方で同じ値が返るんですね。
これで合ってますかね?
561デフォルトの名無しさん:2009/06/13(土) 12:19:02
普通ゲームないでD&Dさせるならクリックからドラッグ、描画まで全部自前で実装するもの
562デフォルトの名無しさん:2009/06/13(土) 13:12:44
IDirectInputDevice8::SetEventNotificationによって、
入力に変更があったとき、イベントオブジェクトで
通知を受けることが出来るようになる。
これを使えば、Windowsメッセージに近い感覚で
作ることが可能だろう。
っていうか、キーボードとマウスに関しては、
普通にWin32APIでいいよ。
563デフォルトの名無しさん:2009/06/13(土) 13:20:28
てか、押してるか押してないかさえ分かってれば
押した瞬間、離した瞬間なんて簡単に求められるじゃん
なにからなにまで用意されてないと何もできないゆとりさんですか?
564デフォルトの名無しさん:2009/06/13(土) 13:21:32
初心者スレなんだからそのくらい大目にみるしかねえよ
565デフォルトの名無しさん:2009/06/13(土) 13:39:37
>>563
それだと、フレーム間ですばやく押して離したら検知できないじゃん
566デフォルトの名無しさん:2009/06/13(土) 13:40:43
GetDeviceStateよりもGetDeviceDataの方が、取りこぼしが少ない。
instantaneousよりもbufferedの方が直接に近いってのが罠だなー。
567デフォルトの名無しさん:2009/06/13(土) 13:42:47
>>565
そんな超反応できんのかよ
568デフォルトの名無しさん:2009/06/13(土) 13:46:15
60fpsで60連射か・・・ごくり
内部120fpsにするしか
569デフォルトの名無しさん:2009/06/13(土) 13:46:49
>>567
60fpsとは限らないんだぜ
処理落ちで止まることもあるんだぜ
570デフォルトの名無しさん:2009/06/13(土) 13:47:55
処理落ちがおきてて
一桁FPSくらいまで落ちたらそういうこともおきるかもね
でも、フレーム処理とキー入力を分けておけば言いだけの話
てゆうか、そういうつくりにしとかないと
コマンド入力のあるゲームとか作れないぞ
571デフォルトの名無しさん:2009/06/13(土) 13:49:39
いくらなんでも30FPS着るような状況ならそもそもまともに動いてないだろ
572558:2009/06/13(土) 13:52:24
色々とthx。もっと勉強してくるわ。
573デフォルトの名無しさん:2009/06/13(土) 14:48:49
>>553
よっぽど古いPC。たとえばPixelShaderすらない頃のオンボを対象にするのでない限り、5700なら十分軽い
574デフォルトの名無しさん:2009/06/13(土) 14:51:24
>>570
すっごい!ゲームになりますね
575デフォルトの名無しさん:2009/06/13(土) 15:06:48
>>573
作るゲームによるだろう
キャラが1体しかでないようなゲームならそれでもいいだろうけど
視界内に何体もでるようなゲームなら辛くなる
MMOのFF11なんかだろキャラによって変わるけど1700〜2000くらいに抑えてる
それでも人の多いところでは処理落ちを起こす場合もあるわけで
576552:2009/06/13(土) 21:35:15
>>554
>>557
レスありがとうございます。
DirectX以前に、数学の知識が不足しているので、
もう一度数学を勉強して出直してきます。
577デフォルトの名無しさん:2009/06/13(土) 22:53:58
今の半透明の主流ってどんなもの?
578デフォルトの名無しさん:2009/06/13(土) 23:07:27
意味不
Zソートにするかどうかとかそういう話?
579デフォルトの名無しさん:2009/06/13(土) 23:08:41
半透明を使わないのが主流じゃね?
ブラーとかかけづらくなるし。

炎とかの表現に「加算合成」を使うことはあっても、物体を半透明で表現することはほぼ無し。
加算合成なら前後関係気にならないし。
580デフォルトの名無しさん:2009/06/13(土) 23:31:48
半透明のポリゴンは、あらかじめZソートして順に描画しないといけない
けど、半透明ポリゴン同士が立体的に交差する場合は、一意にソートできない
この場合って、根性でごまかすか、根性でポリゴン分割以外に方法ない?
581デフォルトの名無しさん:2009/06/13(土) 23:37:32
自前でシェーダ書けばできなくはない。
いくつもバッファを持って、深度と色を保存しておき、最後に合成する。

実際、そういう方法を今後のスタンダードにしようとする動きはあるが、まだ仕様が決まらず迷走してる。
582デフォルトの名無しさん:2009/06/13(土) 23:44:38
IDirect3DTexture9PtrへのポインタにIDirect3DTexture9Ptrそのもののアドレスを入れるにはどうするですか?
583デフォルトの名無しさん:2009/06/13(土) 23:49:07
ポリゴン分割なんて根性いらないだろ
デザイナにサクっとやってもらえ
584デフォルトの名無しさん:2009/06/13(土) 23:49:13
”シヴィライゼーション”シリーズのアイデアを元に制作された、ネット対戦も可能な”Freeciv”を、みんなでやらないか?

Freeciv公式 基本的な知識はここで大体揃う
http://ja.freeciv.wikia.com/wiki/
初心者向けガイドみたいなやつ
ttp://utsukemononi.gozaru.jp/fciv/index.html
簡易科学表・簡易部隊表・科学進行指南
ttp://freeciv.fc2web.com/home.html
(2ch過去ログ) CIV2天帝レベル攻略指南
http://game.2ch.net/game/kako/996/996675904.html
メタサーバリスト
http://meta.freeciv.org/metaserver.phtml
Freecivゲームユーザーズガイド(1.81)
http://s-keishi.hp.infoseek.co.jp/freeciv/manual-1.8.1-2-ja-1.0/game.html

http://www3.atwiki.jp/freeciv/?plugin=ref&serial=4
http://www3.atwiki.jp/freeciv/?plugin=ref&serial=5
数字つきも含めてかなカナ漢字句読点の直後の %d %s を置換
http://www1.axfc.net/uploader/File/so/13307.zip
Freeciv@wiki
ttp://www3.atwiki.jp/freeciv/pages/1.html
585デフォルトの名無しさん:2009/06/14(日) 00:00:06
>>582
意味が分からん

LPDIRECT3DTEXTURE9 *a ;
LPDIRECT3DTEXTURE9 b ;
a = &b ;

ってことか?


>>577
>>582
書き込む前に深呼吸してその文章で他人に伝わるか考えような
誰もお前の頭の中をのぞけないんだから
途中をさっぴいて結論だけ聞かれてもだれも答えられん
586デフォルトの名無しさん:2009/06/14(日) 00:09:46
>>582
IDirect3DTexture9Ptr pTexture;
IDirect3DTexture9Ptr* p =
(IDirect3DTexture9Ptr*)(
(size_t)&( pTexture->GetInterfacePtr() ) -
(size_t)&( ((IDirect3DTexture9Ptr *)0)->GetInterfacePtr() );
コンパイルしてないんで動くかは知らん。
つーか本当に使うなよ。

>>585
IDirect3DTexture9Ptrは
IDirect3DTexture9のスマートポインタ
587デフォルトの名無しさん:2009/06/14(日) 00:47:47
>>582
&演算子のオーバーロードに阻まれて無理じゃね?
588デフォルトの名無しさん:2009/06/14(日) 00:57:51
半透明で色々に凝ったけど意味無かったよw
だって一緒に派手な魔法エフェクトを必ず出したりするから
細かい部分見えない
589デフォルトの名無しさん:2009/06/14(日) 01:47:54
2Dゲームだと結構多用するけど
3Dだとあんまり半透明使わないようにしてる
590デフォルトの名無しさん:2009/06/14(日) 02:02:43
加算合成だとZソート関係ないって
当たり前なのに言われてはじめて気づいた
やべぇ目からウロコ
591デフォルトの名無しさん:2009/06/14(日) 12:08:59
そうはいってもエフェクト関連は流石に半透明使うけどなー。
592デフォルトの名無しさん:2009/06/14(日) 12:20:27
使うけど前後関係があやふやな場所では使わないようにすれば良いだけ
593デフォルトの名無しさん:2009/06/14(日) 14:22:15
ていうか、速度のために演出まであきらめちゃうのはやっぱ違うよね
っていうかこんなソートなんてそこまで時間食わないんだからテキトーに表示してみて
デザイナが自分で考えりゃいい
ぶっちゃけ多少、落ちたってあんまり気にならない
594デフォルトの名無しさん:2009/06/14(日) 16:32:47
>>591
どんなものに半透明使う?
マジで知りたい。

例えばゲームではレーザーも、爆発も、魔方陣も加算合成だろ?
595デフォルトの名無しさん:2009/06/14(日) 16:34:40
水面とか?
596デフォルトの名無しさん:2009/06/14(日) 16:43:37
いまどきそんな水面ねーよ。
普通水面は一旦他のレンダーターゲットに描いた絵を加工する。波は加算だし。


597デフォルトの名無しさん:2009/06/14(日) 16:57:46
>>594
2D描画部の淵とか全部半透明
フェードアウトインも半透明のポリを前においてる
ビルボード物の淵とか半透明

半透明ばっかりだわw
淵汚いからα画像ばっかりだし
598デフォルトの名無しさん:2009/06/14(日) 17:06:16
この話の流れで2D描画をあげるなんて、どういう理解力なんだろうな
唯一の3Dものであるビルボードも、お前そんなところの半透明見えるのかよってレベルだし・・・
599デフォルトの名無しさん:2009/06/14(日) 17:07:55
>>598
いや、結構でかいし
草とか昆虫の羽根っぽいのとか使いまくってるし
600デフォルトの名無しさん:2009/06/14(日) 17:11:32
ポリゴンレベルのソートはそんなにいらないかもね
でもノード単位のソートだったら別にコストねーも同然だし
やったらいいんじゃね?
601デフォルトの名無しさん:2009/06/14(日) 17:12:11
>>599
ん、そうだね。わかったよ
じゃあ君はもう黙っててくれるかな

>>他ALL
他に、まともな意見ある?
602デフォルトの名無しさん:2009/06/14(日) 17:21:12
半透明はまず使わないな・・・。
エフェクト関連は流石に使うとか言いながら、2D描画の淵とか言いだしちゃう591以外に意見あるやつなんているのかね?
虫の羽とか、どんだけ虫を拡大して見つめるゲームなんだよと。
603デフォルトの名無しさん:2009/06/14(日) 17:23:22
>>598
>唯一の3Dものであるビルボードも、
>お前そんなところの半透明見えるのかよってレベルだし・・・
これは反論にはならないお
例えば、樹木の枝葉は今でも
半透明ビルボードの集合を使ってると思うお

604デフォルトの名無しさん:2009/06/14(日) 17:30:38
>>603
ホントだよな
なんで半透明を使わない方向にもっていこうとしてるのか疑問
普通にできるわけねーじゃん
うっすら透けるもんから枝葉までほとんど半透明が必要なのに
なんで使わないなんて結論になるのか
羽が舞う系のエフェクトだって絶対に必要になるし
加算ばっかで全部できるわけねーだろ
頭おかしいだろこいつ(>>602
605デフォルトの名無しさん:2009/06/14(日) 17:39:22
消滅する敵キャラをフェードアウトさせる時は、普通半透明じゃね?
606デフォルトの名無しさん:2009/06/14(日) 17:43:24
そもそも、半透明で加算合成していいのは
自ら発光してて、かつ透過率100%のものだけだと思う。
現実にそんなものはないので、現実の半透明物質を
半透明ポリゴンでシミュレートしたければ、
透過率に沿って補間合成して、発光分を足す形か?
607デフォルトの名無しさん:2009/06/14(日) 18:36:14
無理に半透明を使わなくても、穴あき模様のテクスチャを使えば簡単に解決するぞ。
608デフォルトの名無しさん:2009/06/14(日) 18:43:40
>>603-604
擁護レスまで入れちゃって・・・
自演だとバレバレだってわからないのか?

そんな短時間に、アルファテストすら知らないくせに妙に勝ち誇ってるアホが2連続レスなんてありえねーだろw
609デフォルトの名無しさん:2009/06/14(日) 18:47:12
まとめてレスりゃ良かった

>>605
初めてまともな意見だぜ
なるほどね。
リアル系を考えてたので、頭に浮かばなかったわ

>>606
半透明物質ってのが、あんまり世の中にないんだよな
ゲームに出てきそうなのは、窓ガラスとかか・・?
ただ、ガラスとかは「半透明ポリゴン同士が立体的に交差する」ことがまずないしなぁ
610デフォルトの名無しさん:2009/06/14(日) 19:11:10
オブジェクト単位でのソートが高コストになりがちか
もしくはお互い交差してしまう
なんていう条件はせいぜいパーティクルくらいだよね
半透明を使ったパーティクルなんて使う人いないだろうし

その条件にあてはめなかったとしても、やっぱり私もガラス窓くらいしか思いつかない
半透明のペンケースとか思いついたけど、そんなもの不透明に仕様変更したほうが現実的
611デフォルトの名無しさん:2009/06/14(日) 19:18:28
金網や飾り枠なんかも全部モデリングするんだ?w
もう苦しすぎるから発言やめたほうがいいんじゃない?w
612デフォルトの名無しさん:2009/06/14(日) 19:29:30
金網なんてアルファテストだけでいいんじゃないの?
613デフォルトの名無しさん:2009/06/14(日) 19:32:18
>>612
ジャギりまくりw
614デフォルトの名無しさん:2009/06/14(日) 19:34:42
近未来ウィンドウの類もダメだな
空間にオブジェクトに隠れる文字列を表示するのもダメだな
615デフォルトの名無しさん:2009/06/14(日) 19:36:30
プログラミング暦20年以上だけど
今だにDirectXに手を出せていません。
やはりDirectXをやれるかどうかは才能も必要ですね。
616デフォルトの名無しさん:2009/06/14(日) 19:38:33
建物の影もダメだな
617デフォルトの名無しさん:2009/06/14(日) 19:56:04
色つきビニール傘やカッパの類もダメ
サングラスも無理
618デフォルトの名無しさん:2009/06/14(日) 21:01:52
プログラマーつったって得意分野は別別なわけだし。。。
619デフォルトの名無しさん:2009/06/14(日) 21:12:47
      ______
      \|        (___    
    ♪   |\            `ヽ、 
         |  \             \
   ∧ ∧ |   \    MEKURA   〉
   (*`q´) | ♪   \          /
 ‖( つ| ̄ ̄ ̄ ̄ ̄ ̄! ̄ ̄ ̄ ̄ ̄ ̄ノ
 ‖( 匚______ζ--ー―ーrー´
  〓〓JJ .‖    ||       .||
 ‖       ‖            ||

620デフォルトの名無しさん:2009/06/14(日) 21:46:54
>>613
え、ジャギの部分は半透明でいいじゃん
問題は、そのジャギの部分が「正しく後ろを透過しているか」をプレイヤーが認識できるほどの大きさで表示されるのかってことだろ
俺はされないと思うが
621デフォルトの名無しさん:2009/06/14(日) 21:51:58
>>620
アンタ、アナログな人だね。
普通プログラマはそんな考え方しないもんだ。
プレイヤーが認識できるほどの大きさって
定義されてるん?
622デフォルトの名無しさん:2009/06/14(日) 21:54:44
え?レイトレースですらない今のなんちゃって3Dで、そんな完璧を求める考え方するんだw
それっぽく見えりゃいいんだよ
623デフォルトの名無しさん:2009/06/14(日) 21:57:07
空間に文字列だの、サングラスだの、そいつら他の半透明物体と本当に交差するのか?
設計自体に問題あるだろそんなゲームw
624デフォルトの名無しさん:2009/06/14(日) 22:01:35
>>623
ネトゲで
建物の向こうの人間の頭についてる名前までみたくないときあるだろ
625デフォルトの名無しさん:2009/06/14(日) 22:04:22
そういうのは本体を遮蔽カリングしなさいよ
626デフォルトの名無しさん:2009/06/14(日) 22:06:57
>>625
しかたねーだろ
そうしてほしいっていうんだから
627デフォルトの名無しさん:2009/06/14(日) 22:17:44
まるで「俺はプロなんだぜ」みたいなアピールしなくていいから。痛々しい
第一半透明物体と交差しねーじゃねーかそれ
628デフォルトの名無しさん:2009/06/14(日) 22:21:12
ネトゲのキャラ頭上の名前を、ワールド座標系に置いて描画する利点ってなんだ?
遠いキャラほど小さく表示されるとか?読めないよな
629デフォルトの名無しさん:2009/06/14(日) 22:33:52
あり得ない前提条件を提示して、無理にでも交差する状況を設定しないと、
そもそも議論が成り立たなくなるだろう。
目的のための手段が必要なんじゃない、手段のために目的を作り出すことこそ重要なんだ。
630デフォルトの名無しさん:2009/06/14(日) 22:34:09
結局、今どきポリゴン交差する可能性があるような半透明なんて使われないってことですな
631デフォルトの名無しさん:2009/06/14(日) 22:42:11
金網のジャギに半透明を使うのはいいとして、結局>>611はどうやって完全な前後関係性を保っているのか方法を聞きたいもんだ
632デフォルトの名無しさん:2009/06/14(日) 23:27:57
>>628
建物に隠れたり正面向いてないやつには角度つけてほしいんだとよ
っていうかさっきっからなんで自分の都合に合わせて仕様を強引に変えようとしてるの?
客がこうしたいって要望があったらそうしなきゃダメだろ
633デフォルトの名無しさん:2009/06/14(日) 23:33:19
自分の妄想を客からの要望ということにして、議論を進めようぜ。
634デフォルトの名無しさん:2009/06/14(日) 23:36:44
>>633
客の妄想なんてもっと斜め上だぞ
635デフォルトの名無しさん:2009/06/14(日) 23:39:14
主人公とカメラの間に来た障害物が半透明ってので多用したな
636デフォルトの名無しさん:2009/06/14(日) 23:40:32
>客がこうしたいって要望があったらそうしなきゃダメだろ
えーと、一般的に学生が思ってる勘違い社会人像ですね。
1年でもまともに社会人やってれば、客に逆提案もできない人間はお荷物だと自覚できます。
637デフォルトの名無しさん:2009/06/14(日) 23:41:54
オブジェクト選択画面でピックアップしたもの以外は半透明+緑着色・・・ってのもやったな
必要無いってことないだろ
638デフォルトの名無しさん:2009/06/14(日) 23:42:44
>>636
君の案もやってもいいけど
まずは言われたとおりやってみてくれないかな?
639デフォルトの名無しさん:2009/06/14(日) 23:43:10
>>635
やっと語り合うにふさわしい題材が来たな!
特に障害物がでかいと、オブジェクトの重心でソートすりゃいいって問題じゃなくなるし。

それに引き換え「正面向いてない名前プレートは角度付けてほしいんだとよ」とか(呆
読めねーじゃねーか。
640デフォルトの名無しさん:2009/06/14(日) 23:46:42
客の要望を全部聞いてたら終わるものも終わらんわな
半透明の交差を処理しないとゲーム性にかかわるような状況ならなんとかするし
見た目が多少かわる程度なら代替案でごまかして時間を節約する
「こことここの交差がすごいんですよ!」なんて説明しても
客はもちろんプログラマ以外の人からは「ふーん?」で終わるなんてよくあること
641デフォルトの名無しさん:2009/06/14(日) 23:48:26
角度つき名前プレート君をいじめるのはそろそろ自重しろ
彼は今日初めてアルファテストを知り、半透明前後問題はレイトレースでもなきゃ完全は不可能と知ったんだ
それを思えば初心者スレに相応しい人間だと思えるだろ?

謙虚さがまったくないのが問題だが
642デフォルトの名無しさん:2009/06/14(日) 23:48:29
>>640
やってやったほうが早いじゃねぇか
643デフォルトの名無しさん:2009/06/14(日) 23:50:19
>>641
つ2度塗り
644デフォルトの名無しさん:2009/06/14(日) 23:51:25
>>635
・半透明で、障害物の裏面描画(CWカリング
・半透明で、障害物の表面描画(CCWカリング
の順でやるのは確定として・・・

他の物体との前後関係はどうしような
障害物が大きくて長いとなったら、これこそポリゴン単位での前後関係問題が出るな
しかも目立つ
645デフォルトの名無しさん:2009/06/14(日) 23:52:14
>>642
業務系なら最初の仕様書にない変更は別料金別期間を請求できるけど
ゲーム系は仕様をひっくり返されるような変更があっても
納期も制作費も変わらないことが多いんだぜ?
646デフォルトの名無しさん:2009/06/14(日) 23:53:33
>>644
べつに球判定で主人公とカメラの間にあったらでいいんじゃない?
ソートもオブジェクト単位で
なにか問題あったっけ?
まったく覚えないんだけど?
647デフォルトの名無しさん:2009/06/14(日) 23:54:07
>>645
趣味が仕事なんだからいいじゃん
648デフォルトの名無しさん:2009/06/14(日) 23:54:48
>>645
かかったらかかった分だけもらえる開発しかやったことないな
申請すればもらえるよ
お客さんもしょっちゅう電話でやりとりしてるからこっちの工程知ってるし
649デフォルトの名無しさん:2009/06/15(月) 00:00:17
逆にこれを実装すると
これだけの人月かかかりますって話すると
じゃあいいです、って言われる場合もあるけどなw
クライアントなんて思いつきでものを言ってる場合がほとんどだし
意見の取捨選択は大事だな
第三者の客観的かつ無責任な意見も良いものを作るにはには時には必要だけど
650デフォルトの名無しさん:2009/06/15(月) 00:02:00
とりあえず「角度つき名前プレート」という画期的仕様が実装されたMMOが出てから揉めろ
プロ騙りのガキ相手にしてんじゃねーよ

>障害物半透明
不透明物体をとりあえず描画
障害物の深度値を深度バッファに描きこむ
半透明物体(障害物除く)を全て描画し、その際障害物深度値より遠いピクセルのみ描画
障害物を半透明描画
半透明物体(障害物除く)を全て描画し、その際障害物深度値より近いピクセルのみ描画


>>646
斜めの物体が障害物だとして、○と●が両方とも障害物の奥にあるべきなのに、
例えば重心とかでソートした場合○→障害物→●の順番に描画されちまう
      __
   ○/ /
   / /
●/ /
  ̄ ̄
   ↑
   カメラ
651デフォルトの名無しさん:2009/06/15(月) 00:31:43
>>650
壁は壁で判断したらいいじゃんw
なんでそう一括で処理しようとするの?
壁の判定わからないの?w
652デフォルトの名無しさん:2009/06/15(月) 04:50:19
GetKeyState()ってGetKeyState(VK_UP||VK_DOWN)ってできないんですか?
または的に使いたい時ってどうすれば良いのですか?
653デフォルトの名無しさん:2009/06/15(月) 06:58:11
GetKeyStateなんか普通使わない。
GetAsyncKeyStateを何度も呼ぶか、GetKeyboardStateでまとめてキーを取るか、
DirectInputかXInputを使う
654デフォルトの名無しさん:2009/06/15(月) 07:13:13
ありがとうございました
ジョイスティックを使いたいのでDirectInputでやることにします
655デフォルトの名無しさん:2009/06/15(月) 07:44:56
DiectInputでキーボード使うとかアホだろ
656デフォルトの名無しさん:2009/06/15(月) 08:59:09
>>651
わからないんで、是非教えてください
657デフォルトの名無しさん:2009/06/15(月) 16:31:24
゛真ん中に居てキャラクター化背マップが移動するの場合
移動の命令はキャラクターとマップのどちらにか?
658デフォルトの名無しさん:2009/06/15(月) 16:45:49
にほんごでおk
659デフォルトの名無しさん:2009/06/15(月) 17:06:56
つーかマルチ
別の方で答えてしまった、、、損した
660デフォルトの名無しさん:2009/06/15(月) 17:19:19
どこのお国の方かとおもった。
661デフォルトの名無しさん:2009/06/15(月) 17:22:46
確実に日本人じゃない
662デフォルトの名無しさん:2009/06/15(月) 22:27:53
つか、ジョイスティックってジョイスティック用の移動処理をさせないといけないの?
十字キーの上下左右を設定してたら勝手に割り当ててくれないの?
663デフォルトの名無しさん:2009/06/15(月) 22:44:16
意味分からん
664デフォルトの名無しさん:2009/06/15(月) 22:51:59
意味はわかるけど、その辺は自分で組めよ。
665デフォルトの名無しさん:2009/06/15(月) 22:59:00
にか?
666デフォルトの名無しさん:2009/06/15(月) 23:20:08
だってわからんし
XYの移動に変換するサンプルとかSDKに入ってないの?
セガ本に書いてるかな?明日立ち読みしてこよう
667デフォルトの名無しさん:2009/06/15(月) 23:28:01
つかキーボード上下で設定しといてプレイヤー側にフリーソフトインストールさせればいいだけか
668デフォルトの名無しさん:2009/06/15(月) 23:42:49
その辺やりたくないのなら、
代わりにやってくれる、もっと上位のライブラリを
使うべきだ
669デフォルトの名無しさん:2009/06/15(月) 23:47:39
>>662 >>666 >>667
なぜジョイスティックの上下左右くらいでそんなに困るんだ?
入力情報を変換テーブル介して抽象化するのは
ごく当たり前の実装方法だろ?
そしたらキーボードと区別する必要もないじゃないか。
670デフォルトの名無しさん:2009/06/15(月) 23:55:55
>>669
ジョイスティックのしくみを知らないからだけど
671デフォルトの名無しさん:2009/06/15(月) 23:58:58
>>670
知らないなら、自分で調べたらいいじゃないか。
オレは初期化/列挙の方法だけネットのサンプルを引用したが、
入力の検知はデバッガで止めて挙動を調べながら実装したぞ。
それでも1日かからないよ。
672デフォルトの名無しさん:2009/06/16(火) 00:03:15
DirectXのチュートリアルやればこんなところで
くだらないやりとりするよりよっぽど速いよ
673デフォルトの名無しさん:2009/06/16(火) 00:05:15
>>671
まあ理解する必要ないしね、別に趣味グラマーだし
フリーソフトで代用できるかは知らないけど
674デフォルトの名無しさん:2009/06/16(火) 00:27:44
まず、入門書かって一通りできるようになったほうが速いんじゃないか?
3Dいくらか表示できて、音鳴らして、入力できりゃいいんでしょ?
悩んでる時間がばかみたいじゃん
こういうのは金で解決がいいよ
675デフォルトの名無しさん:2009/06/16(火) 00:44:17
サンクス
もう全部できるし別に悩んでない、急いでないだけ
676デフォルトの名無しさん:2009/06/16(火) 00:50:49
にしたって面倒だし
ゲーム以外の部分で躓くのが俺的に無駄な時間に思える

全部誰かのサイトって昔はできたけどいま無理だよ
予想以上に馬鹿で自分の力わかってないようなのが技術サイト作ってたり
なにより情報が古いのが多い
677デフォルトの名無しさん:2009/06/16(火) 00:56:45
>ゲーム以外の部分で躓くのが俺的に無駄な時間に思える

じゃツクールでもやれ

ゲームとはプログラミング技術、アルゴリズム、ハードの知識等の複合する技術のもとになりたってるんだよ
それらを一足飛びにしてゲーム挙動だけ組むのがゲームプログラムだと思ってる時点で
決定的に技術不足は目に見えてるだろ

しかも調べてコピーですらも出来ない、検索先のサイトの悪口言うようじゃねw
678デフォルトの名無しさん:2009/06/16(火) 00:58:04
>>677
いや、俺はDirectX暦10年以上のおっさんです
679デフォルトの名無しさん:2009/06/16(火) 00:59:06
いいぞやれやれ
680デフォルトの名無しさん:2009/06/16(火) 01:00:07
だが、実際にゲームを完成させるのは
その上辺を舐めてる人の方が多いらしい
681デフォルトの名無しさん:2009/06/16(火) 01:05:46
>>676
既存のライブラリとか使えばいいじゃないか。
あえて全部自分で作る理由がないなら問題ない選択肢だぞ。
682デフォルトの名無しさん:2009/06/16(火) 02:51:47
あーだめか
傾きによってスピードとか変えたいからな
勉強するわ
683デフォルトの名無しさん:2009/06/16(火) 03:58:25
やるなら
アクションマップでいいだろ
684デフォルトの名無しさん:2009/06/16(火) 09:04:28
まったくもってDirectXプログラマはすごいぜ
俺もいつかなりたい
685デフォルトの名無しさん:2009/06/16(火) 09:06:53
やっとスティックの0〜1000で表示できたw
死ぬかと思った
686デフォルトの名無しさん:2009/06/16(火) 10:28:46
3D上に線を引きたいのですがどの関数を使えば良いでしょうか?
687デフォルトの名無しさん:2009/06/16(火) 11:18:48
http://www.shader.jp/xoops/html/masafumi/directx9/3dtips/d3d09.htm#3.ソリューションの構成(ソースリスト)
のページのサンプルをダウンロードしてコンパイルしたらatlbase.hが無いと言われ
ググったらVC++2008EEには入ってないらしいのですが、だれか上げて下さいとか言ったらまずいですか?
688デフォルトの名無しさん:2009/06/16(火) 11:26:46
atlはEEには無いからな。
評価版でもダウンロードすれば入ってるんじゃない?
689デフォルトの名無しさん:2009/06/16(火) 11:46:05
Windows Driver Kit をインストールすれば入ってる
インクルードパスとライブラリパスを正しく設定する必要があるが
atlbase.hだけあっても中で呼ばれてるのATL関連のヘッダーがないって言われるだけ

てか、CComPtr使わないでatlbase.hはずしたほうが速そうな気もするが
690デフォルトの名無しさん:2009/06/16(火) 11:50:18
ありがとうございます
評価版のプロフェッショナルをダウンロードしてみます
ダウンロード1時間・・・だと・・・

>>689
外し方を教えてください
691デフォルトの名無しさん:2009/06/16(火) 14:08:01
めんどくさいやつだな

以下の4か所を変更
CComPtr<ID3DXLine> m_pd3dLine;
CComPtr<IDirect3D9> m_pD3D;
CComPtr<IDirect3DDevice9> m_pd3dDevice;
CComPtr<IDirect3DTexture9> m_pTexture;

ID3DXLine *m_pd3dLine;
IDirect3D9 *m_pD3D;
IDirect3DDevice9 *m_pd3dDevice;
IDirect3DTexture9 *m_pTexture;

この時点でエラーが一個でる
m_pD3D.Attach(Direct3DCreate9( D3D_SDK_VERSION ));

m_pD3D=Direct3DCreate9( D3D_SDK_VERSION );

これで実行はできる
ただしCComPtrの自動解放の恩恵が受けれないので
各クラスの解放処理の部分で作ったインタフェースのReleaseをする必要がある
CD3DSetup9::Cleanupで
m_pTexture->Release() ;
m_pd3dDevice->Release() ;
m_pD3D->Release() ;
CDrawLineのデストラクタあたりで
m_pd3dLine->Release() ;
692デフォルトの名無しさん:2009/06/16(火) 15:26:33
DirectXはおろかC++も怪しそうだから
「ググれ、カス」でいいんじゃね?
693デフォルトの名無しさん:2009/06/16(火) 15:42:34
C++の範囲かと言われればそうでもない
694デフォルトの名無しさん:2009/06/16(火) 15:55:02
板状のポリゴンがあって頂点の情報は固定なのです。
サイズとか移動はSetTransformでできるのですが
vとuをその時々で変更するにはどうすればいいの?
695デフォルトの名無しさん:2009/06/16(火) 16:10:56
そのつどロックして値を書き換えるか
アニメーションパターンのように最初から分かっているなら
あらかじめ頂点バッファに全部登録しておいて読み出し位置をずらす
696デフォルトの名無しさん:2009/06/16(火) 16:21:16
ピクセルシェーダーでずらしてしまうという手もあるが
697デフォルトの名無しさん:2009/06/16(火) 16:22:00
SetTransformでUV位置変えられるぞ
698デフォルトの名無しさん:2009/06/16(火) 16:39:24
CCD法のIKを実装してみたんですが
最近のゲームでよく見る、斜面にめり込まない処理ってどうやってやるんでしょうか?
ただ立たせる場合は大丈夫だとして、走りなどのモーションを適応したときの方法がわかりません
699デフォルトの名無しさん:2009/06/16(火) 16:54:48
ttp://msdn.microsoft.com/ja-jp/library/bb206248(VS.85).aspx
ここのでできそうです。

どうもです。
700デフォルトの名無しさん:2009/06/16(火) 17:02:24
>>698
CCD法は知らんが、
アームの先端から、アームの各角度を得る問題だとして、
アームの先端の位置だけから、求めようとしているのか?
正しくはそれでは足りず、アームの先端の位置と角度(姿勢)が必要になるぞ。

>>698だと、
斜面と足の交点と斜面の法線から、足の角度を求める。
701デフォルトの名無しさん:2009/06/16(火) 18:32:08
>>691
ありがとうございました!
702デフォルトの名無しさん:2009/06/16(火) 19:28:25
SetTransformでテクスチャの座標を変更するにはどうしますか?
大きな画像から0,0,32,32を抜き出すみたいな。
703デフォルトの名無しさん:2009/06/16(火) 19:37:15
UV座標をトランスフォームするだけ
704デフォルトの名無しさん:2009/06/16(火) 20:18:49
D3DXCreateTextureFromFileで作ったテクスチャの画像サイズを得るには
どうすれば良いですか?
705デフォルトの名無しさん:2009/06/16(火) 20:26:25
>>702

http://tgws.fromc.jp/prog/toonshade8.1/
環境マッピングを使うのとこ
706デフォルトの名無しさん:2009/06/16(火) 21:51:08
>>704
サーフェイスのサイズを取得するだけ。
707デフォルトの名無しさん:2009/06/16(火) 22:00:08
マルチ視ね
708デフォルトの名無しさん:2009/06/16(火) 22:47:27
x、yの値からθを求めるにはどうすれば良いですか?
709デフォルトの名無しさん:2009/06/16(火) 23:23:17
atan2(y,x)
710デフォルトの名無しさん:2009/06/16(火) 23:25:18
三角関数でぐぐれ
711デフォルトの名無しさん:2009/06/16(火) 23:28:45
マトリックスさてどうしい16こもあるの?
712デフォルトの名無しさん:2009/06/16(火) 23:46:54
アリガトウゴザイマシタ
713デフォルトの名無しさん:2009/06/17(水) 01:51:55
まだ初めたばかりでちょう常識的な事をきいているかもしれないんですが
ウィンドウ内でのマウスポインタの位置座標を表示させるにはどうすればいいのでしょうか?
714デフォルトの名無しさん:2009/06/17(水) 01:56:59
>>713
ググレよ

POINT point;
GetCursorPos(&point);
ScreenToClient(hWnd, &point);
715デフォルトの名無しさん:2009/06/17(水) 02:53:00
すみません
一応調べていたんですが

HWND hWnd;
POINT point;

GetCursorPos(&point);
ScreenToClient(hWnd, &point);
sprintf(str,"マウスのX座標:%03d", point.x);
D3DrawText(0, 0, str);

sprintf(str,"マウスのY座標:%03d", point.y);
D3DrawText(200, 0, str);

ってやったんですが、値がウィンドウのところからの座標が返ってきません。
どこがいけないのでしょうか?
716デフォルトの名無しさん:2009/06/17(水) 03:11:16
>>715
>HWND hWnd;
これをちゃんとした奴とってこないとダメ
717デフォルトの名無しさん:2009/06/17(水) 03:18:53
プログラムのどっかにウィンドウを作成するところがある
そこでウィンドウハンドルを取得してるはずなのでそれをそこにぶち込む必要がある
自分で宣言した奴なんて無効な値しか入ってないから
>>715のプログラムだとScreenToClient関数はどこのウィンドウだかわからないって状態
718デフォルトの名無しさん:2009/06/17(水) 03:49:19
ウィンドウ作成って此処の部分でいいのですか?

// ウィンドウの設定
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC,
D3MsgProc, // コールバック関数の指定
0L, 0L,
GetModuleHandle(NULL), NULL,
LoadCursor(NULL, IDC_ARROW), // カーソルの指定
NULL, NULL,
APP_NAME, NULL };
RegisterClassEx( &wc );

// ウィンドウの作成
HWND hWnd = CreateWindow( APP_NAME, "Checker",
WS_POPUP | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX,
//WS_OVERLAPPEDWINDOW,
100, 100, 640, 480, // ウィンドウの位置と大きさの指定
GetDesktopWindow(), NULL, wc.hInstance, NULL );
719デフォルトの名無しさん:2009/06/17(水) 03:54:45
>>718
それくらいまず自分で試して確認してみたら?
720デフォルトの名無しさん:2009/06/17(水) 06:58:13
スプライトを回転して描画するにはどうするのですか?
721デフォルトの名無しさん:2009/06/17(水) 07:32:34
D3DXSpriteでON SPRITE GOSUBが来てくれません。どうしたらいいですか
722デフォルトの名無しさん:2009/06/17(水) 08:12:30
>>720
DirectXにスプライトなど存在しない

>>721
D3DXSpriteなどDirectXにもD3DXにも存在しない
723デフォルトの名無しさん:2009/06/17(水) 08:35:11
シェーダーを使わず、テクスチャーのカラー値をアルファ値として描画することはできますか?
どのような設定すればよいでしょうか?
724デフォルトの名無しさん:2009/06/17(水) 08:44:25
>>722
もうおもしろくないよそれ
http://msdn.microsoft.com/ja-jp/library/bb174249(VS.85).aspx

一度ウケタギャグを連発する寒い親父みたい
お前もう終わりだな
725デフォルトの名無しさん:2009/06/17(水) 08:53:36
>>723
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);

SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCCOLOR);
にすればいいんじゃね?
ってお前ちっとも頭使ってないだろ
素質ないから諦めるってのもまた1つの方法ではあると思うけど
まわりにいたらぶっとばしたくなるなw
726デフォルトの名無しさん:2009/06/17(水) 08:59:31
>>724
それ言ってるの多分何人もいるぞ
もちろん俺も言ってたw
727デフォルトの名無しさん:2009/06/17(水) 09:00:33
>>726
そういう姿のプログラマが女の子にもてると思うのか?
728デフォルトの名無しさん:2009/06/17(水) 09:01:59
>>722
いい加減しつこい。
自分じゃ気づいてないだけで相当嫌われ者だろ。
729デフォルトの名無しさん:2009/06/17(水) 09:05:50
>>726
他の人もやってるからっていいわけがPGとしての素質の無さを匂わせるな
730デフォルトの名無しさん:2009/06/17(水) 09:08:13
>>725
それじゃ駄目だ。
多分出来ないと思う。
逆ならいけるんだけどな。
731デフォルトの名無しさん:2009/06/17(水) 09:09:59
>>730
なるほど
0〜1.0
255〜0
に変換しないとダメってことか
732デフォルトの名無しさん:2009/06/17(水) 09:21:32
いや、内積(D3DTOP_DOTPRODUCT3)を使えば出来そうかな?
ま、後は自分で考えてくれ。
733デフォルトの名無しさん:2009/06/17(水) 09:23:48
>>727-729
お前らみたいにすぐ食いつくから面白がられるんだよバカ共
734デフォルトの名無しさん:2009/06/17(水) 09:25:25
>>732
は?
735デフォルトの名無しさん:2009/06/17(水) 09:37:06
>>734
HLSLでいうところの、以下の処理が出来ればいい。

float4 srcColor, dstColor;
float4 mask = { 0, 1, 0, 0 };
dstColor.a = dot( srcColor, mask );

maskはtexfactorあたりを使えば、固定シェーダでも出来そうと思った。
しかし、マニュアルをみると、
D3DTOP_DOTPRODUCT3はいろいろ制限があって
普通に内積はしてくれないみたいだな。やっぱ駄目かな?
736デフォルトの名無しさん:2009/06/17(水) 09:40:24
>>733
じゃぁ黙ってアク禁の申請すればいい、と。
737デフォルトの名無しさん:2009/06/17(水) 10:48:07
>>732,734
D3DTOP_DOTPRODUCT3でカラーからαの変換はできるよ。
ただ、これはALPHAOPだけに設定しても使えなくて、同時に同じステージの
COLOROPにも設定しないと使えないので、ちょっと使いにくい。
内積を取る相手には、TFACTORを利用する。
738デフォルトの名無しさん:2009/06/17(水) 11:52:51
>>725は人として恥ずかしくないの?
739デフォルトの名無しさん:2009/06/17(水) 11:56:25
>>737
ありがとうございました、確かに使い方は限定されるようですが何とかできそうです
>>725さんもありがとうございました
740デフォルトの名無しさん:2009/06/17(水) 11:58:58
>>735
はじめに言ってることと全然違いすぎて意味がわからない
そもそも内積なんてとってもなにもおきないだろ
法線マップが使いたかっただけなの?
α関係ねーしマジで何が言いたいのか不明
741デフォルトの名無しさん:2009/06/17(水) 12:01:46
float4 mask = { 0, 1, 0, 0 };
dstColor.a = dot( srcColor, mask );

これ普通にgがほしいだけちゃうの?
742デフォルトの名無しさん:2009/06/17(水) 12:02:56
もうわらうしかないww
743デフォルトの名無しさん:2009/06/17(水) 12:06:10
俺も意味不明
SetTextureStageState
使ったらいいと思うけど
744デフォルトの名無しさん:2009/06/17(水) 12:13:36
そもそもそこまできたらα値にわざわざ値いれてもしょうがないと思うんだ
rだろうがgだろうがbだろうがどっかに値さえあれば計算使えるんだから
今更a要素にいれたって誰も計算してくれないぞ
745デフォルトの名無しさん:2009/06/17(水) 12:19:39
固定シェーダを使ってる奴はやっぱり糞
746デフォルトの名無しさん:2009/06/17(水) 12:24:03
簡単なゲームをサクッと作る時はまだ固定機能使う時もあるだろうけど
固定機能で無茶しようとするからこういうことになるんでね
747デフォルトの名無しさん:2009/06/17(水) 12:45:49
シェーダー使えば楽なのがわかってるのに
なぜ固定機能にこだわるんだろう
基本機能だけなら初心者には取っ付きにくいってほど難しくないだろう
一部の最新VGAでなければ動かなかった時代ならまだ解るけどさ
748デフォルトの名無しさん:2009/06/17(水) 12:51:37
シェーダーが使えないVGAの対応を未だにやってるからだろう
749デフォルトの名無しさん:2009/06/17(水) 12:54:28
>>748
VS1.1サポートしてないボードってなくね?
750デフォルトの名無しさん:2009/06/17(水) 13:00:09
いまどきミニノートのオンボードチップでもシェーダーは動く
751デフォルトの名無しさん:2009/06/17(水) 13:03:53
Geforce2とかRadeon7000番台?
752デフォルトの名無しさん:2009/06/17(水) 13:04:27
float4 srcColor, dstColor;
float4 mask = { 0, 1, 0, 0 };
dstColor.a = dot( srcColor, mask );

これ、カラーキーやりたいならはじめ(ロード時)にα画像を作っちゃったほうがよくね?
753デフォルトの名無しさん:2009/06/17(水) 13:05:39
>>751
動いちゃうよたしか
HARDWAREなんとかダメでもSOFTWAREなんとかなら動いちゃう
754デフォルトの名無しさん:2009/06/17(水) 13:07:04
とするとi815とかその辺り?
755デフォルトの名無しさん:2009/06/17(水) 13:12:32
10年近く前のPCに対応するために苦労する初心者っているんですか?
756デフォルトの名無しさん:2009/06/17(水) 13:15:47
まず、シェーダ=難しいっていう意識をなくさないとダメだな
固定シェーダ理解できる脳みそあればシェーダなんて余裕でしょ
屁みたいなもんだよ
757デフォルトの名無しさん:2009/06/17(水) 13:17:24
いやシェーダー難しいって言う人はいないんじゃないか?
最初からシェーダーあったのでむしろ無いのは拷問だが
758デフォルトの名無しさん:2009/06/17(水) 13:18:20
固定シェーダなど存在しない
759デフォルトの名無しさん:2009/06/17(水) 13:19:17
>>758
それだw
今度からそれでいこうw
760デフォルトの名無しさん:2009/06/17(水) 13:24:57
>>758
○○など存在しない系のレスは見るとムカムカするが
これはなごんだわw
761デフォルトの名無しさん:2009/06/17(水) 13:26:23
762デフォルトの名無しさん:2009/06/17(水) 13:33:45
>>761
しょっぱなヒットするサイトの用語と計算式まちがってねぇ?
α値を使ってやる計算はすべてαブレンドだろ?
普通の奴は加重平均っていうんだぞ
763デフォルトの名無しさん:2009/06/17(水) 15:05:26
>>740-743
固定シェーダでは、RGBをAに入れる直接的な方法が
用意されていない為。
764デフォルトの名無しさん:2009/06/17(水) 15:56:08
>>763
必要ないからじゃない?
765698:2009/06/17(水) 16:00:44
>>700
返信ありがとう
多分、そこらへんはクリアしているんだけど
階段とかを上るときに、めり込まない様にする方法がわからないんですよね
静止時には下半身のアニメーションはつけていないので
足と階段の接点からめり込まない様に膝を曲げるってな所まではできたんですが
それをもともとある階段を上るアニメーションに適用していいのかがわからないんです
766デフォルトの名無しさん:2009/06/17(水) 16:31:15
めり込まないようにひざを曲げる所まで出来てるなら
アニメーション後の2つの脚の位置から下方向に調べて
それぞれめり込まないようにひざを曲げれば出来そうな気もするけど
767デフォルトの名無しさん:2009/06/17(水) 16:41:47
というかなんで試してからこないんだ?
どうせプログラムなんだからいろいろ弄って見ればいいのに
768デフォルトの名無しさん:2009/06/17(水) 17:18:04
アニメーション適用 -> 衝突判定 -> IK適用
で何か問題あるか?

IK適用とはめりこまないようにやるんだろ。
元がアニメーション適用前でも後でも、関係ない話じゃん。
769デフォルトの名無しさん:2009/06/17(水) 18:26:14
D3DXMatrixScaling
D3DXMatrixRotationX Y Z
D3DXMatrixTranslation

この中身は何をしてるの?
770デフォルトの名無しさん:2009/06/17(水) 18:28:34
行列の変換で上から大きさの変換、回転の変換、位置の変換をしてる
行列ってのはグラフなんかの傾きをコントロール出来たりと凄い便利な物
まあ詳しくは数Cの本で

771デフォルトの名無しさん:2009/06/17(水) 18:30:42
ホントだ
ヘルプからいつのまにかに式が消えてんぞw
消すなよなw
772デフォルトの名無しさん:2009/06/17(水) 18:33:34
おい、仕事しろよ>MS
773デフォルトの名無しさん:2009/06/17(水) 18:54:10
スプライトの回転はsetmatrixで回転行列を適用するの?
774デフォルトの名無しさん:2009/06/17(水) 19:08:06
D3DXSPRITE_OBJECTSPACEでワールド座標?になるっぽい
けどスクリーン座標上でまわしたいの?
775デフォルトの名無しさん:2009/06/17(水) 19:13:46
スプライト?
つまり画面に表示されてる画像や文字を回転させて表示したいと?
776デフォルトの名無しさん:2009/06/17(水) 19:24:33
そうです
777デフォルトの名無しさん:2009/06/17(水) 19:33:07
スプライトというのがポリゴンを利用したテクスチャ描画のことを言っているのなら、
各頂点を中心点から等距離に移動させれば回転できる。
778デフォルトの名無しさん:2009/06/17(水) 19:39:40
DirectXにスプライトなど無い。
779デフォルトの名無しさん:2009/06/17(水) 19:48:17
DirectXにスプライトなどない
780デフォルトの名無しさん:2009/06/17(水) 19:52:53
DirectX doesn't own sprite.
781デフォルトの名無しさん:2009/06/17(水) 19:56:43
char n[10] ="うんこ";
pFont->DrawText
で文字化けします。半角英数字だと文字化けしません。どうしてですか?
782デフォルトの名無しさん:2009/06/17(水) 20:02:18
>>773
LPD3DXSPRITEのSetTransformにD3DXMatrixRotationYawPitchRollで回した
D3DXMATRIXのポインタを入れたりして回転させられるけど
この方法は間違ってる気がする
そもそもx,y軸で回せないし・・・
783デフォルトの名無しさん:2009/06/17(水) 20:07:25
>>782
3D座標上でやってるの?
スクリーン座標上でやってるの?
答え変わると思うんだけど?
>>774はおk?
784デフォルトの名無しさん:2009/06/17(水) 20:16:14
言わばスーパーで売ってる惣菜みたいなものだからな。
誰でも利用できるけど価格は高めだし、ほぼそのまま利用するしかない。
やっぱ材料があれば売っているような惣菜だけでなく自分で思い通りの物が作れるようにならないとな。
まぁ、スプライトはせいぜいゆで卵か。
>>774はゆで卵を使って卵かけ悟飯を作ろうとしている状態。
785デフォルトの名無しさん:2009/06/17(水) 20:20:16
DirectXにゆで卵などない
786デフォルトの名無しさん:2009/06/17(水) 20:30:42
rotationzで回転させれた
けどなぜか0,0,0の位置を中心に回ってる
位置はtranslationで指定しないとだめなのか?
787デフォルトの名無しさん:2009/06/17(水) 20:34:58
>>786
3D座標で回してるのかスクリーン座標で回してるのかはっきりしろよw
788デフォルトの名無しさん:2009/06/17(水) 20:36:41
線形代数を勉強しよう。
指定した位置で回そうにも、
rotationzはその位置を知らないでしょ。
789デフォルトの名無しさん:2009/06/17(水) 20:40:34
知ろうが知るまいがスプライトの中で保持してる行列とかけるだけだろ
790デフォルトの名無しさん:2009/06/17(水) 20:42:53
その点ってそういえばどうやって示すんだろ?
Xファイルを表示したときはSetTransformで位置変えて回せるけど
そんな事しなくても回す点は指定できるの?
おしえてエロいひと
791デフォルトの名無しさん:2009/06/17(水) 20:44:06
自演乙
792773:2009/06/17(水) 20:46:16
やったー
できた!
思いのままクルクル回ってる!
793デフォルトの名無しさん:2009/06/17(水) 20:53:40
g_pdevice->SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT3 | D3DTTFF_PROJECTED);

D3DXMATRIX tmscl;
::D3DXMatrixIdentity(&tmscl);
::D3DXMatrixScaling(&tmscl, 0.5f, 0.5f, 1.0f);

g_pdevice->SetTransform(D3DTS_TEXTURE0, &tmscl);

こで画像の左上1/4を切り取って表示されるのですが

D3DXMATRIX tmmov;
::D3DXMatrixIdentity(&tmmov);
::D3DXMatrixTranslation(&tmmov, 0.5f, 0.0f, 0.0f);

g_pdevice->SetTransform(D3DTS_TEXTURE0, &tmmovl);

これは何の変化がありません
どうすれば位置をずらせますか?


794781:2009/06/17(水) 21:00:42
お願いします
全角フォントの文字化けの問題で詰まってます
795デフォルトの名無しさん:2009/06/17(水) 21:04:47
>>790
回転行列ってのは、原点(0)を中心に
ベクトルを回すもの。

位置を変えて回すには、
3つのプロセスが必要。

@その位置まで移動する
A回転する
B元の位置まで戻る

行列は乗算で連結できるので、

位置を指定して回す行列 = @の行列 x Aの行列 x Bの行列

んでこれをSetTransformに渡したりして使う。
796デフォルトの名無しさん:2009/06/17(水) 21:17:20
>>793
D3DTTFF_COUNT3 | D3DTTFF_PROJECTED
は、テクスチャ座標をトランスフォームした後、
[x,y,z]の三次元だけ取り出し、[x/z,y/z]として
二次元で取り扱うという意味。
トランスフォーム用の行列も3x3で
作らないと駄目。

tmmov =
[1,0,0,0]
[0,1,0,0]
[x,y,1,0]
[0,0,0,0]
797デフォルトの名無しさん:2009/06/17(水) 21:20:38
>>781
char文字列とは、ASCII用
日本語には使えません。
tcharかwcharを使え。
798797:2009/06/17(水) 21:36:34
これ間違いだわ。
ノーカンで。
799デフォルトの名無しさん:2009/06/17(水) 21:40:58
sprintfでデータを入れてpFont->DrawTextではどうよ?
やっぱりそれはおかしい?
800デフォルトの名無しさん:2009/06/17(水) 21:41:18
文字列描画してるサンプルぐらい落ちてるだろ
自分で動くサンプルみつけて該当箇所コピーして考えろと言いたい
それでもできなかったら聞きにこいよ
801デフォルトの名無しさん:2009/06/17(水) 21:51:41
ロケーションだろjk
それ位jkだろ
802デフォルトの名無しさん:2009/06/17(水) 22:05:24
>>781
GetGlyphOutlineでフォントイメージを取得して、それをテクスチャに転送するだけ。
803デフォルトの名無しさん:2009/06/17(水) 22:30:41
>>796
できたです。
804デフォルトの名無しさん:2009/06/17(水) 22:37:40
スケールの数字も入れたら掛け算とかいらないのねー
805デフォルトの名無しさん:2009/06/17(水) 22:55:17
>>802
使う文字が決まってるならいいけど
やってみたら1文字60fpsでcpu15%行った
806デフォルトの名無しさん:2009/06/17(水) 23:02:03
>>805
まさかとは思うが1FPSごとにテクスチャを書き直すなんて、
頭の悪いを通り越したような愚行は犯してないよな?
807デフォルトの名無しさん:2009/06/17(水) 23:02:58
1FPSじゃなくて1フレームごとだ
808デフォルトの名無しさん:2009/06/18(木) 15:49:50
たとえ猛吹雪の中でも定時に配達できるのはこの車両のヤマトだけ。
http://image.blog.livedoor.jp/blv42/imgs/9/a/9aeb21f9.jpg

離島だって見捨てないぜ!!
http://image.blog.livedoor.jp/blv42/imgs/d/6/d61c42d7.jpg
809デフォルトの名無しさん:2009/06/18(木) 18:34:05
4頂点がいっぱいでDrawPrimitiveUpと
SetTransformはどっちが速いの?
810デフォルトの名無しさん:2009/06/18(木) 18:46:05
試せばわかることを何できくの?馬鹿なの?死ぬの?
それぞれ1万回くらい描画して処理時間計ってこい
811デフォルトの名無しさん:2009/06/18(木) 21:44:49
だってどうせ環境によって違うし
インターネットって暇で親切で自己顕示欲の塊みたいな人が実験結果をアピールしてるじゃん
812デフォルトの名無しさん:2009/06/18(木) 21:47:38
俺はゲームが作りたいんだ。自分でつまんない実験で時間つぶしたくない。
そういうのはゲームエンジンを作るのだけが目的の人がやってるだろうから
結果だけ教えてくれ
813デフォルトの名無しさん:2009/06/18(木) 21:52:03
まずだなあ
自分で試す事が出来ない人間にエンジンなんて無理に決まってるだろ

あれだ、韓国だかが背伸びしていろいろやろうとして失敗するのと同じだ
814デフォルトの名無しさん:2009/06/18(木) 21:55:29
よーし翻訳しちゃうよ

「わからない。」
815デフォルトの名無しさん:2009/06/18(木) 22:32:05
fpsを一定にするには一周にかかった時間を求めて
一周が一定になるようにSleep使って止めればいいんだよな?

void Wait(){
static float time=0;
float term,FPS=0.0f;
term = timeGetTime()-time;
if(16.6f-term>0)Sleep(16.6f-term);
time=timeGetTime();
}
ってやるのは間違いか?
816デフォルトの名無しさん:2009/06/18(木) 22:34:17
>>815
一般的に約1秒間の間に何フレーム描画したかを数えて1秒間隔で表示したほうが見やすい。
817デフォルトの名無しさん:2009/06/18(木) 22:37:08
ということは1秒で60フレーム
一フレーム当たり0.166666になるようにすればいいのか?
818デフォルトの名無しさん:2009/06/18(木) 22:46:20
fpsの変動を許す設計にした方が良い。
819デフォルトの名無しさん:2009/06/18(木) 22:47:34
「fpsを一定にするには」って聞いているのに
お前らって、、
820デフォルトの名無しさん:2009/06/18(木) 22:55:09
そんなんVSyncに依存して素直に描画する以外に方法ないよ。
∴ゲーム内部の更新が秒間60回固定なら、前回フレームと今回フレームを
VSyncの端数の比率で補間した位置に描画する、が理論上の正しい答え。
821デフォルトの名無しさん:2009/06/18(木) 22:56:26
>>819
そのやり方がアホだから、変動おkにしろと。
822デフォルトの名無しさん:2009/06/18(木) 22:59:57
ほんま、ここ初心者なんやな
823デフォルトの名無しさん:2009/06/18(木) 23:01:54
可変フレームレートを許すなんて、xna厨ぐらいしか言わないと
つい最近まで思い込んでたのだけど、今はその方が普通なのか?

何がきっかけで、そうするようになった?
(俺は偶々xna関連ブログから検討するようになった)
824デフォルトの名無しさん:2009/06/18(木) 23:04:23
>>821
描画用ルーチンとゲームメインルーチンがあったとして
描画用ルーチンは変動してもいいけど、
メインルーチンは変動しちゃ駄目だろ。
つまり、FPSを安定させる方法も必要。
825デフォルトの名無しさん:2009/06/18(木) 23:19:12
固定にしようにもマルチタスク環境ではどうにもならない。
826デフォルトの名無しさん:2009/06/18(木) 23:20:41
>>825
何をいっとるんだ。
827デフォルトの名無しさん:2009/06/18(木) 23:22:11
んで結局>>815はだめなの?
というのも
void Fps(){
static int time=0,ave=0,f[60];
f[count%60]=timeGetTime()-time;
time=timeGetTime();
if(count%60==59){
ave=0;
for(int i=0;i<60;i++)
ave+=f[i];
ave/=60;
}
if(ave!=0)FPS=ave;
return;
}
というのをやったらFPSの値はなんでか16.0で安定してるんだよ
安定するのはいいんだけどなんで60にならないんだろう?
828デフォルトの名無しさん:2009/06/18(木) 23:28:53
平均値の求め方がバカなだけです。
算数をやりなおしましょう。

829デフォルトの名無しさん:2009/06/18(木) 23:36:33
16msecで
望んでる結果じゃねえか
830デフォルトの名無しさん:2009/06/19(金) 00:08:15
ふれーむ ぱー せかんど ってのは もじどおり

ふれーむ ÷ びょう

って意味だよ

びょう ÷ ふれーむ じゃないよ
831デフォルトの名無しさん:2009/06/19(金) 00:12:09
832デフォルトの名無しさん:2009/06/19(金) 00:14:36
>>823
物理エンジンとかが容易に使えるようになったからかな・・・
アレも変動した時間間隔を渡すし
833デフォルトの名無しさん:2009/06/19(金) 00:15:44
エルフェンリートは漫画とアニメのギャップに驚いた
834デフォルトの名無しさん:2009/06/19(金) 00:19:28
↑スレ違いのグロ画像

http://game.watch.impress.co.jp/img/gmw/docs/168/708/html/gow15.jpg.html
こういうのならいいと思うけど
835デフォルトの名無しさん:2009/06/19(金) 00:22:05
DEADSPACEとかのってやっぱりバラバラ死体を作ってから
それをくっつけて形にしてるのかなあ?
836デフォルトの名無しさん:2009/06/19(金) 00:25:54
普通にモデルをすり替えてるよ
ソースはQuake3

…GTA4とかの変形した車とかは、頂点シェーダとか使ってるのだろうか?
837デフォルトの名無しさん:2009/06/19(金) 06:54:46
線を表示したんだけどカメラを動かしたら線も一緒に動きます
どうしたら線を動かなくできますか?
838デフォルトの名無しさん:2009/06/19(金) 07:09:24
フラフラすんな!
839デフォルトの名無しさん:2009/06/19(金) 07:26:09
線用のカメラを用意しろ
840デフォルトの名無しさん:2009/06/19(金) 08:29:52
>>831

断面ショー
841デフォルトの名無しさん:2009/06/19(金) 17:18:45
#ifndef _3DMODEL_H
#define _3DMODEL_H
#include <Windows.h>
#include <mmsystem.h>
#pragma comment(lib,"d3d9.lib")
#include <d3d9.h>
#pragma comment(lib,"d3dx9.lib")
#include <d3dx9.h>
#define MAX_MODEL 20

struct MODEL
{
LPD3DXMESH p_mesh;
D3DMATERIAL9* p_materials;
LPDIRECT3DTEXTURE9* p_textures;
DWORD nummaterials;
BOOL used;
};
//以下クラス宣言など

このヘッダをinclude すると
3DDevice.cpp
\3dmodel.h(20) : error C2236: 予期しない 'struct' 'MODEL' です。';' が入力されていることを確認してください。
\3dmodel.h(20) : error C2143: 構文エラー : ';' が '{' の前にありません。
\3dmodel.h(20) : error C2447: '{' : 対応する関数ヘッダーがありません (旧形式の仮引数リスト?)
とエラーが出ます。
構造体定義が間違っているのでしょうか?
842デフォルトの名無しさん:2009/06/19(金) 17:57:56
糞チョン、マジむかつくけどぉ〜
スロやパチンコは別だからぁ〜 /
 ̄ ̄ ̄ ̄ ̄ ̄// ̄ ̄ ̄ ̄ ̄ ̄
     _
    /三ー\ __________________
  /ノ:::三(@)\___皿_____||
. |:::::(@):::::::⌒)\::+:+::::\. ||
. |::::::::::(__ノェェイ::::::|:###::::*:: ||
  \::::::\`ェェェノ:::::/::444::U::: ||
    \ ∪::::::::::_ノ*::::u::::*::: ..||
   / ̄     \\:::ー:::/::||
  / フ     /ヽ ヽ=======◎
     ↑
    パチンカス

843デフォルトの名無しさん:2009/06/19(金) 17:59:12
>>841
たぶんだけど
そのヘッダーの一個前にインクルードしてるヘッダーにエラーがある
844841:2009/06/19(金) 18:53:57
ありがとうございました。
別のヘッダのクラスに;付け忘れてました
845デフォルトの名無しさん:2009/06/19(金) 18:57:29
1フレーム間隔固定する話か
どうせよほどのキチガイゲーマーでなきゃ10msくらいかわっても気づかんよ
秒間60フレーム描画したいなら1フレームあたりの処理と描画とウエイトタイムの合計が
16msくらいになるようにすればいいだけだろ
音ゲーでもない限りカリカリするような話題じゃないとおもうんだが
まるで生きがいであるかのようにこだわる奴がいるよな

むしろP2Pネットワーク対戦とか実装するなら
ある程度変動を許容するファジーな仕様にしといたほうがいいと思うけどなー
まー人それぞれだわな
846デフォルトの名無しさん:2009/06/19(金) 19:25:47
そうやってPCスペックで難易度の変わるゲームが出来上がるんですね
某MOゲームの高スペックマシンにのみ起きる多段ヒット即死みたいな
847デフォルトの名無しさん:2009/06/19(金) 19:58:41
IDirectSoundBuffer8::Play + DSBPLAY_LOOPING で音をループ再生しているんですが、
ループ回数を指定したい場合どのようにすればいいですか?
ループの瞬間にコールバックしてくれるとか、そのままズバリループ回数が指定できるとか、
そういうのがあればいいんですが...。

毎回 IDirectSoundBuffer8::GetCurrentPosition やって、直前のポジションよりも小さな値が入ってきたら
ループ回数をインクリメント、規定回数になったらループフラグをはずすとか..
でも再生中にループフラグ変えることできませんよね
848デフォルトの名無しさん:2009/06/19(金) 20:11:07
// 次に更新するまでの残り時間を返す. 更新すべきタイミングなら 0 を返す
int My_FPSWait(void) {
 int now = My_clock(); // 現在時刻(msec)
 int next = g_start + 1000 * g_frame / FPS;
 if (now < next) return (next - now); // 待機中
 if (g_frame < FPS - 1) {
  //フレーム数が指定 FPS-1 に達していない
  if (now < g_start + 1000 * (g_frame + 1) / FPS) {
   //1フレーム時間以上の遅延がなければ、そのままフレーム番号をインクリメントする
   ++g_frame;
  } else {
   //1フレーム以上の遅延があった場合は、リセットして最初から計測しなおす
   g_start=now; g_frame=0;
  }
 } else {
  //フレーム数が、指定 FPS-1 だった
  if (now < g_start + 1000) {
   //スタート時間からまだ1秒経過していない場合は、スタート時刻を1秒ずらした値を新しいスタート時刻にする
   g_start += 1000;
  } else {
   //スタート時間から既に1秒が経過しているならスタート時刻を現在時刻でリセットする
   g_start = now;
  }
  g_frame = 0;
 }
 return 0; // 待機終了
}
849デフォルトの名無しさん:2009/06/19(金) 20:45:33
スプライトはテクスチャーに書けないですか?
850デフォルトの名無しさん:2009/06/19(金) 20:53:27
凸凹なポリゴンの高さを得たいんですけどどうすればいいんでしょう?
851デフォルトの名無しさん:2009/06/19(金) 20:53:51
DirectXにスプライトなど存在しない
852デフォルトの名無しさん:2009/06/19(金) 20:54:39
>>850
Zの差でも出せば?
853デフォルトの名無しさん:2009/06/19(金) 20:56:28
つ CreateTexture+D3DUSAGE_RENDERTARGEEEEEEEEEET
854デフォルトの名無しさん:2009/06/19(金) 21:25:38
SetRenderTargetしてもバックバッファに描かれるんだけど
855デフォルトの名無しさん:2009/06/19(金) 21:34:50
戻り値は確認したのか?
856デフォルトの名無しさん:2009/06/19(金) 21:39:44
Begin〜Endの中だったり
857デフォルトの名無しさん:2009/06/19(金) 23:19:44
D3DXSprite::Drawはその場で
858デフォルトの名無しさん:2009/06/19(金) 23:39:21
>>850
参考に
ttp://marupeke296.com/COL_3D_No8_HightOfFloor.html
ただまあポリゴンの法線がわからないと使えないけども
859デフォルトの名無しさん:2009/06/19(金) 23:45:10
>>850
初心者にはD3DXIntersectの存在を教えるだけでOKでしょ
860デフォルトの名無しさん:2009/06/19(金) 23:59:56
DirectXにD3DXは存在する
861デフォルトの名無しさん:2009/06/20(土) 00:27:55
じゃあ「D3DXのSpriteについて教えてください」といわれたら
嫌がらせるためにはどう答える?
862デフォルトの名無しさん:2009/06/20(土) 00:47:33
ググレカス
863デフォルトの名無しさん:2009/06/20(土) 00:57:45
初心者はそんなもの使わないで
自前で描いたほうが勉強になるよ、と言う
864デフォルトの名無しさん:2009/06/20(土) 01:07:43
>>863
厨房が勝ち誇ったように言ってると思われて
第三者に諭されるだけだぞ
865デフォルトの名無しさん:2009/06/20(土) 01:31:34
いま、メインスレッドで Now Liading アニメを描画し、もうひとつのスレッドでひたすら
テクスチャ生成というのをやっているのですが、WinXPではうまく動くのに
Win7だとメインスレッドが止まったまま、裏スレッドが動き続けてしまいます。
(エラーはいっさい発生せず、メインスレッドがどこかで無限ループに陥ってる?)

で、はっと気づいて BeginScene から EndScene までと、テクスチャの生成関数、
テクスチャ Lock から Unlock までをクリティカルセクションに指定しました。

すると今度は Win7 で正しく動くのに、WinXpでは動かなくなりました。
ためしにクリティカルセクションを向こうにしてみると、 Win7では動かず、WinXPでは
正しく動きます。

いったいどういうことなのでしょう??


866デフォルトの名無しさん:2009/06/20(土) 01:34:59
CreateDeviceにD3DCREATE_MULTITHREADEDつけてるか?
867デフォルトの名無しさん:2009/06/20(土) 01:56:34
>>865
まずはちゃんとマルチスレッドのデザインパターンを勉強しような。
868デフォルトの名無しさん:2009/06/20(土) 02:04:12
スキンメッシュの読み込みが初心者には難易度が高いので
このコードを使おうと思っています。
ttp://www5f.biglobe.ne.jp/~kenmo/program/skinmesh/skinmesh.html

CAllocateHierarchy hierarchy;
で宣言すると抽象クラスをインスタンス化できないとコンパイルエラーが出てしまいます。

CreateFrame
CreateMeshContainer
DestroyFrame
DestroyMeshContainer
の4つがオーバーライドされているので問題ないと思うのですが、何か根本的な間違いをしているでしょうか?
変更した所といえば、コンパイルが通らないので 下記のように"__stdcall"を追加したくらいです。

HRESULT __stdcall CAllocateHierarchy::DestroyFrame(LPD3DXFRAME pFrameToFree)

3日考えてもわかりませんでした。
よろしくお願いします。


869デフォルトの名無しさん:2009/06/20(土) 02:05:22
ありがとう! 自分でクリティカルセクション設定しなくていいんですね
その方法で解決しました > 866

なんか WinVista からマルチスレッド関連が仕様変更になったらしいですね
870デフォルトの名無しさん:2009/06/20(土) 02:17:52
>>869
マルチスレッドにしてる限り自分で何も考えなくていいわけじゃないぞ・・・。
ある日マルチコア環境で不具合発生とかで泣くなよ。
871デフォルトの名無しさん:2009/06/20(土) 02:20:03
>>868
考えたくもねー。ID3DXAnimationControllerのクソ仕様に無駄に苦悩させられるだけだから
自分で作ったほうが早いわ。
872デフォルトの名無しさん:2009/06/20(土) 02:28:22
>>858
>ただ、SDKのバージョンは9.0bなので、9.0cだと、
>CreateMeshContainerの引数や、アニメーションコントローラのメソッドが変わっていたります。

って書いてあるじゃん
たぶん何か足りないか関数名が変わってるとかしてるんじゃない?
873デフォルトの名無しさん:2009/06/20(土) 10:21:56
>>361
ID3DXSpriteと書けば何の問題も発生しない
874デフォルトの名無しさん:2009/06/20(土) 11:21:43
3と8を間違える男の人って・・・
875デフォルトの名無しさん:2009/06/20(土) 11:38:15
>>871
おめー厨二だろ
876デフォルトの名無しさん:2009/06/20(土) 14:24:21
スキンメッシュの話を仲間内でしてた時、
「(足を上げたときに)お尻が丸い」と巧く変形した事を褒めたら
会話の流れを知らない第三者にセクハラだと思われた事があったんだよな

児ポ法の規制が通ったら、
・サンプルの特徴の無いキャラは子供っぽく見える
・スキンメッシュの話の為にM字開脚した時の破綻画像をネットにあげる
・第三者ババァがロリサイトだと言い張る
・捕まる\(^o^)/
って事になるんじゃね?
877デフォルトの名無しさん:2009/06/20(土) 15:06:06
言い方を変えればOK
臀部が球状だねとかなんとか
878デフォルトの名無しさん:2009/06/20(土) 15:13:47
こちらの想像の斜め上を行く発想が来ることを言ってるので…

破綻画像を他人に見せる時は、破綻を解決する方に無い知恵絞ってる最中だろ?
そんな時に、言い方とか、キャラにテクスチャ貼って30過ぎのオッサンである事を一々伝えるか?
879デフォルトの名無しさん:2009/06/20(土) 15:30:41
2次オタが、足の動きに合わせて臀部が球状になるのを見て
性的興奮をするのは想定の範囲内です
880デフォルトの名無しさん:2009/06/20(土) 15:42:12
っていうか、どうせ変態だろうし
あらかじめ捕まっとけよ
881デフォルトの名無しさん:2009/06/20(土) 16:01:30
男は全員変態だから問題ない
882デフォルトの名無しさん:2009/06/20(土) 16:32:25
3次元の変体より2次元の変体のほうがむしろ危険度は低いのでは?
883デフォルトの名無しさん:2009/06/20(土) 16:32:27
>>873

D3DXはDirectXではない
884デフォルトの名無しさん:2009/06/20(土) 16:34:25
地形のデータによく何か内側に絵が描かれてる箱みたいな奴がありますが、あれは何というのですか?どういう意味があるのですか?
885デフォルトの名無しさん:2009/06/20(土) 16:47:28
その説明だとスカイボックスの事を言ってるようにしか見えない

多分それは決められた座標に常にあって、
一度箱の中心にカメラ位置を設定して描画してから
プレーヤー視点にカメラ位置を戻して描画すると
箱の画像が背景になる。

ゲームの内部データを無断で見てしまうなら、Pixとか使ってしまっても
良いと思う
886デフォルトの名無しさん:2009/06/20(土) 16:50:25
スカイボックスのこと?
空とか地平線などの遠景のテクスチャを
でかい球やボックスの内側に貼り付けて
その内側にシーンをレンダリングすることで自然な背景を演出するためのもの
887デフォルトの名無しさん:2009/06/20(土) 17:02:37
ありがとうございました
888デフォルトの名無しさん:2009/06/20(土) 17:26:29
エラーメッセージの有無によって動作を変更するプログラムを作っているんですが、
CやC++でコンパイルエラーが1行になることはあるのでしょうか?
教えてください
889デフォルトの名無しさん:2009/06/20(土) 17:37:19
コンパイルエラーはまったく関係ないだろそれ
890デフォルトの名無しさん:2009/06/20(土) 17:53:33
質問の仕方の悪いやつが多いなぁ
頭の弱い子なのかと思ってしまう
891デフォルトの名無しさん:2009/06/20(土) 18:17:35
847もわすれないでください...
892デフォルトの名無しさん:2009/06/20(土) 18:25:50
Xaudio2使え
893デフォルトの名無しさん:2009/06/20(土) 18:34:45
>>847
難しいこと考えないでDSBPLAY_DEFAULTでならして
GetStatusで再生が終了したら指定回数終了するまでもう一度鳴らすって
別スレッドを作ればいいだけの話では?
894デフォルトの名無しさん:2009/06/20(土) 18:47:57
BGMも効果音もXaudio2使うのが正解?
895デフォルトの名無しさん:2009/06/20(土) 19:02:39
>>894
DirectSoundより圧倒的に楽だからな。
ループを含めたBGM・音の再生ルーチンを用意するのに200行もかからない。
効果音のオンメモリによるゼロレイテンシの再生はまだ必要ないので実装してないが。
今からやるならXAudio2だけで十分。XPでも普通に動くし。
896デフォルトの名無しさん:2009/06/20(土) 19:04:36
ありがとうございます
サウンド部分はまったく手をつけてなくて便乗して質問させていただいたのですが、
Xaudio2から始めてみます
897デフォルトの名無しさん:2009/06/20(土) 19:54:58
>>872
ありがとうございます。
どうやらCreateMeshContainerの引数に問題がありそうです。

http://msdn.microsoft.com/ja-jp/library/cc372724.aspx
http://msdn.microsoft.com/ja-jp/library/bb205621(VS.85).aspx

またしばらく悩んでみようと思います。
898デフォルトの名無しさん:2009/06/20(土) 20:13:13
でも初心者にはDXライブラリは知ってもXAudio2なんて知らない
いつの時代でもDirectSoundから始めて詰まる事に変わりはしないし
このスレもずっと荒れつづける
899デフォルトの名無しさん:2009/06/20(土) 22:52:59
スキンメッシュからシェーダー外すのも簡単だな
900デフォルトの名無しさん:2009/06/20(土) 23:09:29
いや、はずすなよw
スキンメッシュやれる技量あるのになんでシェーダーやらない?
901デフォルトの名無しさん:2009/06/20(土) 23:27:04
SDKのサンプルみたいに
固定機能シェーダ−>ソフトウェア−> HLSL シェーダ
の順に習得する物なのかな…?

この辺りの歴史背景とか知らないので、教えてエロい人
902デフォルトの名無しさん:2009/06/20(土) 23:40:30
スキンメッシュクラスを作るためにもシェーダーは外す必要がある
シェーダーなんてbeginとendで囲むだけだし
903デフォルトの名無しさん:2009/06/20(土) 23:41:38
いきなりHLSLでOK
固定機能はDirectX10-11以降は存在しません
加えて11では今の頂点シェーダ、ピクセルシェーダに加え
新たに4つのシェーダーが加わりさらに複雑化する見通し
いまのうちから慣れておいて損はない
904デフォルトの名無しさん:2009/06/20(土) 23:44:44
>>902がシェーダーを理解してないことは解った
905デフォルトの名無しさん:2009/06/20(土) 23:45:38
固定機能ってどこまでを指すのか実は理解できてないんですけど
SetRenderState や SetSamplerState などが無くなるって意味?
906デフォルトの名無しさん:2009/06/21(日) 02:00:41
>>905
そんな意味の無い質問繰り返してるのが時間の無駄
ついでに言えば固定シェーダに悩んだ時間はただの時間の浪費でしかない
サンプル見つけてその通り書いてみるだけでもうなにもかもわかる
907デフォルトの名無しさん:2009/06/21(日) 06:05:09
まぁ導入には固定機能もアリだとは思うけどね
理解すれば勝手に使わなくなるもんだw
908デフォルトの名無しさん:2009/06/21(日) 06:21:50
未だにG550のMatrox儲としては固定機能も選択肢の範囲内
909デフォルトの名無しさん:2009/06/21(日) 08:26:40
固定機能 != 固定シェーダ
910デフォルトの名無しさん:2009/06/21(日) 10:39:53
固定機能をシェーダーにするのも容易い事なんだから
それに、各種エフェクトや半透明とかの対処を学ぶにもシェーダーを用意しなくて良いから楽
911デフォルトの名無しさん:2009/06/21(日) 10:53:09
「楽」な割には固定機能で○○ができませんか?的な苦労をしてる初心者が多いようですが
912デフォルトの名無しさん:2009/06/21(日) 11:04:48
2DはD3DXで固定機能
3Dはシェーダーで描画

こんな風に併用してる奴は俺以外にはいないか?
913デフォルトの名無しさん:2009/06/21(日) 11:09:47
面倒だから全部シェーダー
914デフォルトの名無しさん:2009/06/21(日) 12:01:46
DirectXの本とかサンプルとか書いてるページで
固定機能を先に説明してる奴が悪い
915デフォルトの名無しさん:2009/06/21(日) 12:52:09
むしろ、2D処理こそがシェーダーが活躍する分野だと思うんだな。
いちいちSIMD化しないといけない憂鬱を考えたらホント楽。
916デフォルトの名無しさん:2009/06/21(日) 12:57:07
2000年以降ぐらいで発売されたPCならノートでもデスクトップでもシェーダー動かないってことはないだろう
それより以前の使ってる奴なんているわけない
917デフォルトの名無しさん:2009/06/21(日) 13:00:54
シェーダの中で、CullModeとかも設定できるじゃないですか。
でもあれって、無駄な切り替え扱いで処理速度落ちちゃってるんでしょうか?

プログラマブルシェーダになって、すべての描画設定のところに
CullMode = CCW
を入れているのは、固定シェーダ時代でいうと
毎描画前にSetRenderStateでCCWを設定している相当の遅さになるような気がするのですが…。
918デフォルトの名無しさん:2009/06/21(日) 14:06:58
ステートブロック化されてるからそうでもないはず。
919デフォルトの名無しさん:2009/06/21(日) 14:15:02
だったら最初に一度設定してテクニック内では変更しなければいいじゃない

エフェクトのBeginのときにD3DXFX_DONOTSAVESTATEを指定しない場合は
Begin時に現在のデバイスステートを保存しEnd時に復元される
Begin時にCullModeがCCW以外であれば
切り替えて戻すことになるので実行速度は遅くなる

Begin時にCullModeがCCWの場合は
これは実行環境によるような気もするけど俺が前にPIXで確認したときは速度に影響はなかった
とはいえ、デフォルトの設定はあらかじめきちんと自分でしておき
デフォルトでないステートを使いたいときのみテクニック内で変更してEndで復元するという使い方が正しい気がする
920デフォルトの名無しさん:2009/06/21(日) 14:22:21
そういえば
PIX for WindowsがSDKのユーティリティに付属してることを知らない人多いよね
初心者スレならテンプレに乗せても良いくらいだ
921デフォルトの名無しさん:2009/06/21(日) 15:12:45
Direct3DにPIXなどない。
Microsoftが勝手に作ったツールに過ぎない。ID3DXSpriteより外縁の存在だ。
922デフォルトの名無しさん:2009/06/21(日) 15:16:58
いいじゃん、便利だし
923デフォルトの名無しさん:2009/06/21(日) 15:28:27
知ってるのと知らないのとじゃ大違いだしなー
使う使わないは本人が決める事だが
924デフォルトの名無しさん:2009/06/21(日) 15:33:55
>>921
このスレだと、そういう事をマジで言っちゃう奴とか居るので
そういうボケはちょっと・・・
925デフォルトの名無しさん:2009/06/21(日) 15:42:02
PIXは便利だけど強力すぎるので、知らない人は知らないままでいて欲しい。
926デフォルトの名無しさん:2009/06/21(日) 17:19:10
投影変換した頂点で作った板ポリゴンってワールド行列変換で移動できない?
927デフォルトの名無しさん:2009/06/21(日) 17:24:11
1万枚の位置とか色が変わる板ポリゴンを描くとして
頂点バッハに入れておいてどばーっと描くのと
4つの頂点だけ作ってトランスで操作しながら描くのは
どっちが速い?
928デフォルトの名無しさん:2009/06/21(日) 17:26:28
まずはやってみるんだな
プログラムなんだし何やっても怒られないだろ
929デフォルトの名無しさん:2009/06/21(日) 17:29:54
やってるけどできない・・・
.xメッシュは移動できる
930デフォルトの名無しさん:2009/06/21(日) 17:34:24
出来ないならどっちが速くても関係ないな
931デフォルトの名無しさん:2009/06/21(日) 20:06:43
ちなみに、技術系の板でわざと知ったかぶりしてみると本当の答えが返ってくる。
932デフォルトの名無しさん:2009/06/21(日) 20:18:29
どう考えてもDrawPrimitiveの回数の少ない方が速いだろ
933デフォルトの名無しさん:2009/06/21(日) 20:20:13
回数が少ないほうが量が多いってことね。
934デフォルトの名無しさん:2009/06/21(日) 20:40:05
人一人描画するのでも髪、肌、服(鎧)、アクセサリ、他・・・って
マテリアル切替まくるのにいまさらそんなものの回数なんて気にしてられるか
935デフォルトの名無しさん:2009/06/21(日) 20:42:16
だれも人モデルの話なんてしてないがな
936デフォルトの名無しさん:2009/06/21(日) 21:26:24
あ、この流れ久しぶりだ
937デフォルトの名無しさん:2009/06/21(日) 21:29:43
枚フレームVertexBuffer書き換えるほうが遅い
938デフォルトの名無しさん:2009/06/21(日) 21:43:49
適切に動的頂点バッファとして使えば速くなることはあっても遅くなることはないよ。
もっとも最近のVGAではユーザーメモリに対しての優位性はほとんど無くなってるらしいが。
939デフォルトの名無しさん:2009/06/21(日) 22:03:49
そもそもモデルデータでもない限りVertexBuffer書き換えないで描画なんて出来ないだろ。
UP系のメソッドだって中じゃVertexBuffer経由してんだから。
940デフォルトの名無しさん:2009/06/21(日) 22:03:51
一万枚の板ポリが前提の時点で、無能以外の何者でもない
941デフォルトの名無しさん:2009/06/21(日) 22:08:51
・VertexBufferを書き換えない
・DrawPrimitive呼び出しが少ない
で、ジオメトリインスタンシングがいいんじゃないか?
使ったこと無いけど。
942デフォルトの名無しさん:2009/06/21(日) 22:14:23
>>940
くわしく
943デフォルトの名無しさん:2009/06/21(日) 22:24:06
1フレームに二万ポリゴン、それをリアルタイムで動的に変更する場面を考えてみろ。
944デフォルトの名無しさん:2009/06/21(日) 22:36:20
レトロ2Dゲーに限ってDrawPrimitiveを毎回呼び出すのは無理だよ
32x32マップチップを800x600の画面に描画するのでさえ処理落ちするし
そういう用途に限ってVertexBufferを使用する最大数まで確保しておいて
使用頂点数指定して描画したほうがいい

ただ、マテリアルの切替とかできないから汎用性をつけるのははっきりいって無駄
もうそこだけ限定でおk
945デフォルトの名無しさん:2009/06/21(日) 22:38:18
一万枚だけじゃわからん。
たとえば単一のテクスチャで草や葉の一群を描画するのか
弾幕STGの敵や弾でテクスチャ等がいろいろ混じって一万枚なのか。
946デフォルトの名無しさん:2009/06/21(日) 22:41:18
そういえばDrawIndexedUPとかDirectX10にないんだけど、みんなどうしてるの?
947デフォルトの名無しさん:2009/06/21(日) 22:45:43
>>946
あんまりよく覚えてねぇけど
頂点の使用数を入れる引数があったはずだから別にUPとかいらないんじゃない?
前から
どうだっけ?
948デフォルトの名無しさん:2009/06/21(日) 22:47:24
っていうかD3D10使ってる人いるの?
ジオメトリシェーダの話題とか皆無だよな
949デフォルトの名無しさん:2009/06/21(日) 22:55:30
>>946
CreateVertexBufferで一定サイズごとに動的バッファ作ってプールしといて使いまわし。
950デフォルトの名無しさん:2009/06/21(日) 22:58:54
>>944
DrawPrimitiveを475回呼び出すだけで処理落ちとか、
どれだけ糞環境なんだよ?
951デフォルトの名無しさん:2009/06/21(日) 23:12:47
なにも考えずに
DrawPrimitiveを回数呼ぶと簡単に落ちるよ
背景だけ描いて終わりじゃないしな
952デフォルトの名無しさん:2009/06/21(日) 23:13:50
今のPCなら数百万ポリ位は描画できる
それが出来ないのはFPSを固定していないから
処理落ち云々言ってるのは正に初心者
953デフォルトの名無しさん:2009/06/21(日) 23:16:27
>>950
別に糞環境じゃねぇけど処理落ちするぞ
954デフォルトの名無しさん:2009/06/21(日) 23:16:53
>>数百万ポリ位は描画
これを本気でいってるならそのほうが初心者っぽいが
955デフォルトの名無しさん:2009/06/21(日) 23:28:24
1フレームで数百万はあり得ないが、1000回程度なら60fpsは簡単に出るぞ
956デフォルトの名無しさん:2009/06/21(日) 23:31:07
処理落ちとして考えられる理由。

テクスチャを32*32ごとに一つずつ作って、毎度切り替えている。
動的バッファを作っていながらAGPメモリを使わずに毎度書き換えている。
意味も分からずID3DXSpriteを利用している。
957デフォルトの名無しさん:2009/06/21(日) 23:32:38
>>956
そんなミスしないよ
958デフォルトの名無しさん:2009/06/21(日) 23:34:38
自分はミスしない、悪くないという奴に限って、
致命的に馬鹿なことをしているのが通例。
959デフォルトの名無しさん:2009/06/21(日) 23:44:51
考えられる原因

裏画面に全体を描き込んで一度に転送していない
(1チップ毎に画面転送している)

全てのテクスチャを作り直している

FPSを固定していない
垂直同期に設定している

無駄なSLEEPを入れている

ハードウェアアクセラレーションを使っていない
960デフォルトの名無しさん:2009/06/21(日) 23:50:34
>>959
そんなの今更考えられる原因としてあげてるのおかしいだろw
961デフォルトの名無しさん:2009/06/21(日) 23:53:41
処理落ちソースをさらしたら、猛烈に突っ込みを受けることになるんだろうな。
962デフォルトの名無しさん:2009/06/21(日) 23:53:47
まぁ、ソースだせや
馬鹿コードを直してやるよ
963デフォルトの名無しさん:2009/06/21(日) 23:53:50
>FPSを固定していない
>垂直同期に設定している

質問者とは別人だが、その辺をどうしようか考えているところ。
その辺のことを解説したいいページとかないかな。
MSDNに書いてある?

やりたいのは液晶(通例59ないし60FPS)、CRT(60以上)どちらでも
最大60FPSを(処理落ちしない限り)安定して提供できるようなフレーム処理がしたい。
964デフォルトの名無しさん:2009/06/21(日) 23:54:43
意味も分からずID3DXSpriteを利用している。

いつの話だよ。
今のは最低限のDrawPrimitiveにまとめる構造になってるぞ。
965デフォルトの名無しさん:2009/06/21(日) 23:55:52
>>964
テクスチャ順にソートするだけだろ
966デフォルトの名無しさん:2009/06/21(日) 23:57:48
「DrawPrimitiveは遅いって聞きました」のひとことから始まるこの混沌を
僕はいつも楽しみにしています
967デフォルトの名無しさん:2009/06/22(月) 00:01:30
矩形をたくさん描画するような処理やるときにまとめずに
分割して呼び出すと遅いってだけでそれ以外はこいつ呼ぶしかねーんだから
遅いも糞も使わなきゃなにもでんがなw
968デフォルトの名無しさん:2009/06/22(月) 00:02:55
多分、垂直同期で決まりじゃないか?

ちなみに何FPS出てるのか知りたい
969デフォルトの名無しさん:2009/06/22(月) 00:03:40
>>956
頂点バッファに溜めてるっぽい
970デフォルトの名無しさん:2009/06/22(月) 00:06:52
マップタイルはサーフェイス作るっしょ
シーンの初期化時「Now Loading...」とでも表示してる間に並べて描いて
後は領域切り出して転送するだけ。
971963:2009/06/22(月) 00:09:34
>>968
なるほど……垂直同期で待機する方法を調べてみるか。

>ちなみに何FPS出てるのか知りたい
今のところネットブックで動かしてもフルスクリーンにすれば
60FPSが出るように処理量を抑えることができている。

でも環境によって、CPUに余力があるはずなのに
常に100%使用になっちゃう場合があるんだよね。

垂直同期で待機するとフレームが飛んだ場合の検出を別にやる必要が出てきそうだ。
その場合はtimeGetTimeでいいのかな?
972デフォルトの名無しさん:2009/06/22(月) 00:11:05
>>970
メモリー食うじゃん?
973デフォルトの名無しさん:2009/06/22(月) 00:14:36
>>970
それだと縦横4096超えるようなマップが作れなくない?
オレならマップチップを並べた状態のメッシュを用意して、1つのオブジェクトとして描画させるが。
今のところ32x32サイズだが、テクスチャが共有できてれば速度的な問題は無い。

若干問題は残っていてフェードアウトかけたいときにマテリアル光のαを減らすと、
2重になってるマップチップだけ1重のところより明るく見えちゃうことだな。

これを回避しようと思ったら970のいうように一旦サーフェイスに書いて、
改めてα合成をやり直す必要があると思う。
974デフォルトの名無しさん:2009/06/22(月) 00:14:50
cpu100%…

core2なら50%、クアッドコアなら25%になるんだろ?

もろ、FPS固定、可変SLEEPが出来てない証拠
975デフォルトの名無しさん:2009/06/22(月) 00:21:23
2D (笑)
976デフォルトの名無しさん:2009/06/22(月) 00:22:33
>>974
いや、どうもダメな環境の場合、
Draw*Primitive*() 〜 Present() あたりで制御が返ってきてないように見える。
まだちゃんと時間計測やってないけど。

メイン環境だと処理能力に余裕があるからSleepする時間が取れるんだけどね。

ネットブックのGME950は挙動にくせがあるなー。
テクスチャの初期化のされ方もほかの会社のと違うみたいだし。
977デフォルトの名無しさん:2009/06/22(月) 00:24:08
垂直同期使ったらいかんよ?
モニタの垂直回帰を自動で待つんだから
垂直同期は外してマルチスレッドで主スレッドはメッセージループのみ
子スレッドでメインループを作る
978デフォルトの名無しさん:2009/06/22(月) 00:26:14
>>973
DirectDrawでチップ組みの2DRPGを組むときのやり方と同じでしょ。
画面が1024x768でチップが32x32なら、サーフェイスは(1024+32)x(768+32)だけ確保して
矩形を4回描画すりゃできる。(2^nサイズの問題はおいておく)


979デフォルトの名無しさん:2009/06/22(月) 00:28:11
これがベストって雛形ください
980デフォルトの名無しさん:2009/06/22(月) 00:32:22
>>978
なるほど。そうやるのが定石なのか。

マップチップがアニメーションする場合は効率があまりあがらないような気がするが、
メッシュ処理をする場合にも最低限UVを張りなおしが必要なんだよな。
(テクスチャ上のチップを規則立てて並べることでピクセルシェーダ上で張替えを行う力業もあるわけだが)
981デフォルトの名無しさん:2009/06/22(月) 00:35:46
>>977
そうなのか。垂直同期待ちというのは面倒そうだな。

>垂直同期は外してマルチスレッドで主スレッドはメッセージループのみ
>子スレッドでメインループを作る
趣旨は分かるんだが、メッセージループでクリティカルなイベントを拾ったときの対処が面倒になるね。
例えばフルスクリーン、ウィンドウ表示の切り替えだとか。
1スレッドでやってるときはスクリーン切り替え中は勝手に処理が止まってるわけだが、
非同期で動いている場合は外から止める必要がある。

まあ既に7割以上のPCがデュアルコア以上になってるという市場の調査結果もあるから、
マルチスレッドによる計算資源の活用は積極的にやるべきだよな。
982デフォルトの名無しさん:2009/06/22(月) 01:01:50
メッセージループって新たにスレッド作って回した方がいい?
983デフォルトの名無しさん:2009/06/22(月) 01:04:23
>>973
全然わからんのだが教えてくれるか

>サーフェイスは(1024+32)x(768+32)だけ確保して
なんで+32?端の32x32 x nをマップチップとして使うの?
それだと数が限られないか?

>矩形を4回描画すりゃできる。
なんで4回?
この数字はどっから出てきた?
984デフォルトの名無しさん:2009/06/22(月) 01:09:39
>>978の間違い
985デフォルトの名無しさん:2009/06/22(月) 01:22:28
>>983
エスパーの俺が受信したところによると
全画面より1チップ分だけ縦横にスクロール分を確保。
4回の件は、例えば左上にスクロールするとすると、左上部分を転送(1回目)
右部分の縦に細長い矩形を転送(2回目)
した部分の横に細長い矩形を転送(3回目)
右下の1チップを転送(4回目)

ってことではなかろうか。
こんな方法が標準かどうかは別の問題だけどさ。
986デフォルトの名無しさん:2009/06/22(月) 01:36:03
DDrawの初期はVRAMが4Mとか8Mなので、サーフェイスの確保も表示画面数個分とか。
そんな時代にBltFastを駆使してドット単位スクロールをするなら・・・という手法かな。

その後すぐに、システムメモリに画面を作ってCPUで全画面転送した方が早いので
素直にでかいメモリ確保するようになった。

987デフォルトの名無しさん:2009/06/22(月) 01:48:35
>>985-986
なるほど、スクロール分なんですね。
納得しました。ありがとう。
988デフォルトの名無しさん:2009/06/22(月) 02:48:03
D3DFVF_XYZRHWで作ったポリゴンって1回固定パイプライン通ってるからシェーダー通せない?
989デフォルトの名無しさん:2009/06/22(月) 02:55:57
頂点シェーダはスキップされる
ピクセルシェーダは使える
990デフォルトの名無しさん:2009/06/22(月) 04:23:53
やってみたけど頂点シェーだ無視された・・・
991デフォルトの名無しさん:2009/06/22(月) 04:36:36
D3DFVF_XYZRHWで作ったポリゴンってループ内で動かすことはできないんですか?
992デフォルトの名無しさん:2009/06/22(月) 05:31:29
ESPを使っても分からない!
993デフォルトの名無しさん:2009/06/22(月) 05:32:42
ESP?
994デフォルトの名無しさん:2009/06/22(月) 05:45:17
D3DFVF_XYZにして
とらんすふぉーまー
995デフォルトの名無しさん:2009/06/22(月) 05:49:46
XYZRHWじゃ無理っぽいな
一度サーフェイスに書き込んでXYZで描きなおすしかないか
996デフォルトの名無しさん:2009/06/22(月) 08:02:09
最初からXYZで描けよw
997デフォルトの名無しさん:2009/06/22(月) 08:02:46
D3DFVF_XYZRHWは頂点計算済みと見なすと書いてあるんだから、
スキップされるのは当然じゃないか。
なぜ普通にレンダリングしない。
998デフォルトの名無しさん:2009/06/22(月) 09:18:08
>>978
今更だが、1024+32だとメモリがスゲー無駄になりそうだから工夫がいるな
999デフォルトの名無しさん:2009/06/22(月) 11:21:18
>>998
基本的なアイデアとしてはこれで問題ないだろう。
また、最近のVGAボードなら2の累乗サイズでないテクスチャも扱えるし。
(処理速度に差がある場合があるようだが)

1024x1024で確保して768より下の部分をワーク部分とする方法もあるし、
2048x2048確保する方法だってあるだろう。
1000デフォルトの名無しさん:2009/06/22(月) 11:46:40
>最近のVGAボードなら2の累乗サイズでないテクスチャも扱えるし

2の累乗以外対応のハイスペックVGAならそこまで効率を考える必要はないとして
むしろ対応してないロースペックVGAのことを考えるべきじゃないかと

>2048x2048確保する方法だってあるだろう
だからそれが無駄だと

>1024x1024で確保して768より下の部分をワーク部分とする
そういう工夫がいるよなって話

2048でもあいた所をうまく使えればいいかもしれないけど
解像度高めのテクスチャって環境チェックとかめんどいんだよな…
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。