1 :デフォルトの名無しさん2011/02/19(土) 07:11:38
回答する人も、質問する人も必ず読んでください

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

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

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

前スレ
【C++】 DirectX初心者質問スレ Part33 【C】
http://hibari.2ch.net/test/read.cgi/tech/1293016261/
3 :デフォルトの名無しさん2011/02/19(土) 15:27:37
>>1乙
2 :デフォルトの名無しさん2011/02/19(土) 07:14:07
980を踏んだら作るべきらしいので、前スレの1さんのほぼコピペですが建ててみました。
初スレ建てなので、もし不備が有りましたらすみません orz
4 :デフォルトの名無しさん2011/02/21(月) 00:32:22.94
スレチかもしれませんが該当しそうなスレがここしか無かったのでここで質問させてもらいます。
Visual C# 2010 から SlimDX を利用しています。
画像を表示するためにDirect3D9でテクスチャ表示をしようと思っているのですがどうしたら良いのか教えていただけないでしょうか?
DirectInputを利用したキーボード入力、Direct3D9を利用した背景色の設定は出来ました。
5 :デフォルトの名無しさん2011/02/21(月) 00:44:35.64
9 :デフォルトの名無しさん2011/02/21(月) 01:31:04.88
>>5
誘導ありがとうございます
6 :はじめまして。2011/02/21(月) 00:55:36.87
Visual Studioで
error LNK2001: 外部シンボル "_IID_IDirectInput8W" は未解決です。
というエラーが出ます。
追加のライブラリ、追加のインクルードを行い、追加の依存ファイルも書きました。
しかし同じエラーになります。

#define INITGUIDと書くと、
fatal error LNK1120: 外部参照 2 が未解決です。

fatal error LNK1120: 外部参照 1 が未解決です。
に減りました。

どこが間違っているのでしょうか。。。
8 :はじめまして。2011/02/21(月) 01:26:29.19
追加の依存ファイルは、上記のように
dinput8.lib
dxguid.lib
comctl32.lib
としています。

追加のライブラリディレクトリは
C:\Program Files %28x86%29\
Microsoft DirectX SDK %28June 2010%29\Lib\x64
を指定しています。
10 :はじめまして。2011/02/21(月) 01:31:33.33
C:\Program Files %28x86%29\
Microsoft DirectX SDK %28June 2010%29\Lib\x86

と\x86のように変更したら通りました。
まさかここだったとは。。。

7さん、ありがとうございました。
11 :デフォルトの名無しさん2011/02/21(月) 03:40:04.65
すみません。9のSDKサンプルの加工品でモーション付きモデルを再生しているのですが、
キャラクターの着せ替え(メッシュの入替え)が上手く行きません。

現状、LPD3DXFRAME に受け取ったモデルから、FirstChild、Sibling(ボーン)を辿り、1つだけメッシュコンテナのポインタを入替えてます。
そして以下の様な事が起きています。
「モーションは再生されず、原点にポツンと描画されます。(これは当然なのでしょうね。)」
「2ボーンにウェイトがあるメッシュは、1ボーン分だけ形状が保持され、あとの形状は崩れています。」
「どこかで入替えを行ったメッシュは、入れ替え前のメッシュが描画される事は一切有りません。(これも当然?)」

まずこの入替え方自体、メッシュはほとんど複数ボーンに関わっているから、かなり不適切な気が。
状況的には、強引に全ボーンのマトリクスを追って取って付けてすればなんとかなりそうな気もしますが・・
何かやり方が間違っているような、正しい入替え方が有るのではという気がしてなりません;
何でも構いませんのでご指摘やご助言を頂けますと幸いです orz
12 :デフォルトの名無しさん2011/02/21(月) 08:40:55.51
>>11
頂点ごとボーンに対応したウェイトデータがあるわけだけど
その辺もボーンとメッシュの関連ができているデータでやってるの?
んなことできんだろーか?

メッシュだけ入れ替えって可能なんだろか?
着せ替えって違うモデルのボーンにアニメーションを
対応させるみたいな対応になった気がすっけど

的なつぶやき
13 :112011/02/21(月) 16:22:07.27
>>12
ご助言ありがとうございます。ほかで頂いたご助言を私が間違って解釈し記憶していた様です。
何となくやり方が想像できました。どう組めば無駄な処理が減るか考えつつ色々試そうと思います。ありがとうございました。
14 :デフォルトの名無しさん2011/02/22(火) 06:35:53.04
自分用の2D描画ライブラリ:DirectX11作ってて、縮退三角形使った最適化したのにパフォーマンス全然変わらなかったんだけど、
縮退三角形での最適化って、すごく効果低かったりするん・・・?
15 :デフォルトの名無しさん2011/02/22(火) 09:19:38.12
今どき、縮退三角形とかいちいち使うか?
TRIANGLELISTで統一だろ普通

特に2Dとなれば、頂点数もたかがしてれてるし
17 :デフォルトの名無しさん2011/02/22(火) 10:29:00.36
2Dだと二面毎に縮退二つ挟まなきゃならないんじゃないの?
頂点数多くても相性最悪じゃね?
18 :デフォルトの名無しさん2011/02/24(木) 04:19:07.58
DirectXで、pngファイルを読み込んでテクスチャを作成して、それをスプライト上で背景画像として表示させてるんですが、
画面がリサイズされたときに、このテクスチャも画面サイズに合わせて拡大縮小させたいんですが、どうやれば実現できるでしょうか?
19 :デフォルトの名無しさん2011/02/24(木) 08:09:19.62
拡大縮小させたいのが背景だけなのか画面上全てのものをウィンドウにあわせるのかで違う
20 :182011/02/25(金) 01:56:23.57
現状は画面のリサイズに合わせて”すべて”を拡大縮小させる方向です。
21 :デフォルトの名無しさん2011/02/25(金) 02:09:51.43
だったらターゲットとするウィンドウサイズの正射影行列をプロジェクションにするのが手っ取り早い
22 :デフォルトの名無しさん2011/02/25(金) 10:01:06.76
DXUTを勉強してるんだけど、サンプルプログラム見てて疑問が沸いてきたんですが、
フリップ処理って内部でやってるんでしょうか?それともダブルバッファリングをするには特別な設定が必要なんでしょうか?
レンダリングの箇所(OnD3D9FrameRender)では、IDirect3DDevice9::Present()をコールしなくても描画されます。
32 :デフォルトの名無しさん2011/02/25(金) 22:45:59.55
>>22
DXUTMainLoopでよんでるっぽい
23 :デフォルトの名無しさん2011/02/25(金) 12:24:07.73
Windows 7、Visual Studio 2008の環境で、DirectInput8による入力を実装しているんですが、
画面が一回非アクティブになると、再度アクティブになった後も入力を受け付けてくれません。
デバイスからの入力に依存しないものは反映されているので、フリーズしたわけでもありません。

毎ループAcquire()を実行するようにしてみたり、
デバイスのポインタがNULLになったらDirectInputから作り直すようにしてみたりしましたが、変化がありません。
ネットで調べてみると、ウィンドウのアクティブ・非アクティブの際にAcquire()とUnacquire()を実行してるようなんですが、
同じ事をしてみようとすると、

関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&IDirectInputDevice8W::Acquire' を使用してください

などとエラーが出て実行できません。
とりあえず非アクティブから復帰しても入力を受け付けるようにしたいんですが、どうすればいいのでしょうか?
24 :デフォルトの名無しさん2011/02/25(金) 15:01:18.03
>>23
SDKのサンプルでもそうなるの?
サンプルとそっくりに書いてみれば?
25 :デフォルトの名無しさん2011/02/25(金) 18:42:30.82
HLSL内でif文って1個しか書けない?
26 :デフォルトの名無しさん2011/02/25(金) 18:43:52.18
>>25
いや、そんなことはないはずだが
27 :デフォルトの名無しさん2011/02/25(金) 18:54:14.89
if(S > 0.99f)
Col = P1;

if( ( Z1 ) < Limit &&
( Z2 ) < Limit &&
( Z3 ) < Limit &&
( Z4 ) < Limit )
Col = 0.0f;

おかしいところ無いよね?どちらか1つ消すとエラーが出ない。
28 :デフォルトの名無しさん2011/02/25(金) 19:04:06.41
>>27
Colに2回突っ込んでるから駄目とかそーゆーのじゃねーの?
29 :デフォルトの名無しさん2011/02/25(金) 19:06:38.20
float4 Col;
Col = P1;
Col = 0.0f;
return Col;

これは問題ないでしょ?大丈夫だと思うけど
31 :デフォルトの名無しさん2011/02/25(金) 19:43:29.56
>>29はまずいっぽいな
30 :デフォルトの名無しさん2011/02/25(金) 19:08:15.69
VS_OUTPUTになるもんに2回突っ込むとバグんなかったっけ?
いや、気のせいかもしんないw
33 :デフォルトの名無しさん2011/02/26(土) 01:10:38.91
シェーダー内で使える命令数はチップによって違うから
ビデオカードによって使えるif文の数や回せるforループの数が違うなんてよくあるはなし
34 :デフォルトの名無しさん2011/02/26(土) 01:12:47.03
XAudio2で簡易なオルガンのようなソフトを作りたいと思い SDK付属のサンプルを元に
色々と捻って試しているのですが、和音(と言うより、単純に複数の音)を重ねて鳴らす事が出来ません。

単純に1つづつ鳴らす分には、問題が無いのですが、
例えばAキーを押すとラ、Bキーを押すとシが鳴る状態(それぞれ1秒間発音)で、
ポンポンと(1秒以内に続けて)キーを叩くと、2音が重なるはずの所が重ならず、
「プー プポプポプポ ポー」 のようにグリッチしたように発音されます。

XAudio2単独で複数音を 重ねて 鳴らす(またはBGMに重ねて効果音を鳴らす)のは、無理なのでしょうか
57 :デフォルトの名無しさん2011/02/28(月) 21:51:30.86
>>34
当然可能だし、シングルスレッドで十分なことが可能。
XAudio2自体マルチスレッドをできるだけユーザに意識させない作りなのだから
シングルでやるがよろし
初期化コード類晒したほうがいいと思われ
39 :362011/02/27(日) 11:25:49.25
DirectX9でGDIを使って文字を描画したいのですがうまくいきません
SDKサンプルのCreateDeviceを基に、GDIを使って描画する方法のサンプルを下さい
http://codepad.org/P9nEZq6A
40 :362011/02/27(日) 14:57:51.92
次のようにしたら成功しました...
http://codepad.org/c48haCtU
スレ汚しすみませんですた、ありがとうございました
41 :デフォルトの名無しさん2011/02/27(日) 22:03:03.58
ちょっと質問です。DirextX 9.0、ピクセルシェーダ 2.0 を使っています。
バックバッファAにテクスチャBを、複雑な合成、
例えばスクリーン合成やオーバーレイ合成を行いたいのですが、方法が分かりません…。
AやBの大きさは、コンパイル時には予想できないとします。

オーバーレイ合成は以下の計算式になります。

if (dst < 0.5) result = 2 * dst * src;
else result = 1 - 2 * (1 - dst) * (1 - src);

シェーダを使っても dst の値は取得できないし、固定パイプラインでも上手く行きません。

新たなバッファCを準備し、AとBの2つをシェーダの入力とするしかないのでしょうか?
その場合、例えばAの大きさが 800×600、Bの大きさが 10×10 程度でも、
書き込まないといけないピクセル数は 800×600 になってしまい時間がかかります。
もし B が1枚じゃなく B1、B2、… と多くあった場合、ひどいことになってしまいます。

スクリーン合成やオーバーレイ合成が、そんな特殊なこととは思えないので、
もっと手軽な方法があると思うのですがなかなか見つからず…。何か方法はないでしょうか?
59 :デフォルトの名無しさん2011/02/28(月) 23:12:25.70
>>41
>新たなバッファCを準備し、AとBの2つをシェーダの入力とするしかないのでしょうか?
これはそのとおり、バッファCを用意するしかない。

>その場合、例えばAの大きさが 800×600、Bの大きさが 10×10 程度でも、
>書き込まないといけないピクセル数は 800×600 になってしまい時間がかかります。
これは違う。
たとえバッファAとバッファCが広大でも、
バッファBを覆うだけの、十分小さいポリゴン片で描画してやれば
そういう無駄は出ない。
65 :412011/03/02(水) 00:31:22.68
すみません、めちゃくちゃ遅レスで申し訳ないのですが…。

>>59
>バッファBを覆うだけの、十分小さいポリゴン片で描画してやれば
これが理解できていません。

800×600 のテクスチャAに、10×10 のテクスチャBをそのままのサイズでオーバーレイ合成したいとします。
合成用のテクスチャCは、作った段階では当然空っぽです。
どう工夫しようが、800×600 個の点を打たないとCは埋まらないですよね?
CにAをコピーしてから、AとBをシェーダに送って10×10の描画をしないと完成しないと思います。
B1、B2、…となるとやはりやばいことになりそうです。
うーん何か思い違いをしてるでしょうか…
66 :デフォルトの名無しさん2011/03/02(水) 22:39:56.69
>>65
1000x1000のテクスチャを2枚、A1とA2。
10x10のテクスチャを1枚、B。
とする。

>CにAをコピーしてから、AとBをシェーダに送って10×10の描画をしないと完成しないと思います。
最初のフレームでは、入力はA1とB、出力先はA2。
次のフレームでは、入力はA2とB、出力先はA1。
これでCにAをコピーといった過程は必要なくなる。

>どう工夫しようが、800×600 個の点を打たないとCは埋まらないですよね?
例えば、500,500の位置にBを描画したい場合、
ポリゴン片の座標は、(500,500)、(510,500)、(510,510)、(500,510)となる。
Bのテクスチャ座標は、(0,0)、(1,0)、(1,1)、(0,1)となる。
A1(A2)のテクスチャ座標は、(0.5,0.5)、(0.51,0.5)、(0.51,0.51)、(0.5,0.51)となる。
A1(A2)は1000x1000の全ての領域を参照される訳ではなく
あくまで10x10の範囲だけしか参照されない。
点を打つ領域も、あくまで10x10のみ。

まあBが複数ある場合は、相応の工夫が必要。
42 :デフォルトの名無しさん2011/02/27(日) 22:27:12.07
オーバーレイって人生で使ったことないけど一般的にどういう用途で使うもんなんだろ?
43 :デフォルトの名無しさん2011/02/27(日) 22:29:35.59
すいません、今DX9.0cの画像ビューア使ってるんですけど
表示される画像の表示おかしくて、主にスジが入るんですが
これってグラボが壊れてるって認識でいいんでしょうか。
あとttp://sky.geocities.jp/mayqueensite/DirectShow_VCerror.html
こんな表示出るんですけど、治そうと思って、手当り次第にランタイム入れたいんですけど
C++.NETのラインタイムってMSのサイトでどれ落とせばいいんですか?
45 :デフォルトの名無しさん2011/02/28(月) 00:27:39.39
>>43
それは自作ソフトの話なのか、ただDirectX9.0c使ってるソフト使うとバグるのか。
前者なら書き込む板間違ってる。
46 :デフォルトの名無しさん2011/02/28(月) 10:25:51.62
>>45
前者じゃなくて間違ってるのは後者だろw
48 :デフォルトの名無しさん2011/02/28(月) 15:12:37.87
空間だと大変だけど
対象が平面なら角度だせばよくね?
49 :デフォルトの名無しさん2011/02/28(月) 15:35:04.10
外積とかで求められそうなのでもうちょっと調べてみます。
51 :デフォルトの名無しさん2011/02/28(月) 15:54:03.55
>>49
「atan2」とそれっぽいキーワード入れてググレよ
角度でやんねーとダメだろ
時計の9時の方向へ向いてるベクトルを3時の方に回転させたいときとか
角度じゃないとどーにもならんっしょ?
53 :デフォルトの名無しさん2011/02/28(月) 18:08:56.98
すみません。カラーリングについてなのですが、

白・黒・青の3色(境界に中間色が多数有り)のテクスチャを貼ったモデルを、
青の部分だけを、黄、赤にしたり明暗を変えて、白・黒の部分はできるだけ保護したく思っています。

現在はメッシュの頂点色をいじってカラーリングしており、これでは白色の保護が無理な様で・・。
どうすれば白色を保護してカラーリングできるでしょうか・・?
55 :デフォルトの名無しさん2011/02/28(月) 19:43:31.40
>>53
方法1・予め色変更済みのテクスチャを用意しておき切り替える

方法2・テクスチャのBITMAPを取り出して加工する

方法3・ピクセルシェーダのタイミングで画素のRGBからHSVを求めて
HueやVolumeを変えて再びRGBにしたものを適用

ぱっと思いつくのはこのくらい
58 :532011/02/28(月) 22:02:07.93
>>55
ありがとうございます。テクスチャも加工回数を最小にすればきっと実用的なんですね。
そしてピクセルシェーダで触る事も出来るんですね。HLSLの勉強が進んだら実現したく思います。
ご助言ありがとうございました。
54 :472011/02/28(月) 19:05:29.16
平面だと向きを変えられるのですが、空間だと難しくなります。
XZ平面上ではY軸回転で向けれるのですが、もう一つの軸(X軸orZ軸)回転で向きを変えようとすると
デタラメな方向に行ってしまいます。
56 :デフォルトの名無しさん2011/02/28(月) 21:13:37.91
60 :デフォルトの名無しさん2011/03/01(火) 14:35:21.25
クォータニオンを使って2つの軸の回転を合成するにはどうしたらいいのですか?

入力:2つの軸と角度
出力:回転マトリックス

したいのは上述通りです。
61 :デフォルトの名無しさん2011/03/01(火) 18:58:49.33
2つのクオータニオンを作り掛け算してその後行列に変換すればいい
62 :デフォルトの名無しさん2011/03/01(火) 22:27:33.68
もしも >>61 が書いてる内容自体がわからないなら、四元数そのものについて調べて理解が必要
64 :デフォルトの名無しさん2011/03/02(水) 00:27:52.44
PIXで頂点シェーダ(vs_2_0)のアドレスレジスタ(a0)の値を確認したいのですが、
値が空白になっていて見れません。PIXでは見れないのでしょうか?
(環境:Core2Duo, Q35Express, WinXP SP3, DX9(Jun2010))
67 :デフォルトの名無しさん2011/03/02(水) 22:45:00.25
わるいわるい
よく考えてみたら、俺が間違ってるわ。
やっぱCへコピーが必要そうだな。
何かうまい方法はないかな?
68 :デフォルトの名無しさん2011/03/03(木) 00:45:25.23
コピーコピーって言ってるけど
本当にコピーなのかただのレンダリングなのかはっきりさせてほしい
69 :デフォルトの名無しさん2011/03/05(土) 03:47:38.27
d3dxfont使ってゲームを完成させたが、
文字量が増えるほどにアフォみたいに重くなる
d3dxfontは重くてつかいものにならいとのことなので
テクスチャをレンダーターゲットにして
あらかじめ文字をテクスチャ化して表示するのを試したら
確かに早くはなった。
しかしこれだと、定型文字はよいとして
チャットなどのリアルタイムに変化する文字には対応できなくて困った
DIBを使う?と高速に文字描画できる云々ってのを
過去ログで見つけはしたが、サンプルのリンクが切れてて参考になりませんですた

よさげなサンプルがあるサイトはございませんか?
70 :デフォルトの名無しさん2011/03/05(土) 04:07:01.22
>>69
ttp://marupeke296.com/DXGSmp_No5_Font.html
GetGlyphOutline使えばよろし
77 :デフォルトの名無しさん2011/03/05(土) 16:56:35.23
>>75
>>70のヤツって動くんじゃないの?
動くみたいに書いてあるけど
71 :デフォルトの名無しさん2011/03/05(土) 09:16:18.15
過去ログ見てないけどDIB云々てのは、単にDirectX使わないで
普通にGDI関数でビットマップ領域に描画させてって話じゃね
TextOutか何かで
72 :692011/03/05(土) 14:25:21.76
>>70
このサイトちら見したけど
テクスチャをレンダーステートにして文字を書いておくのと
基本構想は変わらないんじゃ?
チャットみたいにどんな文字が使用されるかわからない場合でも速度でるのかな?
どのくらい速度出るのか検証中

>>71
デバイスコンテキスト取得して
オンメモリのビットマップに普通に文字描画するまでは
やったことがあるんでイメージできるんだけど
それをテクスチャに変換して張り付けるまでの工程がさっぱりわからん
d3dxfontよりは明らかに早いらしいけど
動作するサンプルがほしいお
73 :デフォルトの名無しさん2011/03/05(土) 14:30:29.02
>>72
必要となったときに1度だけ作ってあとはそれを使いまわせばいい
aが必要となったら一度だけaのピクセルデータを取っておいて(テクスチャに書いて)
使いまわせばいい
74 :デフォルトの名無しさん2011/03/05(土) 14:33:43.58
一旦テクスチャ作る以上には早くできないだろ
新しく作成される文字は1フレで1文字程度なんだからテクスチャ作るコストはたいしたことないな
マップチップの原理で遅くなってるだろうからさらに1行ごとにテクスチャにしちゃうとかして
DrawPrimitiveの回数を減らしてみたらいいんじゃね?
75 :デフォルトの名無しさん2011/03/05(土) 15:59:07.43
>>73
やっぱりそんな感じですか。
表示したい文字がプールしたテクスチャ内にあるか調べるとか
結構めんどくさそうですな。

>>74
一旦テクスチャつくるほど早くなくても
d3dxfontより早ければいいんですけどね〜
あいかわらず動くサンプルがみつかんね
入力された文字を行ごとにテクスチャ化してプールしておいたとしても、
今、入力している文字とかリアルタイムで値がかわるFPSの表示とか
考えれば考えるほどまんどくさ


とりあえず半角英数字のビットマップフォントだけでも用意して誤魔化すか〜
楽したいだけなのにどんどん苦労する方向に向かってんなw
79 :デフォルトの名無しさん2011/03/05(土) 17:15:50.45
>>75
>表示したい文字がプールしたテクスチャ内にあるか調べるとか
そんなもんstd::mapにでも登録しておけば一発やろが!
76 :デフォルトの名無しさん2011/03/05(土) 15:59:58.70
メリケン人は50文字程度のビットマップフォント用意するだけでいいんだよな。
考えてみたらまじでウラヤマシス。
78 :デフォルトの名無しさん2011/03/05(土) 16:58:11.84
なんだこいつ
ごちゃごちゃいいわけばっかりしてやらないだけじゃん
80 :デフォルトの名無しさん2011/03/05(土) 17:54:33.75
おまいらIDirect3DSurface9::GetDCがあるのになんで教えてくれないのって感じだ


>>79
低性能PCだとテクスチャ作成時間がバカにならないので結局やめた
STLのこと忘れてた ありがとう

>>78





81 :デフォルトの名無しさん2011/03/05(土) 17:56:28.51
まあ本当に楽をしたいならもっと高級なライブラリを使うわな
84 :デフォルトの名無しさん2011/03/05(土) 19:14:43.43
難しそうですね、国産のseleneもマニュアルもないし・・・
85 :デフォルトの名無しさん2011/03/05(土) 19:22:51.71
>>84
とりあえずチュートリアルでもやってみては?
英語でもドキュメント英語は簡単な場合多いし
86 :デフォルトの名無しさん2011/03/05(土) 19:42:11.09
すみません。地形との衝突判定についてなのですが、
今まではメッシュが1つで、それへレイを飛ばすだけで済んでいました。

しかし「上を歩いたり、中をくぐり抜けられるメッシュ」を複数配置、撤去したりしたく思っています。
(リアルタイムではなく読み込みを挟むごとに切り替える程度です。)

こうした場合、やはり全てのメッシュを1つに纏めるべきなのでしょうか?
他に良い方法が有ったりするでしょうか。
87 :デフォルトの名無しさん2011/03/05(土) 19:55:15.70
内容によるからこれが正解ってのは無いけど、動かない地形なら判定省略できる部分もあんじゃね
てかそのアルゴリズムで問題ないなら
88 :862011/03/05(土) 22:11:54.15
>>87
確かに。
中心距離が一定以内になった物だけレイを飛ばしたりすれば、そこそこの負担増で処理できそうですね。
ありがとうございました。
89 :デフォルトの名無しさん2011/03/06(日) 02:13:06.14
3Dの描画コストについて調べてるのですが
ライティングやテクスチャを有効にして10万ポリゴンの球体を
毎フレーム1回のDrawPrimitiveで描画してみたところ
フレームレートが60FPSを若干下回って50FPS程度
更に多くの50万ポリゴンを描画しようとすると10FPSを下回りました。
(どちらも頂点数はポリゴン数*3でトライアングルリストで描画)
実行環境はGeforce8600GT搭載グラボを使用してるPCなのですが

勉強不足なのでプログラムに問題があって遅くなってるのか否か分からず困ってます。
正直思っていたより遅くて疑問なのですが、実際これだけのポリゴン数描画しようとしたらこのくらい描画負荷が掛かるものなのでしょうか?
92 :デフォルトの名無しさん2011/03/06(日) 07:52:36.43
>>89 は静止画用ハイポリモデルをリアルタイムに扱おうとしてる雰囲気に見える

>正直思っていたより遅くて
名前が一人歩きしてるせいで、過度な期待と思い込みをしてる人はよくいる
90 :デフォルトの名無しさん2011/03/06(日) 02:27:11.60
PS2で毎フレームテクスチャつきの3万ポリゴンが出れば御の字って話だったような気がする。
そのもうちょっと後の世代だから数字自体は妥当なきはするけどね。

ところで、10万ポリゴンあったら何ができるか把握してるか?
1万ポリゴンのキャラが10体でるんだぜ?imasのきゃら5人くらいを1画面にだせるんだぜ。
エロゲで使われるようなやつでも3体は出るから会話とか成立しうるし。

で、まず、メタセコイアあたりで1万ポリゴンのオブジェクト作ってみろよ。
どれだけの表現を詰め込めるか思い知るが良いさ。
94 :892011/03/06(日) 11:34:35.68
>>91 エスパーありがとう
ソフトウェア頂点処理してました・・・
デバイス作成にハードウェア頂点処理を指定したら
50万ポリの描画も余裕で60FPSに収まりました

>>90,92,93 も貴重なご意見ありがとうございました
91 :デフォルトの名無しさん2011/03/06(日) 03:26:13.41
ソフトウェア頂点処理でやってたとゆーオチじゃね
93 :デフォルトの名無しさん2011/03/06(日) 09:20:42.11
ぶっちゃけ今の世代のビデオチップは
フィルレートに足を引っ張られて頂点処理能力は余りまくりだから
頂点数だけで比較するのは意味無い
描画を全くさせないで頂点演算だけGPUにやらせてみなよ
スペック通りの数字がでるから
95 :デフォルトの名無しさん2011/03/07(月) 00:41:12.84
プログラムからDirectXのバージョンを確認するには
どうすればいいのでしょうか?
ググっても全然ないです
98 :デフォルトの名無しさん2011/03/07(月) 01:11:17.12
>>95
MSDNに「DirectX のバージョン番号を直接取得する方法はない」って書いてる。
間違ってたらゴメンネ。

なんでプログラム内部からバージョン知りたいん?
102 :デフォルトの名無しさん2011/03/07(月) 01:29:30.67
そういう用途なら各DLLのバージョン番号を見た方がいいんでね?
103 :デフォルトの名無しさん2011/03/07(月) 04:43:19.20
http://marupeke296.com/DXG_No49_DebugFont.html

このページのサンプルを実行してみると、
「'str' : 定義されていない識別子です」というエラーを吐きます。
visual studio 2008を使ってるのですが、リンカか何かの問題なのでしょうか。
104 :デフォルトの名無しさん2011/03/07(月) 07:52:54.74
>>103
多分だけど、

#include <xstring>

を追加すれば行ける気がする

std::wstring は Windowsだと xstring っていうヘッダにあるってか DicrectX関係ないこれ
106 :1032011/03/07(月) 19:44:31.60
>>104
>ってか DicrectX関係ないこれ

すみません。自分も書き込んでから気がつきました
あと、xstringを追加しても機能してくれませんでした。
108 :デフォルトの名無しさん2011/03/07(月) 21:11:28.05
>>106
試しにそのサイトにあった d3ddebugfont.h をDLして試してみたけど、
普通に通るんだが。 もちろん アーカイブされてたヘッダだけだと当然
windows.h やDirectX関係のヘッダがincludeされてないので足したけど
111 :デフォルトの名無しさん2011/03/08(火) 02:22:40.74
>>103はDirectXを勉強するまえにCやらC++やらの勉強することをオススメする
112 :1032011/03/08(火) 04:19:45.47
>>108
なんか散々悩んだあげく、std::wstring strという形にしたらそれだけで通りました。
Visual Studioの仕様が問題だったのかもしれません。
115 :デフォルトの名無しさん2011/03/08(火) 09:32:48.78
>>112
全然VSの固有仕様とかじゃないです
他にも言われてるけどDirectX以前の話なので、ちょっと真面目に基礎的な実験やテストコードでも書くべき
116 :デフォルトの名無しさん2011/03/08(火) 10:23:03.04
>>112
char と wchar_tの違いをしっかり理解するんだ
Directxなどまだ早い
105 :デフォルトの名無しさん2011/03/07(月) 10:04:28.74
なんで掲示板のある解説サイトの質問をわざわざ2chでするのかねえ
109 :デフォルトの名無しさん2011/03/08(火) 00:15:23.88
シェーダーで深度を使って影を出しているのですが、遠くまで広い範囲を描画すると影の質が落ちてしまいます。
きれいな影を作るいいアイデアはありますか?
110 :デフォルトの名無しさん2011/03/08(火) 01:04:31.18
>>109
方法1:カスケードシャドウマップを使う
方法2:できるだけ狭い範囲での深度テクスチャを作成する
方法3:別な影生成方法に切り替える(シャドウボリュームとか
方法4:ソフトシャドウに挑戦する(影をぼかす
方法5:あきらめる
方法6:描画自体をレンダリングエンジンライブラリを使ってそこでいい方法を探す
とかがパッと考え付くところかなぁ
ジャギが出るのは深度バッファシャドウの欠点だから仕方が無い
117 :デフォルトの名無しさん2011/03/08(火) 12:10:41.85
そこのサンプル落としてみればわかるが、ヘッダの先頭に
using namespace std;
とか書かれてるわけで(その是非はとりあえずおいとく)
それなのにstdを明示しないとコンパイル通らないってのはおかしくないか?
118 :デフォルトの名無しさん2011/03/08(火) 12:22:22.22
スレチだけど、そういう混乱が起きるのが嫌だから
using namespace はなるだけ使わず、あるいは使うとしても
翻訳単位の中で影響が小さくなるように書くのが普通

そのサンプルはヘッダに全部書いちゃってさらに pragma once まで書いちゃって
さらにusingまでしちゃってるからあんまり良い内容じゃないよね

よくわかった上で使うか適宜修正しないと、特に言語初心者当たりがハマる
120 :デフォルトの名無しさん2011/03/08(火) 13:06:01.21
関係ないけど>>118の投稿時間がステキ
121 :デフォルトの名無しさん2011/03/08(火) 13:09:54.23
>>118
すげぇw
119 :デフォルトの名無しさん2011/03/08(火) 12:43:10.83
どうなってれば余計な心配や対処をしないで済むか、
まで話が及ぶと完全にスレ違いになるからその辺で。
わかんない人は入門書読み直すか、言語スレへ
123 :デフォルトの名無しさん2011/03/08(火) 21:50:11.68
透視影マップの実装について詳しく書かれたサイトありますか?
131 :デフォルトの名無しさん2011/03/09(水) 01:18:32.86
まいった・・・OSがXPだからDX11のサンプル実行できない・・・
132 :デフォルトの名無しさん2011/03/09(水) 01:44:57.53
Perspective Shadow Mapでググってみては。サンプル配ってるサイトあったけど。
133 :デフォルトの名無しさん2011/03/09(水) 10:01:22.61
ワールド*カメラビュー*プロジェクション*ライトからのビュー*プロジェクション
うまくいかない・・・視点を動かすとなぜか影の角度も動いてしまう・・・
135 :デフォルトの名無しさん2011/03/09(水) 13:20:42.36
D3D11のデバイスをFEATURE_LEVELを9_1で作成し、テクスチャ生成時に
D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEXを指定すると、以下のエラーが発生します

Test.exe の 0x00000000 でハンドルされていない例外が発生しました: 0xC0000005: Access violation

FEATURE_LEVELを10_0で作成した場合や、KEYEDMUTEXのフラグを指定しない場合はエラーになりません
リファレンスなどを見ても、機能レベルによって作成できないなどの表記を見つけることが出来ず
仕様なのか使い方の問題なのか分からず困っています。何が問題なのでしょうか?

やりたいことは、DX10に対応していないビデオカードによる、D3D11とD2Dのサーフェイス共有です
よろしくお願いします。
137 :デフォルトの名無しさん2011/03/09(水) 13:53:19.34
KEYEDMUTEXのフラグを指定しなければ、そのデバイスでの様々な描画が正しく動いているので問題ないようです
138 :デフォルトの名無しさん2011/03/09(水) 14:11:51.71
確かlevel9_xで共有テクスチャやる場合フォーマットに制限があったはず
デバッグランタイムでわかりやすい警告出してきたはずだから見てみて

それとlevel9_xだと共有テクスチャの動作が怪しくてうまく使えた試しがない
パフォーマンスが許容できるならロックして描画終わるのを待つ方式をお勧めするよ
140 :デフォルトの名無しさん2011/03/09(水) 17:11:23.14
回答ありがとうございます

確かにKeyedMutexで無い共有であれば成功するようですが、同期が取れずに表示がおかしくなります

ロックして描画を待つと言うのはどうやるのでしょうか。普通のMutexで同期は取れないですよね?
141 :デフォルトの名無しさん2011/03/09(水) 19:06:22.49
>>140
http://archive.msdn.microsoft.com/D3D9ExDXGISharedSurf

片方のデバイスで描画が終わっていることさえわかればなんでもいいのよ
このサンプルは見通し悪いけどシングルスレッドの場合だけ見ると
LockRect or Mapでサーフェイスへの描画完了を待機してるだけ

そもそもD3D9(Ex)との共有ではIDXGIKeyedMutexが使えないわ
キーパラメータなんて付けて死ぬほどデッドロック起こしやすいわで
ちょっと仕様決めたやつに問い詰めたいくらい

Out-Processでの同期ぐらいにしか出番無いんじゃねえかな
149 :デフォルトの名無しさん2011/03/10(木) 12:52:48.00
>>141
具体的にありがとうございます!
サンプルは余計なこと色々してて分かりにくいですが、なんとなく理解出来ました。こういうことですよね?

・USAGE_DEFAULTを共有するけどこいつは直接ロックできない
・USAGE_DEFAULTからUSAGE_STAGINGにコピー後、STAGING側をREADロックすることで結果的にDEFAULTへの描画を待機
・STAGINGは同期用にのみ使用し、コピーされたデータやロックしたデータ事態に意味は無い

サンプルではバッファを複数回してるようですが、これはREADロック時に描画完了待機して非効率なため、
実際には数フレーム前に書かれたデータを取得するようになってる?
142 :デフォルトの名無しさん2011/03/09(水) 21:45:58.30
directx9だが
CreateDeviceをビルドして実行して、
作成されたウィンドウにマウスカーソルを乗せたままにしておくと、ビジー状態のマウスカーソルから元に戻らない
DXUTのEmptyProjectの方ではしっかり元に戻ったんだが
CreateDeviceのやり方とEmptyProjectのDXUTでは何が違うんだ?
145 :デフォルトの名無しさん2011/03/09(水) 23:01:37.55
ウィンドウクラス登録時にちゃんとカーソルを指定しないとそうなった気がする
146 :1422011/03/09(水) 23:32:47.70
>>145
解決した...ありがとうございました
147 :デフォルトの名無しさん2011/03/10(木) 05:17:04.42
深度って距離が反比例曲線になってますが直線にする方法はありますか?
148 :デフォルトの名無しさん2011/03/10(木) 09:28:02.76
>>147
Wバッファを使う。
ttp://msdn.microsoft.com/ja-jp/library/bb219616(v=VS.85).aspx

詳しくはD3DZB_USEWあたりでググるがよし。
150 :デフォルトの名無しさん2011/03/10(木) 23:06:39.00
3DRPGのゲームの主人公って何本ぐらいボーン仕込んでますか?
表情変えるのはテクスチャだけですか?
それとも最近なら口にボーンとか仕込んでやるんですか?
151 :デフォルトの名無しさん2011/03/11(金) 01:05:17.22
>>150
ゲ作成板でどうぞ
152 :デフォルトの名無しさん2011/03/11(金) 02:04:50.48
153 :デフォルトの名無しさん2011/03/12(土) 13:46:13.55
>>150
ボーンを仕込む
154 :デフォルトの名無しさん2011/03/12(土) 13:53:48.11
>>150
ローポリかハイポリかリアル系かデフォ系かで話がぜんぜん違う
初心者は顔のテクスチャ切り替えから入るといいかもな
155 :デフォルトの名無しさん2011/03/12(土) 14:31:45.84
>>150
ここム板だからあえて聞くけど、ボーンて呼ばれる物の処理イメージは浮かんでるかい?
それが前提にあれば上で言ってる奴の話も見えてくるぜ
どれの目的で、どんな内容ならどこまでやれそうか、とか
156 :デフォルトの名無しさん2011/03/13(日) 08:27:35.33
Xファイル形式から独自フォーマットを作りたいのですが、参考になるサイトなどはないでしょうか?
157 :デフォルトの名無しさん2011/03/13(日) 09:01:22.67
参考もなにもXファイルならD3DXで全部読み込んでくれるんだから
出来上がったメッシュう情報から必要なものを抜くだけでいいじゃない
165 :1562011/03/13(日) 17:53:03.07
>>157
読み込んだXファイルから個別に情報を引き出せるんですね!
今まで読み込んだ物をそのまま拡大・回転・移動しかしてませんでした。
ちょっとその辺を調べてみます。
166 :デフォルトの名無しさん2011/03/13(日) 18:11:27.24
>>165
情報の取り出し云々より「自分がやろうとしてることに、データの何の情報が必要なのか」が
判ってなければそっちから勉強することをオススメする。
169 :デフォルトの名無しさん2011/03/13(日) 19:51:46.41
>>166
とりあえず今のところはシンプルに正方形の箱を作って、
任意軸三つの相対位置に頂点を置いて、姿勢を自由に制御する事が目標ですね。

インデックスバッファを手打ちで作ったら、どうも上手い具合に面が張れなかったのと、
後々複雑なモデルを作る上でモデリングソフトに頼る必要があるので、
早い段階でXファイルから独自フォーマットのモデルデータを作って利用しようとしています。

ただ調べているうちにXファイル形式だとマルチテクスチャなど、
対応していないものもあるらしい事がわかったので、
独自フォーマットの方は最終的にモデリングソフトから直接はき出せるようにしたいです。
170 :デフォルトの名無しさん2011/03/13(日) 21:28:47.89
>>167
少なくとも独自形式の話では2回しか発言してないけどw
それに>>166で言ったことが理解できないなら3Dでマトモにゲームなんて作れないし、
モデリングソフト触れとかはなんの関係も無い話なんだけど。何を一人で興奮してるの?


>>169
手打ちデータで上手いこと箱だせないならちゃんと出せるまで理解しないとあとで苦しくなるよーたぶん。
もしその部分のコードとかあるなら貼って相談してみるとか。

>独自フォーマットの方は最終的にモデリングソフトから直接はき出せるようにしたいです。
ってなるとモデラーのプラグインの開発とかの話になっちゃうから、初めは基本何かのモデルデータを
パーサー通して独自形式にすればいいと思う。俺はXSIの.xsi形式から必要なデータだけ取り出して独自形式にしてるし。
読み込み→変換して吐き出し、はどの道独自形式なら自分でパーサー書く必要があるけど・・・。

158 :デフォルトの名無しさん2011/03/13(日) 13:16:45.78
こうしたほうが効率がいい、っていうのはいろいろあるけどソレ自分で考えて作るから
独自フォーマットなんだけど(・ω・)
163 :デフォルトの名無しさん2011/03/13(日) 16:47:04.00
と言うか、>>156 はそもそも全部他人のサイトコピーだけで作ってて、
中で扱ってるデータにしろ処理にしろ、意味わかってないから聞いてんじゃね

"独自の"フォーマットなんて、それこそ自分の都合で取っておきたい内容を
書いて読むだけなんだから、参考サイトもへったくれも無いよな

俺も自分の都合でファイル書き出してそれ読んで、とかテストコード用にしてるのあるけど
まさに言葉どおりの事しかしてない。 てか誰でもそうだろ。 独自の=自分の都合の フォーマットなんだから
そんな訳で >>158 に同意
159 :デフォルトの名無しさん2011/03/13(日) 13:30:13.72
この独自フォーマットの正しい使い方を教えてください
↑他人の知識は真面目にコピーしますが、自分で考える能力はありません
 何から何まで人から教えてもらいます。の意味
161 :デフォルトの名無しさん2011/03/13(日) 14:27:23.22
てか、コピーして使うだけなら
Xファイルをそのまま使うのとどこが違うんだ?
162 :デフォルトの名無しさん2011/03/13(日) 16:22:14.97
>>161が真理
164 :デフォルトの名無しさん2011/03/13(日) 16:50:31.84
保存しときたい情報なんて大抵決まってるもんな
それがわからないってんなら、3DCGの基礎からやり直し

あるいはファイル保存の方法がわからないってんなら
言語の基礎からやり直し
167 :デフォルトの名無しさん2011/03/13(日) 19:29:57.29
君も必死だな
いつもモデルデータの話がでるとモデリングソフトを触れって言う人かい?
172 :デフォルトの名無しさん2011/03/14(月) 01:17:26.00
そして俺は Blender側はPythonで書いたexporter
取り込み側はC++で普通にって連携をしているのです
173 :デフォルトの名無しさん2011/03/14(月) 02:18:25.92
デバッグ表示を作っているのですが,2Dで楕円を書きたいです.
みたところ,適当なプリミティブ描画関数が見当たらないのですが,
どのように描くべきでしょうか?
ラインリストで楕円ぽく線分を並べるような方法しかないでしょうか?
174 :デフォルトの名無しさん2011/03/14(月) 02:58:10.60
テクスチャbitmapにGDI関数Ellipseで、とかそういう事じゃないとしたら
線分並べて近似
175 :デフォルトの名無しさん2011/03/14(月) 07:54:50.45
円形のメッシュ読み込んで表示したらいいがな
178 :デフォルトの名無しさん2011/03/14(月) 20:34:11.36
>>174
日本人の方でないようですが,
Ellipse関数がGDIだけど使えるよ,ってことでしょうか?

>>175
3Dに慣れていないので,具体的な方法がわかりません...

デバッグ表示ですし,
とりあえず,慣れるまではGDI関数で実装してみます.
179 :デフォルトの名無しさん2011/03/14(月) 20:53:14.32
>>178
>日本人の方でないようですが,
>Ellipse関数がGDIだけど使えるよ,ってことでしょうか?

テクスチャ等のbitmapを対象としたGDI関数の Ellipse ならあるけど、
それはプリミティブ描画関数とやらじゃないから、画像として描画じゃなく
頂点並べてやりたいなら、CubeやSphereのような三次元プリミティブメッシュデータのような物を
欲しているなら、頂点並べて線分引いて円に近似した図形描けって事じゃね
わかんないなら素直に聞けよw
176 :デフォルトの名無しさん2011/03/14(月) 14:15:04.65
影用に近くからと遠くからの深度を2枚とってるんだけど
カメラの端のほうが伸びるから重ね合わせは難しいな
180 :デフォルトの名無しさん2011/03/14(月) 22:20:12.64
日本人じゃないワロタ

何のデバッグ表示をしたいのかわかんないからなんとも言えん。
文字列出したいだけならID3DXFontでいい。スプライトならID3DXSpriteでいいんじゃね?
181 :デフォルトの名無しさん2011/03/14(月) 22:56:12.49
3D機能とかまったく使わずにID3DXSpriteとかで
2Dゲームつくってて当たり判定のデバックとかで円を表示したいとかそんなとこじゃないの?

○かいた画像用意して拡大縮小変形してキャラと同じように描画しろよ
なんかいろいろ言っても聞く耳もたなさそうだし
182 :デフォルトの名無しさん2011/03/17(木) 16:12:40.69
DirectXSDKに付属しているツール、ユーティリティを再配布することは可能ですか?
例えば、
SDK付属コマンドラインプログラムを、
GUIで使うツールを自分で作った場合、
そのSDK付属ツールは再配布可能ですか?

183 :デフォルトの名無しさん2011/03/17(木) 16:15:19.81
ダメ
184 :デフォルトの名無しさん2011/03/17(木) 16:29:44.56
>>183
デスヨネー
185 :デフォルトの名無しさん2011/03/17(木) 16:39:00.95
では
「このフォルダに使うSDK付属ツールを自分でダウンロードしていれておいてね」
といった形は大丈夫ですか?
186 :デフォルトの名無しさん2011/03/17(木) 17:33:42.88
それならおk
187 :デフォルトの名無しさん2011/03/17(木) 18:04:50.82
>>186
ありがとうございます
188 :デフォルトの名無しさん2011/03/21(月) 17:12:54.45
すみません

今自分用のライブラリを作っているのですが
Direct3Dの一部でDirectShowの動画を描画するようにするには如何したらよいのでしょうか?
Direct3Dがあまり詳しくなくいくつか調べたのですが、あまり情報を引き出す事が出来ず少し悩んでいます
よろしかったらおしえていただけないでしょうか?
193 :デフォルトの名無しさん2011/03/21(月) 22:08:54.99
>>188
VMR9とかでぐぐったんさい
189 :デフォルトの名無しさん2011/03/21(月) 17:15:33.07
すみません 書き込んでから言葉足らずに気がつきました。

Direct3DのBeginSceneからEndSceneの間にテクスチャのように処理群を挟んで描画
などをできるようにしたいのですが
194 :デフォルトの名無しさん2011/03/23(水) 08:39:05.73
DirectXのゲーム画面を保存するアプリを作っててライブラリ化しようとしてるんだけど
CreateDeviceで自分のウィンドウハンドルを指定してデバイスを作らないといけないわけなんだけど
キャプチャするためのデバイスで描画しないからウィンドウハンドルが要らない
ライブラリ化してるから無駄な引数のやり取りをなるべく無くしたいんだけど
ウィンドウ無しでCreateDeviceって出来るんですかね?
試しに0にしてみたらWindow7ではいけて、XPでは失敗しました
たぶんWindows7は画面がすでにDirectXだからなのかと思ってますが
どうすればいいか分かりますか?
197 :デフォルトの名無しさん2011/03/23(水) 08:56:40.56
>>194
HWNDをキーにしてそのデバイスのコンテキスト(DC)が引っ張れて
そのDCからそのデバイスの、例えば画素は何ビット構成かとか情報が引ける訳だから
画面に描画しなくても普通に必要
195 :デフォルトの名無しさん2011/03/23(水) 08:42:27.53
ウィンドウハンドルは画面に描画する為に使う物じゃない
196 :デフォルトの名無しさん2011/03/23(水) 08:51:23.07
Windowsって内部の処理や扱いの1単位をウィンドウと表現していて、
それらの識別子として HWND を使っているので、画面に描画するしないに関わらず
どっちかって言うと一番最初に渡しておきたいパラメタじゃね
どうしても嫌ならデスクトップのHWND取り出して渡せばおk
198 :デフォルトの名無しさん2011/03/24(木) 05:14:07.14
DirectDrawのアクセラレータが利用できませんと表示されます。
自分のPCにグラボは入っていないので3Dが利用できないのは構わないのですが、Drawが利用できない原因がわかりません。
DirectXの診断ツールで、DirectDrawのテストでは正常に機能しています。
どうすればDirectDrawのアクセラレータを利用することができますか?よろしくお願いします。
199 :デフォルトの名無しさん2011/03/24(木) 06:06:16.89
DirectInputのジョイスティックでの操作がうまくいきません。
SDK(June2010)の中にあったダイアログボックスにコントローラの状態が表示されるサンプルは正常に動きました。
でも自作のプログラム(ダイアログボックスは使用しない)に組み込もうとずっと奮闘してるのですが、どうも上手くいきません。

「前田稔の超初心者のプログラミング入門」というサイトにある「Direct Inputのプログラム」→「コントローラを使う」で
紹介されていたプログラムも、ソースを少しもいじらずに起動できましたが、やはり動きません。

原因が思い当たる人はいないでしょうか?
200 :デフォルトの名無しさん2011/03/24(木) 06:51:46.84
>>199
ジョイスティック自体が壊れている可能性とか。

あとコンパイラーによってはSetDataFormat()関数で指定する奴を
自前で用意しなきゃいけない場合もあるらしい。
まぁ、その場合はエラー出るだろうけど。
201 :1992011/03/24(木) 07:05:36.13
>>200
JoyAdapterなどのジョイパッドのボタンにキーボードのキーを割り当てるソフトが使用可能なので、ジョイスティックはおそらく壊れてません。
XBOX360コントローラとPS2(変換アダプタ経由)コントローラの二つを使用していますが、どちらもダメでした。

SetDataFormatを行うときもエラーはでていません。
202 :デフォルトの名無しさん2011/03/24(木) 08:29:28.20
>>201
どう動かなくて、どう上手くいかないのか
エラーの状態とか、何が必要な値を返さないとか その辺詳細
205 :1992011/03/24(木) 08:52:10.06
>>202
ジョイパッドで何か入力しても何も起きません。
GetDeviceStateしたときに返される値がSUCCEEDEDだった場合に、ジョイパッドの状態(DIJOYSTATE2の構造体)を参照するようにしているのですが、
一応GetDeviceStateは成功しているらしく、ジョイパッドの状態を参照するところまではいっているようです。
ですが、実際にジョイパッドを操作しても内部の値は変化していない(0のまま変わらない)ようです。
203 :デフォルトの名無しさん2011/03/24(木) 08:41:08.71
動いてるサンプルと動いてない自作があるんだったら
両方を1行ずつデバック実行させればどこでおかしくなってるのかすぐ分かりそうなもんだが
206 :1992011/03/24(木) 09:06:00.15
>>203-204
確かに僕のプログラムは糞ですが、他の人が公開しているようなサンプルも全く動かないんです。
ようするに、一般的な描画系のウインドウを表示するプログラムでうまくいったものはありません。

SDKのサンプルは、ダイアログボックスのみが出てきて、に入力の値が表示されるというものだったので、そのまま利用できないかいろいろ試してみたのですが…
他の人のプログラムにあるように、WinMainのメッセージループ内から、状態の値を参照する関数を呼び出したりもしたのですが、結局同じ結果でした。
プログラムが原因なのか、また別の問題なのかもわからない状態で。
詳しい説明が全然できてないのがわかっています。でも、もしかしたら同じような状況を経験した人がいるかもしれないと思ってここで尋ねました。

もうちょいがんばってみます。
210 :デフォルトの名無しさん2011/03/25(金) 20:20:15.43
辺に独自実装すると>>206みたいない
「ぼくはまちがってないのにうごかない」みたいなことになるから
最初はD3DXなりDXUT使っとけ
イランところに壁を作らないで済む
204 :デフォルトの名無しさん2011/03/24(木) 08:45:19.36
SDKのサンプルが動いてるなら自作のプログラムが糞なだけだろw
思い当たるも何もそんなのエスパーじゃないとわからねーよ
207 :1992011/03/24(木) 11:31:53.03
解決しました。単純に記述不足でした。
迷惑をおかけしてほんとに申し訳ない。
208 :デフォルトの名無しさん2011/03/25(金) 13:16:19.66
勉強がてら簡単な描画エンジンみたいなもの作っていて
基本は素のDirect3DのAPI使って、デバイス依存する可能性が高そうな
テクスチャ作成処理とかD3DXCreateTextureを利用してたりするんだけど
D3DXとかDXUTって本格的なゲーム開発でも有効?
(DXUTはまだ触ったことないけど参考までに)
211 :デフォルトの名無しさん2011/03/25(金) 20:24:43.93
逆にハマって対処するのも知識が付く元だから、成果物を急がないならそれもアリ
壁って大事
212 :デフォルトの名無しさん2011/03/25(金) 22:29:32.29
自作アプリを半年ぶりくらいに動作させたところ、
マルチレンダリングターゲットに失敗していることに気がつきました。

以下のような状態です。
アプリをウィンドウモードで起動し、一度の描画で4枚のターゲットに
描画させているのですが、0番以外のターゲットへの描画に失敗しています。
(0番と同じ画像が、1〜3番にも描画されている状態)

尚、フルスクリーンモードでは正常に描画されています。
また、一旦フルスクリーンモードで起動した後に、ウィンドウモードで起動すると
描画に成功します。

プログラムに誤りがある可能性も考えられるので、以下のMRTサンプルソースを
ダウンロードして実験したところ、やはり失敗することを確認しています。
(こちらも、CreateDeviceに与えるパラメートをフルスクリーンに修正して
実行すると成功しています。)
ttp://marupeke296.com/DXG_No50_MultiPassRendering.html

原因としては、ウィンドウモードの場合において、何かしらの
必要な初期化や設定が抜けてるんじゃないかと思うのですが、わかりません。

同様の症状をご存知の方はおられませんか?

開発環境は以下のとおりです。
ハード:Geforce GTX460
OS:Windows XP
ソフト:DirectX SDK June2010、VisualStudio 2010
214 :デフォルトの名無しさん2011/03/26(土) 13:22:43.14
Direct3Dで質問です。
ウインドウモードで描画を行う際、ウインドウを左側に寄せて画面外に一部をはみ出させると、描画位置が意図せずずれてしまいます。
例えば画面左側半分を赤。右半分を青くしたとします。
この時にウインドウの左半分を、左画面外に出すと、ウインドウの中身が「赤く」なります。

どうやら描画座標が、ウインドウが画面からはみ出た分だけ右にズレるようです。

この現象は、初期化の際
D3DPRESENT_PARAMETERSのBackBufferWidth, BackBufferHeightに0を入れる。
もしくはウインドウのサイズとまったく同じ値を入れると起きないようです。

バックバッファのサイズを好きな値にしつつ、この「画面外に出すとずれる」現象を回避するにはどうしたらいいでしょうか?
よろしくお願いします。
215 :デフォルトの名無しさん2011/03/26(土) 14:51:14.52
>>214
ウィンドウのクライアント領域とバックバッファのサイズが異なると発生する問題
ウィンドウサイズの変更などに対応する場合はサイズ変更が発生する度にデバイスのリセットが必要
IDirect3DDevice9::Reset を調べると助けになるかも。
232 :2142011/03/27(日) 20:28:24.32
>>215
ありがとうございます。

・ウインドウサイズは可変
・バックバッファサイズはユーザーが決める。描画速度に直結するので多少汚くても小さめにした人がいるので
ということで、必ずしもウインドウとバックバッファのサイズを一致させることができないのですが、
ズレ現象自体を回避する方法は無いでしょうか?
(Resetは、ウインドウサイズが変わったらResetかけてバックバッファをウインドウサイズと同じにしちゃえってことですよね?)
216 :デフォルトの名無しさん2011/03/26(土) 20:41:30.23
DXUTGetElapsedTimeの最終フレーム以降の経過時間って何でしょうか?
前回呼び出しからの経過時間でしょうか?
217 :デフォルトの名無しさん2011/03/26(土) 22:21:16.45
>>216
前回呼び出しからの経過時間
ただしタイマー(CDXUTTimer)がストップ状態であればその間の経過時間は測られない
また、パフォーマンスカウンターがサポートされていなければ-1.0を返す。

DXUTのソース見た感じだとそう読めました。
218 :デフォルトの名無しさん2011/03/27(日) 00:43:20.67
>>217
ありがとうございます
219 :デフォルトの名無しさん2011/03/27(日) 06:09:08.89
ボリューム影についてわかりやすく書かれたサイトやサンプルあります?
SDK付属のやつは難しい
227 :デフォルトの名無しさん2011/03/27(日) 17:38:08.50
>>219
ステンシルシャドウ?
220 :デフォルトの名無しさん2011/03/27(日) 08:52:50.30
Direct3DDevice9 を2つ作っておいて、
片方のデバイスを通して作ったテクスチャを、
もう片方のデバイスで使う(レンダリングする)とかは
可能ですか??

片方のデバイスでNowLoading画面を出しながら、
別スレッドでもう片方のデバイスでテクスチャのロードとかを
したいのです。
222 :デフォルトの名無しさん2011/03/27(日) 09:48:06.25
・そんな用途で2つ作らない
・ローディングとDirectxは厳密には関係ない
223 :デフォルトの名無しさん2011/03/27(日) 10:24:31.82
NowLoading画面がアニメーションしてるとすると、
描画とロードが別スレッドで同時に発生するよね?
もちろんマルチスレッド可能に設定すればいいけど、
マニュアルにはパフォーマンスが落ちるとか書いてあるし。
どうすればいい?
224 :デフォルトの名無しさん2011/03/27(日) 10:40:36.77
NowLoadingは必ずしもスレッドを必要としない
なぜなら1フレームにバイト数指定してちょっとづつ読めばいいから
プログラミング初心者ならこっちをオススメする。

スレッドを使うならば、ロードスレッドはずっとロード、
メインはそれにお願いキューでも作ってお願いする。
出来上がったら受け取る。受け取ったらCreate〜FileInMemory系で
「メインスレッドで」作成する
D3DCREATE_MULTITHREADEDフラグあたり使えばDirectx9でもあれこれできるかもしれないが、
オススメはしない
きちんと排他制御が使いこなせない限りマルチスレッドなど使うべきではない
226 :デフォルトの名無しさん2011/03/27(日) 10:58:06.16
>>224
なるほど、やっぱりそういう沼くさいやり方になる訳ですね。
Create〜FileInMemory系は使ったことないので、色々試してみます。
ありがとうございました。
230 :デフォルトの名無しさん2011/03/27(日) 20:13:56.75
>>224
http://msdn.microsoft.com/ja-jp/library/bb172527%28v=vs.85%29.aspx
ここによると
---
1 つのスレッドで D3D API を呼び出しつつ、別のスレッドでウィンドウメッセージを処理する場合、デバイスの作成時はこのフラグを使用する必要があります。
---
とある。
大抵のゲームプログラムはメッセージスレッドと別に、ゲームスレッドを作るだろうから(だよな?)
オススメどうのの前に、大抵このフラグは使わなければいけないことになるのでは?
231 :デフォルトの名無しさん2011/03/27(日) 20:15:47.70
>>230は
D3DCREATE_MULTITHREADED
のことね
225 :デフォルトの名無しさん2011/03/27(日) 10:43:51.83
マルチスレッド設定によるパフォーマンスの低下が
自分のゲームで問題になるかどうか結論出してからまたいらっしゃい
228 :デフォルトの名無しさん2011/03/27(日) 18:10:14.96
俺は面倒臭いからNowLoadingは別アプリにする手を使った、超楽
フルスクリーンだと使えないのが難点
229 : [―{}@{}@{}-] デフォルトの名無しさん2011/03/27(日) 18:14:37.99
起動時に全部読み込んでおいてNowLoadingだけそれっぽく表示しとけばいいんだよ
233 :デフォルトの名無しさん2011/03/27(日) 20:35:09.58
たかだかゲームループ作るだけでスレッドなど必要ないだろう
必要だと思うなら使えばいいだけだが
234 :デフォルトの名無しさん2011/03/27(日) 20:59:46.14
>>233
お前のゲームはウインドウを移動させるとゲーム処理が止まるのか
235 :デフォルトの名無しさん2011/03/27(日) 21:04:58.45
>>234
たかだかそれだけのためにスレッドを生成するのか
236 :デフォルトの名無しさん2011/03/27(日) 21:35:50.55
>>235
え?うん。通信対戦とかだと致命的だしね
237 :デフォルトの名無しさん2011/03/27(日) 21:40:54.47
>>234
むしろ何も考えずに作った俺のアプリはとまんないんだけどw
238 :デフォルトの名無しさん2011/03/27(日) 21:54:32.39
んなことより、複数のスレッドでD3D APIを呼ぶ時に設定するもんだと思ってたのに、
メッセージスレッドと分けるだけで必要になるって事実にびっくりしろよ

俺はびっくりした
239 :デフォルトの名無しさん2011/03/27(日) 22:00:12.38
Audio や キー/JoyStick の入力は別スレッドだよな
直接起こす or APIに起こさせるの違いはおいといても
301 :2702011/03/27(日) 23:46:39.40
>>295
>描画が追いつかなくても、WM_KEYDOWN とか勝手に OS のメッセージキューに溜まっていってるじゃん

だから、それ、キューに、溜まって、いってるじゃん
>>239 を参照
240 :デフォルトの名無しさん2011/03/27(日) 22:16:07.63
オーディオはともかくキーやjoyStickも別スレッドなのは
何が目的?
241 :デフォルトの名無しさん2011/03/27(日) 22:21:18.04
意味ないよな
表示には所詮反映されないわけで素直にコマ落ちさせたほうがまだ納得できる
244 :デフォルトの名無しさん2011/03/27(日) 22:22:46.75
>>241
意味あるだろ
242 :デフォルトの名無しさん2011/03/27(日) 22:21:51.71
キューに溜めるだろ。特に JoyStick。
格ゲーとか作った事あればわかるかもしれないが、必須
243 :デフォルトの名無しさん2011/03/27(日) 22:22:05.27
むしろフレームの途中で入力状態が変わるのは矛盾も生じやすくない?
245 :デフォルトの名無しさん2011/03/27(日) 22:25:47.43
>>243
多分思い描いてる処理とか、作ろうと思う内容の違いかもしれないけど、
逆に描画他でコマ落ちしている時、入力を受け付けなかったらプレイヤーは違和感感じると思うぜ
247 :デフォルトの名無しさん2011/03/27(日) 22:29:41.75
>>245
例えば次のフレームまでに→←→→・・・って10回入力があったときは
どれが採用されんの?っていうかどう処理するつもりなの?
248 :デフォルトの名無しさん2011/03/27(日) 22:30:23.42
>>245
うーんなるほど。内容にもよるのかな
246 :デフォルトの名無しさん2011/03/27(日) 22:28:59.28
意味無い派の頭に浮かんでいる処理の様子
・画面にフィードバックが無い間に、入力でパラメータが変わったらおかしい

意味ある派の頭に浮かんでいる処理の様子
・入力が直接画面にフィードバックするロジックじゃなくて、入力が一旦キューに溜められて
 それを評価してパラメタに反映する。 パラメタへの反映はゲームループ内で行われる
 → 先行入力の基本処理

こういう事だと思われ
249 :デフォルトの名無しさん2011/03/27(日) 22:31:59.61
描画するときのフレームで押してるキーで十分だけどな
そうとうコマ落ちしてるもんでも作らない限り
格ゲー作ってる会社で働いてたことあったけど入力をキューに貯めるなんてことしてなかった
250 :デフォルトの名無しさん2011/03/27(日) 22:37:45.98
>>247
それが入力された前回からの差分タイムと、入力された内容をセットで記録して
FIFOで取得していくのさ。 例えば波動拳のコマンドがあったとき、必要な入力が ↓\→ の3ストロークだとして、
実際には 「必要な3入力が一定時間以内にあれば良い」(人の手はいい加減だから、余計な入力がある事も考慮する) だった時、
過去に遡って合計時間がその一定時間以内になるキー入力がそれらだったら、「これは波動拳が入力された」 と見なすロジック。
以前思いついて実装したら、かなり綺麗に反応した。 もちろんそれだけじゃなくても、違和感消えるぜ

てか、やってみればすぐわかるぜ

>>249
普通はライブラリ側で処理するように書くから見なかったんじゃね

251 :デフォルトの名無しさん2011/03/27(日) 22:40:23.29
>>250
ゲーム作ろうぜ!みたいなブログしか見てない人や
リアルタイム処理の実装をコアライブラリから書かない人なんかには
ピンと来ないと思われ

あと FIFOキューじゃなくて、FILOスタックじゃね
256 :デフォルトの名無しさん2011/03/27(日) 22:50:48.15
>>250
いや、さすがに1秒で60回近くも更新されてるんだから違和感なんてぜってーねーよ
だいたいどんな超人だよ

まあ、それはおいておいて2DRPGだとして主人公はどっちに進むんだ?
ってことを俺は聞きたいんだ
257 :デフォルトの名無しさん2011/03/27(日) 22:51:56.69
>>251
いやキュー。スタックにしてどうする
てか過去制限のあるFIFOのリングキュー
260 :デフォルトの名無しさん2011/03/27(日) 22:57:25.86
>>256
とにかく頭で考えないで実装してみなよ
たった1/60秒だろ?思い込みは危険だぜ

RPGでもなんでも、評価そのものは単に入力した順にされるだけだって
252 :デフォルトの名無しさん2011/03/27(日) 22:41:47.00
いや、お前ら…
PCのゲームでコマ落ちってなんの冗談だよ
フレームスキップが基本だろ…
通信対戦どうする気なんだよ。ヘボマシンの対戦相手が処理落ちすると、こっちもひっぱられて処理落ちするんか?w
254 :デフォルトの名無しさん2011/03/27(日) 22:45:07.51
描画と入力を同一スレッドでやるなんて、正気の沙汰じゃねーだろ
可変フレームレート描画が基本な時代に
255 :デフォルトの名無しさん2011/03/27(日) 22:49:23.85
普通は別スレッドが当たり前
簡単なゲームや、「つかいかたにゅうもん」 みたいなサイトだと
初心者がついてこれなくなる=主旨がズレていくから、説明されないけど
258 :デフォルトの名無しさん2011/03/27(日) 22:55:58.44
キューにためておくのもスレッドに分けなくても貯めておける、
というのはまたおかしな考え?その時に時間だって記録しておけるはずだし
259 :デフォルトの名無しさん2011/03/27(日) 22:56:10.83
問題は、メッセージスレッドやらキー入力スレッドやらを作ると、
D3DCREATE_MULTITHREADEDを使う必要があるのか?ってことなんだが

それ以外の2DRPGがどうのだのはスレ違い。そろそろ自重しろ
261 :デフォルトの名無しさん2011/03/27(日) 22:57:33.13
>>259
そんなん指定してみりゃいいじゃん
262 :デフォルトの名無しさん2011/03/27(日) 23:00:10.25
>>260
もしかして、話わかってない?

次のフレームまでに方向キーが色々押されたと
でも操作キャラが移動する方向は仮に4方向だとしてそのうち1方向しか選べないよな?
って状態だよ?

>>259
硬いこというな
DirectXのみのことだけしか話しちゃいけないってわけじゃなくて
ある程度そこから派生事項もあるからこそ盛り上がる掲示板だろ
263 :デフォルトの名無しさん2011/03/27(日) 23:00:40.78
グルーコードやコピペで済ます人や、アルゴリズム考える事に慣れていない初心者も多いから
こういった話は通じないと思います

あとここはAPIのスレであってロジックのスレじゃないです
264 :デフォルトの名無しさん2011/03/27(日) 23:03:19.31
>>262
いやむしろ話わかってないか?

キュー [↑→↓] こういう状態だとして、それは入力を溜めるスレッドの仕事で
評価する側はFIFOで先頭から必要に応じて、空になるまで取り出すだけだっての
先行入力って言えばわかるかい?

>>263
そうだったスマン

268 :デフォルトの名無しさん2011/03/27(日) 23:07:43.07
>>264
うっそ、すっげ複雑じゃん
↑↓→←なんて入ってたらどっち進んでいいのかわかんねーよw
トリガも取りにくくね?

どうせ必要なのは最期のだけだろ?w
269 :デフォルトの名無しさん2011/03/27(日) 23:11:48.64
>>267
一応世の中のゲームはFPS60入力が「通常」でな…。

>>268
次のフレームは上、その次のフレームは下、次は右、次は左。
描画に4フレかかったせいで、入力が4つ貯まってる状況なだけじゃんそれ
270 :デフォルトの名無しさん2011/03/27(日) 23:12:29.20
>>265
>入力キューが溜まっていたら、その間は描画はせずに、入力キューに基づいて高速処理するんだよ。

その入力キューを溜める仕事の話が上の別スレッドの話
勝手に誰か溜めてくれるのかい? てかキー入力ならOSが溜めてくれるけど

>>268
なんでこれでフクザツなんだよ。

>↑↓→←なんて入ってたらどっち進んでいいのかわかんねーよw
だから先頭から順に処理するだけだっての・・・
人がいち、にい、さんと数えながら入力するのと、固有処理は同じことだよ
理解できないなら別にいいから、人に説明させといて単芝生やすなksg
271 :2652011/03/27(日) 23:14:19.46
>>270
いや、俺は分かってるから…
272 :デフォルトの名無しさん2011/03/27(日) 23:14:21.86
>>269
いや、描画は1秒60回更新だとして
キー入力を1フレ1回じゃなくて反応した分キューに詰め込むって言ってるんだろ?
だから、次フレまでにたくさんのキー入力が入るって話してんじゃねぇの?
だから次のフレームは最期に押されたキーである←にいく・・・って俺は思ってるんだけど
273 :2702011/03/27(日) 23:16:07.90
>>271
あ、補足してくれただけだったか・・・
スマン勘違いした
274 :デフォルトの名無しさん2011/03/27(日) 23:16:38.68
>>270
ええ?処理すんの?
例えばドラクエなFC版の3とか4とか想像してくれ(あんまりかわんねーけど)
↑いっても↓いっても→でも←でも1歩1歩同じスピードで進むよな?
キー全部処理するってことありえねーだろ?
277 :2702011/03/27(日) 23:19:38.41
>>274
いやそういう事じゃないんだって・・・ スピードじゃなくて
もう先行入力について勉強でもしてくれ。
278 :2652011/03/27(日) 23:21:17.57
>>277
お前の言ってることを全面的に同意した上で言わせてくれ

先行入力っていう言いまわしが誤解生んでんだよ
282 :2702011/03/27(日) 23:32:16.96
>>279
↓こういう事。変な動きなんかする訳ないだろ
http://codepad.org/wiqqcXin

って、DirectXのスレで申し訳ないが


>>278
そうなのか
285 :2702011/03/27(日) 23:33:46.54
>>281
ヒント: >>282 のコードで言うと、mainから下の部分しか担当してなかったら、
取得される値がキューから来てるのかそうでないのか、見かけ上わからないから
265 :デフォルトの名無しさん2011/03/27(日) 23:04:37.12
わかったわかった…。ちょっとロジックの話にも付き合うよ

キー入力をスレッド化するのは、描画が処理落ちしてスキップされても、常に同じ感覚で波動拳を出すためだ。

入力をキューに貯めるってやつは、キー入力スレッド側の入力を貯めておいて
メインスレッド(描画もする)側で1フレ分ずつ処理して入力スレッドに追いつかせるって意味だ。
入力キューが溜まっていたら、その間は描画はせずに、入力キューに基づいて高速処理するんだよ。

入力キューは、通常1秒間に60個の入力が貯まる


284 :デフォルトの名無しさん2011/03/27(日) 23:33:15.56
>>265
1秒に60個のキー入力がたまる設計でもいいが、ダサイ設計だなと思う
266 :デフォルトの名無しさん2011/03/27(日) 23:05:58.18
てか、この辺のロジックは、必要な時に自分で思いついて実装するか
単にマイライブラリとして書いておけばいいだけなので、

理解出来ない人や不要な人は別にやらなくてもいいんだぜ
267 :デフォルトの名無しさん2011/03/27(日) 23:07:27.00
>入力キューは、通常1秒間に60個の入力が貯まる

通常じゃなくて、1秒間に60個の入力が貯まる実装なら貯まる、が正解
通常、じゃない
275 :デフォルトの名無しさん2011/03/27(日) 23:17:38.20
おまえら、格闘のコンボ入力と、RPG移動入力と、闘っても意味ないぞ。
仕様が違う
276 :2652011/03/27(日) 23:18:29.35
FPS60のゲームだと仮定する。

・キー入力は別スレッド派
描画が処理落ちした(例えば1回の描画に唐突に1秒かかってしまった!)としても、
入力スレッドは安定して動いているので、60個の入力が貯まる。
メインスレッド(←描画も行ってる)は、60個の入力を順番に処理して、遅れてしまった分を取り戻す。
(たいていこの間は描画がスキップされ、いわゆるフレームスキップ状態になる)

・キー入力は描画スレッドと同一でいいだろ派
描画が処理落ちするとゲームがスローになる
別にSTGとかならわりとある実装
279 :デフォルトの名無しさん2011/03/27(日) 23:26:09.95
>>276
えー、スレッド派だせぇじゃーん
絶対、変な動きするよー
280 :2652011/03/27(日) 23:28:56.11
>>279
だせえかどうかはともかく、格闘ゲームとかはこの実装がポピュラーだよ。
描画の負荷とまったく関係なく、常に同じ速度でゲームが進むんだから、一番優れてると思うけど?

「変な動き」とやらは絶対しないでしょ。描画の負荷が乱れても、ゲーム速度は一切変化しないんだから
281 :デフォルトの名無しさん2011/03/27(日) 23:31:17.70
>>280
嘘吐くなよw
俺、一応、格ゲー作ってる会社いたけどキー入力のキューなんて作ってなかったもん
マジで描画スレッドといっしょだったよ
286 :デフォルトの名無しさん2011/03/27(日) 23:34:18.44
>>281
それってコンシューマなんじゃないの?
フレーム速度が保証されてる環境ならキューは作らずに済ます場合がある
287 :2652011/03/27(日) 23:35:57.37
>>281
それ、アーケードかコンシューマの話でしょ
動作環境が定格じゃなかったり、通信対戦絡んだりしてるなら絶対フレームスキップ方式のはずだよ
289 :デフォルトの名無しさん2011/03/27(日) 23:36:49.81
>>286
まあ、そうかもな
どんだけ違いがあるか知らんけど
無駄なことやってると思うけどな

DirectXのチュートリアルで十分だぞ
あれといっしょの仕様で30万本近く売ってるから
308 :デフォルトの名無しさん2011/03/27(日) 23:52:03.47
ちなみに俺(>>289,293,299,300)は簡単なことしか言わないからな
311 :2652011/03/27(日) 23:53:59.34
>>308
理想論的には、どの環境でも処理落ちしないに限るけどさ
処理落ちした場合どうすんの?

入力キュー分けておけば、処理落ちする環境でも定格通りのスピードでゲーム進行できるんだから、
使わない手はないだろ
313 :デフォルトの名無しさん2011/03/27(日) 23:54:58.68
>>311
別にどうもしない
いいPC買ってね
283 :デフォルトの名無しさん2011/03/27(日) 23:32:47.61
フレームごとに処理をすれば良いRPGと
コマンド入力を受け付けなくちゃいけない格ゲーを同列にかたっちゃいかんな


後者の場合はコマンドを評価するためのバッファが必要で
且つ、フレーム速度によって入力の難易度が変わってはいけない
あとは分かるよね?
288 :2702011/03/27(日) 23:36:28.91
描画側を別スレッドで行っているなら、入力側でキュー作らない可能性はあるよな
294 :2652011/03/27(日) 23:41:45.56
>>288
描画を別スレッドにする可能性はあるな…
だが、キーバッファ式よりよっぽどだせえし、描画に必要な情報を全部コピーする必要があるから、速度ガタ落ちだよなw
291 :2652011/03/27(日) 23:38:55.91
本当にゲーム会社で格ゲー作ってるようなプログラマが、
2chスレで「キーバッファ式がだせえ」とか「30万本近く売ってるから」とか書き込むわけないわなw

そもそも、キーバッファ式だせえ言ったら、Windowsのメッセージキューシステム全否定じゃねーかw
293 :デフォルトの名無しさん2011/03/27(日) 23:41:33.16
>>291
そんな大層なことしてると思ってるのか?w
ぶっちゃけるとSDKのコードをそのまま貼った、組んですらいない

多分10分ぐらいでなんの疑問も持たずに終わらせました
これが現場のリアルな話ですw
297 :デフォルトの名無しさん2011/03/27(日) 23:42:21.56
>>291
1秒に60個て言うことは、→押した状態が数個もたまるんだろw ダサイ意外ないなw
303 :デフォルトの名無しさん2011/03/27(日) 23:48:15.09
>>297
お前、自分に技術が無くて理解できないから意地になってるだろw
295 :デフォルトの名無しさん2011/03/27(日) 23:42:09.98
入力に別スレッドとか立ててないなあ

描画が追いつかなくても、WM_KEYDOWN とか勝手に OS のメッセージキューに溜まっていってるじゃん
メッセージ処理(全ての入力を受け取れる) → フレーム処理(全ての入力を使う) → 描画
これで問題ないことない?何か勘違いしてる?
298 :2652011/03/27(日) 23:43:55.86
>>295
描画に1秒がかかったら(爆発エフェクトが超重なったとか、そういう瞬間的なものでな)
1秒分の入力がメッセージキューにたまるんだぞ?

WM_KEYDOWNには「いつ」押されたかの情報は入ってないから、1秒の前半に押されたのか、後半に押されたのかすらわからん
300 :デフォルトの名無しさん2011/03/27(日) 23:45:16.46
(1秒もかかっちゃうのが常時続いてる状態をなんとかする方向は考えないのかな・・・?)
302 :2652011/03/27(日) 23:46:55.52
相手の爆弾が爆発した瞬間、1秒棒立ちになるゲームなんてゲームにならねーよ…
瞬間的なものって書いてあるのに、なんで常時になってんだよ
305 :デフォルトの名無しさん2011/03/27(日) 23:48:53.56
>>302
だから、棒立ちになるのを回避するために 60/1の設計を選んだ、それがダサイい
306 :2652011/03/27(日) 23:49:47.27
>>305
すまん、名前つけてくれ
あと、305で言っていることの意味が分からんのだがもう少しまともにレス書いてくれんか
314 :デフォルトの名無しさん2011/03/27(日) 23:56:40.71
60キー入力/1sec
>>306
キー入力を別スレッドにするかどうかは、「その時の要求仕様により」としか答えられないが。
「1秒にキー入力が60個キューに」は例えば「→」押しっぱなしで、それが60個たまるという意味なのか?
まずこれ答えてくれ。
316 :2652011/03/27(日) 23:58:32.85
>>313
プログラマとしてあまりにダサくて閉口するわ

>>314
その通りだよ。大抵入力は32bitもあれば十分だから、unsigned intのdequeだな
ボタン押して無くても「押してない」っていう情報が貯まるよ
318 :デフォルトの名無しさん2011/03/28(月) 00:00:29.54
>>316
やっぱりか、他の方法は思いつかなかったのか?
320 :2702011/03/28(月) 00:02:49.86
>>316
ちなみに俺は上のcodepadのコードでは端折ってるが、
状態とタイムの記録をしていく格好なので、同じ情報が続く場合は溜めない
322 :2652011/03/28(月) 00:05:06.10
>>320
別に1フレ4バイトくらいだし、そこケチる必要なくね?
アナログスティック使ってるともうちょい容量食うけど
324 :2702011/03/28(月) 00:13:11.35
>>322
ケチるというか・・・ 格ゲな処理イメージで申し訳ないだけど
状態変遷を追うのがうざったいからさ。

 [nn.mm: 上ON] [nn.mm: 右ON] [nn.mm: 上OFF] [nn.mm: 下ON] [nn.mm:右OFF]

とかなら追いやすいけど、これが

 [上ON] [上ON] [上ON] [上ON] [上ON] [上ON] (中略) [右ON] [右ON] [右ON] (後略)

とかだとウザすぎるのさ、ってだけ
325 :2652011/03/28(月) 00:17:42.46
>>324
なるほどね
格闘ゲームでの、技コマンド解析とは相性良さそうだね

と、ロジックの話はこんなところでいいよな
馬鹿に教えようと思ったら、釣りだったのは残念だが、
釣りに見せかけて情報を引き出したかった初心者プログラマだったと思おう

別にム板は素直に聞けば応えてくれる連中ばっかなんだけどなー…
304 :デフォルトの名無しさん2011/03/27(日) 23:48:33.87
だから問題にはならねぇだろw
309 :デフォルトの名無しさん2011/03/27(日) 23:52:13.80
>>304
問題にならないもの(1人用ゲーム)もあれば、問題になるもの(通信対戦)もある
好きに選択してろよ
310 :デフォルトの名無しさん2011/03/27(日) 23:53:12.45
>>309
さっきからあえてスルーしてたけど
通信云々はまったく関係ないと思うんだよねw
312 :デフォルトの名無しさん2011/03/27(日) 23:54:57.44
>>310
他の誰かと同期をとるゲームで、描画の処理落ちで入力まで処理落ちしたらゲームにならねーだろ
いや、低スペックでやるのが悪いって切り捨てるなら、それでもいいけどさ
317 :デフォルトの名無しさん2011/03/27(日) 23:59:35.12
>>312
推奨環境出してるのに低スペックでやるのが悪いんじゃん
そんなもんサポートするのに燃やした工数誰が金出すの?

ま、プロの実装なんてこんなもんよw
いい意味でも悪い意味でも金になんないことはしないのが商売なんだよきっとw
315 :2702011/03/27(日) 23:57:41.50
なんか簡単な話のはずだったのに
何で感情的な反対とか出るのかわからん

とりあえずキー入力の件は、上のコード見せた時点で伝わったらしく、
意味不明な反応が無くなって良かった
319 :2652011/03/28(月) 00:01:35.95
プロのふりはもういいから…
5分でできる実装をしない理由もないし、カプコンのMTフレームワークとかもフレームスキップ式だっつーの…
可変フレームレートなめんな
323 :デフォルトの名無しさん2011/03/28(月) 00:13:06.01
自称プロとか久々に見たな
春休みだからか
331 :デフォルトの名無しさん2011/03/28(月) 00:42:21.50
>>323
実はかなり前の話でいまはもうとっくに辞めてるんだけどねw
326 :2702011/03/28(月) 00:19:49.24
>釣りに見せかけて情報を引き出したかった初心者プログラマ
これだったらマジで金品要求するわ
327 :デフォルトの名無しさん2011/03/28(月) 00:22:55.10
DirectX初心者です。(スレッドに関してはめっきり)
上で盛り上がってますが私のプログラムもそういえばドラッグ中動かない仕様だな〜
と思いながら読んでましたが理解できる部分半分、よく分からない部分も多々。

そんな訳で皆様のお話についていけるような知識を得たいのですが
DirectX(主にゲームプログラミング)におけるマルチスレッドの利用について
参考になるサイトや書籍を知ってたら教えて下さい、お願いしますm(_ _ )m
328 :デフォルトの名無しさん2011/03/28(月) 00:25:45.46
>>327
入力スレッド でぐぐったら、ちょうどよさげなサイトヒットしたよ
329 :デフォルトの名無しさん2011/03/28(月) 00:28:06.43
>>327
ゲームプログラミングに限らない話になるから、マルチスレッドについては
それ単独で処理勉強してくれ
このスレ的に言えば、どの関数やクラスを利用する時気をつけなければならないか、って話になると思う
それ以外は本来スレチ
330 :デフォルトの名無しさん2011/03/28(月) 00:38:00.22
>error C1083: include ファイルを開けません。'd3dx9.h': No such file or directory
が出ます。しかし自分で調べてフォルダへのパスはちゃんと入力したのです
(証拠画像)http://iup.2ch-library.com/i/i0272246-1301240129.jpg

実行可能ファイルは
C:\Program Files\Microsoft DirectX SDK %28August 2006%29\Utilities\Bin\x86
ライブラリディレクトリは
C:\Program Files\Microsoft DirectX SDK %28August 2006%29\Lib\x86

C/C++の全般 追加のインクルードディレクトリにも
C:\Program Files\Microsoft DirectX SDK %28August 2006%29\Include
を入れました

なにかインクルードできない原因がありますか?
332 :デフォルトの名無しさん2011/03/28(月) 01:06:36.15
>>330
よくわからんけど
リンカーの追加の依存ファイルの項目の設定はいけてんのか?
(まあ、出てるエラーが違うかなぁ・・・)
333 :デフォルトの名無しさん2011/03/28(月) 01:24:55.04
出力を読み返してみたところ
1>TRACKER : error TRK0005:
というエラーが ありました、これが原因かもしれません少し調べてきます。
上の情報だけではエラーは無いと思うのです、いくら調べてもミスは見つからないからです。
334 :デフォルトの名無しさん2011/03/28(月) 01:46:13.87
あんま関係ないけど
SDKをインストールしたときに環境変数DXSDK_DIRが設定されてるはずなのに
なんでフルパスでいれてるんだろう?不便じゃないのか?
335 :デフォルトの名無しさん2011/03/29(火) 19:55:27.12
少し外れた質問かもしれませんが
ID3DXEffectオブジェクトを持ったクラスを作り、そのクラスの実体を作って行くと、5つ作ったところで5つ目のクラスのID3DXEffectオブジェクトで「ヒープが壊れている」とエラーが出ます。
そのクラスオブジェクトを作る順番を入れ替えても5つ目でエラーになるので、用意したメモリ領域以上に実体を入れようとしているのが原因ではと思っています。
でもクラスオブジェクトを作るごとにメモリ領域は新しく用意されるはずですよね?どうしてでしょうか。
336 :デフォルトの名無しさん2011/03/29(火) 21:12:41.71
まずID3DXEffectを取り除いて同じエラーが出るのか確認するんだ
話はそれからだ。原因の絞込みはデバッグの基本だぞ
337 :デフォルトの名無しさん2011/03/29(火) 21:30:47.57
ヒープが壊れている系は、まったく関係ない場所でおきた破壊がまったく関係ないところで出ることが多い

ID3DXEffectを使わずにアプリを正常終了させて、Debug出力にリークが無いか調べてみ
338 :デフォルトの名無しさん2011/03/29(火) 22:26:02.24
DirectXに限らずWindows系で一番嫌なバグだな
特にGUIのDCまわり、お前、解放する必要あんのかどうすんのか言えよ
339 :デフォルトの名無しさん2011/03/29(火) 23:06:58.17
>>338
開放しなくてもとりあえずシーンとしてるのが意地悪いよな
340 :デフォルトの名無しさん2011/03/29(火) 23:14:30.00
ヒープが壊れたって怒られるのは、
mallocで確保したのを二重にfreeで解放してた
ってパターンも多い
341 :3352011/03/30(水) 14:13:46.02
頂点定義でカラーを含めてたのにHLSL内でカラーを扱ってなかったのが問題だったっぽい
頂点定義関係カラーを消したら直った
342 :デフォルトの名無しさん2011/03/31(木) 18:02:42.48
質問なんですが、DirectXを使ってプログラミングするツールとコンソールは
何なんですか?どんな環境でプログラミングするんですか?

344 :デフォルトの名無しさん2011/03/31(木) 18:20:58.87
>>342
標準的にはVisual C++
343 :デフォルトの名無しさん2011/03/31(木) 18:16:54.22
どういう質問?
もっと幼稚な感じで説明されたほうがわかりやすいかも
345 :デフォルトの名無しさん2011/03/31(木) 18:24:00.81
>>343
環境。
コンパイラとかエディターとかターミナルなど。

後DirectXライブラリは皆さん使ってますか?
346 :デフォルトの名無しさん2011/03/31(木) 18:33:26.47
自分の場合、C++エディタはVisual C++2008ExpressEditionを使っています商用に使わなければ無料です。現行のバージョンは2010ですが設定が面倒。
自分は一般的な3Dゲームのようなものを作っていますので、Visual C++でウィンドウズAPIを使ってアプリケーションをつくっています。
ライブラリは公式のDirectXSDKのもので、誰かが自作したようなライブラリは使っていません。
358 :デフォルトの名無しさん2011/04/01(金) 04:44:04.98
>>346
ExpressEditionでも商用利用可能。
347 :デフォルトの名無しさん2011/03/31(木) 18:42:24.68
俺はMicrosoft Visual Studio 2008にDirectXSDK(June2010)のサンプルにあるEmptyprojectとかいうのに入ってるDXUTを利用させてもらってる。
最近になってDXUTナシで作ることに挑戦し始めたが。
でも初心者なら適当なCD付きの本を買って環境作ったほうがいいんじゃね。
348 :デフォルトの名無しさん2011/03/31(木) 18:47:01.21
>>346>>347
ありがとうございます。

初心者はDirectXそのものを自在に扱うのは限りなく不可能に近いと思ってます。
350 :デフォルトの名無しさん2011/03/31(木) 22:05:45.96
>>348
>初心者はDirectXそのものを自在に扱うのは限りなく不可能に近いと思ってます。

それ以前に言語自体、またDirectX以前にwin32自体意味を理解して
自分が思ったコードを書けないと話にならない。DirectXは良くも悪くもただのライブラリです

352 :デフォルトの名無しさん2011/03/31(木) 22:36:53.42
何かを作る、のが先にあって、それをわかってて
その上で例えばいくつかの手段を考えて、その中から例えば
DirectX を選択して描画や入力を任せてみる、みたいな順序だから

>>348 の言う 「初心者」 って言葉の中に、「プログラミング自体の」 とか、まして 「言語自体の」 とか
「Windows上で動くプログラミング自体の」 みたいな意味合いが含まれてたら、不可能で当たり前
349 :デフォルトの名無しさん2011/03/31(木) 18:57:26.70
サンプルからコピペしてやっていけば簡単だし覚えやすいよ
「○×つくろー」ってサイトに初歩的なことから書いてあるからわかりやすい
351 :デフォルトの名無しさん2011/03/31(木) 22:23:11.15
まぁ、C++ & Win32API で2Dゲームをある程度自由に作れるくらいの
レベルじゃないときつい。DirectXは。
353 :デフォルトの名無しさん2011/03/31(木) 23:01:17.00
せめて「Windows自体の」とか「パソコン自体の」初心者でないことを祈る
354 :デフォルトの名無しさん2011/03/31(木) 23:12:27.23
球やグリッドなどの基本形状をラインリストで作りたいんですけどアルゴリズム教えてください
355 :デフォルトの名無しさん2011/04/01(金) 00:00:31.99
せめてグリッドくらいは自分の頭使って下さいよ・・・
356 :デフォルトの名無しさん2011/04/01(金) 01:59:28.67
>>355
グリッドはなんとかできたんですが球はどうしたらよいでしょうか・・・
363 :デフォルトの名無しさん2011/04/01(金) 12:53:12.72
>>356
デバッグ用描画だったら適当にsin cos使って頂点を一回りすれば
それなりに見えね?
モデリングソフトが出力する頂点をベタ打ちしたり、
D3DXCreateSphereとかつかってメッシュ描画しちゃうのでもいいが
レンダリングステートで線の三角系描画設定できるし
365 :デフォルトの名無しさん2011/04/01(金) 16:24:57.26
>>363
ありがとうやってみます
359 :デフォルトの名無しさん2011/04/01(金) 08:13:57.94
DirectXってWin32APIのAPIライブラリだから、Wind32APIを参照する必要ってないんじゃないですか?

361 :デフォルトの名無しさん2011/04/01(金) 09:16:14.85
>>359-360
流石にこれは釣りとか冗談だよね
362 :デフォルトの名無しさん2011/04/01(金) 11:01:45.80
>>359-360
釣り針でっかいから食いついとくけど、君はDirectXやWin32APIの勉強の前に言語の勉強が必要で、
さらに言語の勉強の前に用語の勉強から始めないといけない。

あと無駄に改行するな。
364 :デフォルトの名無しさん2011/04/01(金) 15:24:55.35
>>362
イメージとしては

DirectXもWin32APIもマイクロソフト関連のAPIであることは間違いないでしょ?
367 :デフォルトの名無しさん2011/04/01(金) 19:39:43.58
>>364

368 :デフォルトの名無しさん2011/04/01(金) 20:20:09.30
>>364
こんにちわんとこんばんわにとありがとうさぎの括りがいっしょでしょっていってるようにきこえる。
WinAPIはWinodwsの基本的な部分を開発するAPI。
DirectXはWindwsの上のレイヤーであるマルチメディア部分を開発するAPI
レイヤー的にイコールになることは無いよ。
360 :デフォルトの名無しさん2011/04/01(金) 08:24:02.30
DirectX=WinAPIのAPI??自分でも何言ってるのかわからん。
間違ってたらすいません・・・




366 :デフォルトの名無しさん2011/04/01(金) 16:36:13.26
適当にwebで見つけた古いコードを弄っててプログラム起動したらハードがサポートしてなくて凹んだ。
(インデクス付き頂点ブレンドって時代遅れなのね、ソフトウェア処理では動いたけど)

ふと、ゲームの動作環境で「グラフィック:GeForce○○以上推奨」とか書かれるけど
それって、速度的なパフォーマンスやサポートするシェーダバージョン以外にも
この世代のGPUはこの機能が使えるから〜とか、そういった知識も必要なのかと思ったのですが
グラフィックカードによりけりな部分の知識を学べる良いサイトや書籍があれば教えて欲しいです。
370 :デフォルトの名無しさん2011/04/01(金) 21:06:59.90
>>366
俺もあまり詳しくないから違ってたらすいません

3D処理とかの行列変換出来るか否かでハードウェアT&Lに依存するんじゃないだろうか
でもこれに対応してないって10年以上前の化石PCとかだよね・・・

グラボの性能で○○以上って書いてあるのは、単純に同時に描画するポリゴン数とかテクスチャ数?
から換算してるんじゃないだろうか
書籍やサイトについては分からないです、すいません
371 :デフォルトの名無しさん2011/04/01(金) 21:18:26.76
オンボードだと5年前でもハードウェアTnLは微妙だったりする
372 :デフォルトの名無しさん2011/04/01(金) 21:53:53.47
DirectX参照しながらプログラミング組みたいんですが
基本C言語でOKですか?

DirectXはC++のほうが相性良かったりしますか?
373 :デフォルトの名無しさん2011/04/01(金) 21:57:52.25
>>372
グローバル変数の地獄に落ちない器量があるならどっちでもいいよ。
374 :デフォルトの名無しさん2011/04/01(金) 22:00:11.94
>>373
器量が無い人向けはC?
375 :デフォルトの名無しさん2011/04/01(金) 22:09:46.08
>>374
覚えることは多いけどC++。
変数、関数、クラスと基本構文ができればいける。目安としては、1クラス1機能。
粒度は自分に合わせるといいよ。
376 :デフォルトの名無しさん2011/04/01(金) 22:14:22.25
やっぱりC言語のポインタって本当に精密なんだな。
378 :デフォルトの名無しさん2011/04/01(金) 22:44:25.55
>>376
ポインタはとある地点を指しててそれのアクセス方法を提供するだけなんだけど、わからない人にはほんとにわからないらしい。
377 :デフォルトの名無しさん2011/04/01(金) 22:17:53.51
ID3DXEffectのSetMatrixで設定する
非転置行列てなんぞ。
転置行列は判るが。ワールドマトリクスとか転置せずにつかえよってことなだけ?
381 :デフォルトの名無しさん2011/04/01(金) 23:28:14.86
>>377
多分だけどHLSLでなくアセンブラ使う場合は転置する必要があったけど
HLSLで扱う場合はその必要がなくなったから「非転置」って言い方してるんじゃないかな?

丁度シェーダ本のアセンブラ部分読んでて、シェーダに行列渡す時はDirectX側とシェーダ側で
行列の扱いが異なるから転置が必要、みたいな記述があったんで
SetMatrix使えば勝手に転置してくれるって感じなのかな?
間違ってたら誰か訂正よろ。
382 :デフォルトの名無しさん2011/04/01(金) 23:59:02.57
>>381
むしろそんなの可能性もあったのかw<アセンブラで転置の必要あったかも
サンプル見てもカメラからとってきたのをそのまま使ってるから転置しない行列ってことでいいんだろうけど
とりあえずそれで納得しとく。ありがとう



383 :デフォルトの名無しさん2011/04/02(土) 00:45:04.79
ポインタでつまづく奴は
ポインタ=アドレスだと勘違いしてる奴だと思う
385 :デフォルトの名無しさん2011/04/02(土) 08:16:00.08
>>383
ん? 違うのかい? c#とか? ハンドル?
386 :デフォルトの名無しさん2011/04/02(土) 08:25:21.30
>>385
×アドレス
○アドレスを格納する変数
って意味だろ
384 :デフォルトの名無しさん2011/04/02(土) 04:17:48.37
適当に*つけて宣言してエラー起こす俺にはハイレベルすぎる話だぜ
387 :デフォルトの名無しさん2011/04/02(土) 08:34:22.55
大したスキルもないときにそんな無駄なこと考えちゃうからだろうな
*の数と&をテキトーに合わせておく・・・程度に考えてるやつのがうまく理解する
388 :デフォルトの名無しさん2011/04/02(土) 08:41:22.76
流石に>>387は無いわ
389 :デフォルトの名無しさん2011/04/02(土) 08:44:48.56
>>388
仕組みなんて時間がたてば勝手に理解するだろ
問題はとりあえず組めること
390 :デフォルトの名無しさん2011/04/02(土) 11:37:15.78
>>387
イメージで理解できたら、だいたい理屈と整合性取れてるんだよな。
理屈ばかり追い求めたら頭がパンクする。しかも下手したら俺論理的
で頭良いやべーwwwってなるからな。

そんな俺はDirectXとWindowsAPIの区別もつかない初心者。
391 :デフォルトの名無しさん2011/04/02(土) 16:34:49.72
>>390
多機種の DirectX 使わない人にとっては Win32 API と同じに見えるのでいいと思うよ。
OpenGL がもしも Win32 でしか使われなかったら 境目が無くなると思うし。
392 :デフォルトの名無しさん2011/04/02(土) 17:30:02.71
座標変換済み頂点(RHW)で構成した面に、テクスチャを完全に貼るにはどうしたらいいのですか?
未変換の頂点で構成した面では完全に貼れるのに・・・
393 :デフォルトの名無しさん2011/04/02(土) 17:45:21.53
>>387
これはおれもそうだと思う。
さすがに数だけって訳にはいかないけど、最初は深く考えすぎても
だめ。最初はとりあえず動くように書ければ、経験重ねて自然に
覚えれたって感じだったな。

>>392
完全に貼るってどういうこと?
DirectXだと座標を-0.5fしないと合わないとかはあるけど。
394 :デフォルトの名無しさん2011/04/02(土) 17:54:46.40
OsによってDirectXの更新の古さとかありますか?
7は最新のDirectXですか?

後ActiveXはDirectXと同じようなもの?
395 :デフォルトの名無しさん2011/04/02(土) 18:36:23.92
>>394
MSのOSさぽーと期限が切れたOSのDXは更新されない。
DX7は最新ではありません。Win7のDXは11で今のとこ最新。
ActiveXはCOM利用形態のひとつ。
たとえばIEに外から機能追加したりするときにActiveXを使う。
396 :デフォルトの名無しさん2011/04/02(土) 18:39:40.26
ユーザーが更新しようとしなければ古いままの状態の事もある。ってのも追加していい?
397 :デフォルトの名無しさん2011/04/02(土) 21:04:02.86
XAudio2は同時に音を鳴らそうとしたときに、数の制限はありますか?
たとえばn個のソースボイスを同時にStartしたときに、x個しか音が出ないとか
398 :デフォルトの名無しさん2011/04/02(土) 23:41:04.09
DirectXでアニメーション作れますか?
400 :デフォルトの名無しさん2011/04/03(日) 00:01:07.31
>>398
作れます
399 :デフォルトの名無しさん2011/04/02(土) 23:45:45.57
シェーダーにプログラムから渡せる変数って何個まで?
シェーダーは2.0です
401 :デフォルトの名無しさん2011/04/03(日) 00:10:50.65
>>399
浮動小数点型定数レジスタは
ここを見る限り、最低4Dベクトル*256個
これはD3DCAPS9.MaxVertexShaderConstと等しくなると書いてある
http://msdn.microsoft.com/ja-jp/library/bb172961%28v=VS.85%29.aspx
402 :デフォルトの名無しさん2011/04/04(月) 10:05:55.65
アプリ製作の環境って皆さん何使ってますか?
403 :デフォルトの名無しさん2011/04/04(月) 12:47:57.58
>>402
VC++6.0&DirectX SDK9.0(Oct2004)使ってるよ^^v
405 :デフォルトの名無しさん2011/04/05(火) 14:02:24.24
今まで使ってた環境が古いので新しくVC++2010Expressと
日本語ドキュメントがあるらしいAug2009のSDKを入れようと思ってるのですが
古い環境を残しておく利点って何かあるでしょうか?
>>403 みたいなのだと古い環境で動くアプリケーションも作れるとか?
406 :デフォルトの名無しさん2011/04/05(火) 14:25:17.83
August 2009のSDKはVS2010をサポートしてないのをわかった上でやるなら止めはしない
408 :デフォルトの名無しさん2011/04/05(火) 17:13:03.89
いま最新のDirectX SDKってどれですか?
409 :デフォルトの名無しさん2011/04/05(火) 22:13:50.64
>>405
新しいSDKにするとDirectMusicが使えないとかじゃないかな
Microsoft DirectX SDK (February 2007) を最後に消えたんだと思う
俺はVS2010 と SDK2007 使ってる

>>408
Microsoft DirectX SDK (June 2010)
じゃないのかな?違ったらすいまそん


初めはVS2010 と SDK2010 使ってて入門書見ながら楽しんでたら
dmusui.h(スペル適当)がありません、どっかのサイトからゲットしたら今度は○○.hがありません、それもいれたら
今度は意味不明なエラー
じゃ別の手段と思いググったら「PlayMusic( ) を使いましょう」 う〜ん、これなんか違う・・・・・
結局SDK2007入れて解決させてしまった
そして今さっきこのスレでXAudio2の存在を知って憂鬱になっているところです
410 :デフォルトの名無しさん2011/04/05(火) 22:27:35.06
なんかいろいろおかしいぞ

DirectMusicが消えたのはNovember 2007
( ttp://www.microsoft.com/downloads/en/details.aspx?FamilyID=529f03be-1339-48c4-bd5a-8506e5acf571 )

PlayMusicなんてAPIはないしXAudio2はDirectMusicの代わりになるような物でもない
411 :デフォルトの名無しさん2011/04/05(火) 22:51:38.11
XAudio2 は強いて言えば DirectSound の代替
さらに言えば、XBOX(XNA)用が主目的で、Windows用は追随統合されただけ
412 :デフォルトの名無しさん2011/04/05(火) 22:59:06.35
MicrosoftとしてはXboxの規格で統一したいんだろうけど
規格難民が出るのはいただけない
413 :デフォルトの名無しさん2011/04/05(火) 22:59:16.07
多分PlayMusicってのはDirectXじゃなくてDxLibの関数
DxLibはどこかの個人が作った、初心者向けの砂糖で包んだラッパーライブラリ
414 :デフォルトの名無しさん2011/04/05(火) 23:51:26.51
>>410
またたくさんの嘘を付いてしまいましたすいません

>>413
それだそれ、ゲームプログラミングやってみたくてあちこち手だして
DXライブラリ の方と記憶がごっちゃになっていたようだ、すいません


でもXAudio2ってのがXBOX用でDirectMusicの変わりにならないとすると
最新のDirectX SDK で音鳴らす時どうしたらええの?

dmusici.h dmplugin.h 追加して 「うまくいかね!」
って諦めないで頑張ってあっちゃこっちゃいじってDirectMusicを使い続けるのがセオリーなの?
DirectSound ってのはSDK (June 2010)にあってそっちを使うのが普通?

何が言いたいかと言いますと
これから勉強してやっていくにあたって音を鳴らすのにどれを使っていくのが無難?
415 :デフォルトの名無しさん2011/04/06(水) 00:13:34.53
>>414
だからDirectSoundか、XAudio2。
ただしXAudio2については、ググっても日本語の記事はSDKのサンプル以上の情報はほぼ無い
= (入門者が書いた入門記事 = HelloWorld状態の記事) くらいしか無いので、
SDKのSample頼みか、あるいは眉にツバつけながらMSDN追うか、あるいは海外の記事を追いかける必要アリ
417 :デフォルトの名無しさん2011/04/06(水) 00:31:43.41
>>415-416
どうもです
単純にBGM流すのと効果音程度なのでDirectSoundにします
SDKまた最新に差し替えてDirectMusicからDirectSoundにソース変更してみます!
416 :デフォルトの名無しさん2011/04/06(水) 00:14:48.48
あ、MIDIとかそっちの話だったら、その他のライブラリ探すか mci
単純にBGMならDirectSoundかXAudioでストリーミング
419 :デフォルトの名無しさん2011/04/06(水) 14:46:00.50
blenderでモデリングした.xをワールドに出すと重心や大きさによってリサイズされるんだけど
これは.xの標準仕様?
モデリングの段階では2つのメッシュがきっちり角で合わさってるのに、directxでレンダーすると微妙にずれてる
420 :デフォルトの名無しさん2011/04/06(水) 15:03:59.51
>>419
自分が書いた内容と、Blenderのx形式expoterの中身を、もう一度よーーーく見直してから、
速やかにBlenderスレに移動するといいと思う

※ワールドに出すとって何?重心や大きさによってリサイズって何が?
 モデリングの段階できっちり合わさってるってのは、Blender以外で確認したのか?
 Expoter は DirectX の物じゃないだろ って事
421 :デフォルトの名無しさん2011/04/06(水) 15:13:24.65
>>419
自分の場合、blenderから自前の独自形式で吐き出したメッシュは、
DirectX でも OpenGL でも正常に表示されます
ついで言うと、メタセコでモデリングした内容を、自前のインポータでBlenderに取り込んで
それを xfileで再エクスポートしても正常に表示されます。 これらの話は、DirectXと無関係です
スレチです
422 :デフォルトの名無しさん2011/04/06(水) 17:02:33.07
複数のモデルを全て(ビルボードで)こちらに向かせたいのですが、一回の処理で全て向かせるにはどうしたらいいのですか?

423 :デフォルトの名無しさん2011/04/06(水) 18:13:07.22
>>422
一回の処理がどの程度を言うのか分からないけど、
カメラが動く度に逆行列の計算とワールド変換が必要なのでは?

ごく最近勉強した。参考になればどうぞ↓ 間違ってたらごめん。

// ビュー行列の逆行列
D3DXMATRIX matView, matInv;
d3ddev->GetTransform(D3DTS_VIEW, &matView);

matInv._11 = matView._11;
matInv._12 = matView._21;
matInv._13 = matView._31;
matInv._14 = 0.0f;
matInv._21 = matView._12;
matInv._22 = matView._22;
matInv._23 = matView._32;
matInv._24 = 0.0f;
matInv._31 = matView._13;
matInv._32 = matView._23;
matInv._33 = matView._33;
matInv._34 = 0.0f;
matInv._41 = 0.0f;
matInv._42 = 0.0f;
matInv._43 = 0.0f;
matInv._44 = 1.0f;

// モデル描画関数
D3DXMATRIX matWorld = トランスフォーム行列 * matInv * 平行移動行列;
d3ddev->SetTransform(D3DTS_WORLD, &matWorld);
425 :デフォルトの名無しさん2011/04/07(木) 08:55:47.86
>>422
「一回の処理」の定義がよく分からんが、
1クロックでって事ならそういうSSE命令が出来るのを待つしかないんじゃないか?

計算式をあまり使わずにって事ならカメラ行列の逆行列が使えたような気がする。
427 :4192011/04/07(木) 12:25:47.39
2つの.xの中身は、どちらも頂点の場所が-1.0、1.0で、並べるとぴったりくっつくようになってるはずです。
でも、directx(自作のスキンメッシュクラス、サイズも同じ)で並べて描画すると、微妙に大きさが違うのです。
なにか仕様があるのではないかと思っています。
430 :デフォルトの名無しさん2011/04/07(木) 16:57:38.71
マップや地形を描写してキャラ(素材サイトの頂きもののポリゴン)を一通り動かし
当たり判定等の処理も入れられたのですが、キャラそのものを動かす(アクションする?)にはどうしたらいいのでしょうか?
剣を振りまわしたり等の事です
自分なりに調べてみたら「ボーン化」という作業が必要なのは分かりましたが
そっから先がさっぱり分かりません
どこか参考になるサイトありませんでしょうか?
431 :デフォルトの名無しさん2011/04/07(木) 17:09:38.27
要するに、動かしたい部分の頂点群をAからBに移動できれば移動になるわけだな。

まるぺけは必読だ!!
ttp://marupeke296.com/GameMain.html
432 :デフォルトの名無しさん2011/04/07(木) 18:53:15.60
>>431
このレベルだとその回答じゃわけわからんと思う

>>430
「スキンメッシュ」で調べてみるといいよ。ちなみに普通ボーン化なんて言わない。
DirectXのSDKサンプルにもSkinnedMeshというのがあるので参考に。
>>431が出してくれてるサイトにもxファイルのスキニングについて書いてるよ。
433 :デフォルトの名無しさん2011/04/07(木) 19:27:48.86
>>431-432
有難う御座います

なるほどスキンメッシュって言うんですね、サンプル見て勉強してみます
434 :デフォルトの名無しさん2011/04/08(金) 00:14:20.09
ちなみにサンプルを追いかけて改造して勉強するならいいけど、
丸パクすると詰むぞ
435 :デフォルトの名無しさん2011/04/08(金) 00:35:24.29
俺の場合
サンプルコピペ→エラー→1から見直し→勉強になる
というパターンが多いな
でもたまに根本的な部分がわからなくて詰むから基本はそのうちやりたいな
COM集成体とクォータニオンは最初から理解するのに大きく足止めされた
436 :デフォルトの名無しさん2011/04/08(金) 00:41:52.62
スキンメッシュ(ボーンデフォームなど)って、クォータニオンとその乗算だけじゃなく、
座標系が回転していく動作とか理解してないと、とてもじゃないけどキャラクターアニメーションなんて作れない
特に頂点座標と、その座標が置かれている系と、回転軸がどこを中心にどう回転してるのかとか、
そしてそれらが再帰的に回転を繰り返してて、結局グローバル座標系におかれた頂点は今どこにいるべきか、とか

確かに丸パクだと詰むな。挙動自体追えなくなる。ちょっと詰んだ瞬間に、全部逆戻りで予想以上に足止めされる
下手するとそのまま頓挫
438 :デフォルトの名無しさん2011/04/08(金) 08:42:14.57
クラス設計は 「計算の仕組みを」 理解しただけじゃ無理じゃね
目的の整理が出来ていないと。 どうしたいか、の部分
439 :デフォルトの名無しさん2011/04/08(金) 11:22:56.94
1.サンプルを参考に必要な処理を抜出し、自分なりにtxtにまとめる
2.まとめたtxtを見ながら自分の環境に処理を追加していく
3.とりあえず動かしてみるとどっかで失敗しているようで落ちる
4.まとめたtxtを読み返すがtxtでまとめてある処理はきちんと組み込まれている
5.txtにまとめた俺が間違っていると気づき、とりあえずサンプルを丸パクする
6.当然動く訳だが何も理解出来ていないので意味が無い
7.凹む ← 今ココ
441 :デフォルトの名無しさん2011/04/08(金) 18:49:55.20
ビュー行列から遠近法だけを打ち消すにはどうしたらいいのですか?
遠いものも近いものもサイズだけは一定にさせたいのです。
442 :デフォルトの名無しさん2011/04/08(金) 20:57:47.28
>>441
素直に正射影使えば・・・・・

そういう意味でなければパースペクティブがどういう風になっているのか調べて。
きっと希望にそうものがなんにせよ出来ないと思うけど。
443 :デフォルトの名無しさん2011/04/09(土) 00:08:53.19
つかビュー行列の時点では遠近法なんてないだろ
射影行列ではじめて遠近感が出る
で、>>442が言うように正射影で射影行列作ればいい
444 :デフォルトの名無しさん2011/04/09(土) 15:52:58.99
DirectInputでマウスデバイスを作ったんですが、なぜかY軸だけ反応しません。

X軸もZ軸も左右のクリックも反応するのに、Y軸だけ反応しないってのは、
何がおかしいんでしょうか。
446 :デフォルトの名無しさん2011/04/09(土) 18:09:36.96
>>444
自分で何も調べず、情報も一切出さずに他人に丸投げして解決しようと考える
お前の頭がおかしい
448 :デフォルトの名無しさん2011/04/09(土) 18:22:37.15
>>446
なぜわざわざ突っかかるw
456 :デフォルトの名無しさん2011/04/09(土) 20:36:12.23
>>444
元も子も無いんだがジョイパッド以外のマウスやキーボードはWinapiで出来るから、
DirectInputは非推奨だぞ
GetCursorPosとかScreenToClientとか使ったほうがいいらしいし、
おまけに簡単だ
445 :デフォルトの名無しさん2011/04/09(土) 17:24:45.92
DrawIndexedPrimitiveで四角形を描くにはどうしたらいいのですか?

現状は、カリングをオフにして
device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, 3, 0, 1);
で三角形までは描画できるのですが、
device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, 4, 0, 2);
にしても三角形のままになってしまいます。
447 :デフォルトの名無しさん2011/04/09(土) 18:10:45.55
>>445
頂点インデックスの内容も書いて
449 :デフォルトの名無しさん2011/04/09(土) 18:22:50.70
>>445
DrawIndexedPrimitives は C# だなぁ・・・
450 :4452011/04/09(土) 18:28:32.11
頂点とインデックスデータは
indices[0] = 2;
indices[1] = 1;
indices[2] = 0;
indices[3] = 3;
indices[4] = 1;
indices[5] = 2;

v[0] = Vector3(0,0,0);
v[1] = Vector3(1, 0, 0);
v[2] = Vector3(0, 1, 0);
v[3] = Vector3(1, 1, 0);

になっています。
>>449
はい、Slimdxを使っています。
451 :デフォルトの名無しさん2011/04/09(土) 18:44:32.80
>>450
何故 primitiveType(arg1)が TriangleList で primitiveCount(arg6) が 2 で numVertics(arg4) が 4 なの?
452 :4452011/04/09(土) 18:56:08.15
TriangleListを使う理由は、DrawIndexedPrimitivesで一度に四角形(三角形2つ)を大量に描こうと思って使っています。
それで、試しに1個の四角形を描こうと思って、頂点数4つと面が2つを引数にいれています。
453 :4512011/04/09(土) 19:04:13.22
>>452
5年前のC++の記憶で悪いけど TriangleList で2つの三角形を描くなら numVertics は
(三角形の頂点数)3 * (三角形の数)2 で 6 だったはず。
454 :4452011/04/09(土) 19:29:10.74
>>453
ありがとうございます。numVerticsの所を重点に検討してみます。
458 :デフォルトの名無しさん2011/04/10(日) 06:02:30.36
練習に、DirectXでテトリス作ろうと思ったんですが、
画面の枠にぴったり合わせた描画って可能なんでしょうか?
もしかしてカメラ位置とかは気合いで合わせないとならない?
459 :デフォルトの名無しさん2011/04/10(日) 09:18:21.49
>>458
んなわけない。
3D描画でも、カメラの視野角とアスペクト比でほぼ正確にわかる。
「視錐台」でぐぐれ。
461 :デフォルトの名無しさん2011/04/10(日) 11:09:53.29
2Dだけしか使わないなら座標変換済み頂点を使う
3Dも混ぜたいならプロジェクションを正射影行列でやる
462 :デフォルトの名無しさん2011/04/10(日) 15:22:33.48
レンダーターゲットを変更して、アンチエイリアスを設定した深度ステンシルサーフェスを利用すると正常に描画されず
アンチエイリアスが可能なのはバックバッファだけだと聞きました
実際にやってみると、確かにレンダリング結果がおかしくなります
しかし、最近のゲームでは遅延レンダリングを行っているにもかかわらずアンチエイリアスが有効なゲームがあります(Crysis2とか)
どうやってアンチエイリアスをかけているのか分かりますか
464 :デフォルトの名無しさん2011/04/10(日) 17:56:09.27
>>462
バックバッファの4倍の面積のテクスチャ上にレンダリングして、
バックバッファに戻すときにフィルタかけるとか
466 :デフォルトの名無しさん2011/04/10(日) 21:59:25.14
DirectXを使っていてプログラムを終了した時に終了コードが0x1で終了するスレッドって何らかのエラーが
発生しているって事でしょうか?
1つだけ出ているのですがどこの呼び出しで作られたスレッドか特定出来なくて困ってます・・
470 :デフォルトの名無しさん2011/04/10(日) 22:56:45.83
>>466
俺が建てたスレッドが正常終了でTRUEを返してるだけだ気にするな
467 :デフォルトの名無しさん2011/04/10(日) 22:08:36.84
それDirectXと関係なく、あなたの書いた処理にバグがあるだけとかそういう
・・・特定自体しんどいだろうけどな
468 :デフォルトの名無しさん2011/04/10(日) 22:22:40.81
エラーしたのがどこかを表示させるメッセージボックスを組み込めばいいんじゃないでしょうか
469 :デフォルトの名無しさん2011/04/10(日) 22:41:57.10
メッセージボックスなんてしなくても、VSなら右クリックでトレースポイントしかければいいのでは
あとウォッチ。 せめてデバッガの機能使おうぜ
472 :デフォルトの名無しさん2011/04/11(月) 15:02:18.16
DirectX9でゲームを作っているんですが、
GeForce 9300 GSのPCでdevice->SetViewPort()を
呼び出したタイミングエラーが出ているようで困っています。

通常こんな所でエラーが出た経験がなくて戸惑っているのですが、
ひょっとして、MinZ/MaxZは0.0〜1.0の範囲じゃないといけないのでしょうか?


473 :デフォルトの名無しさん2011/04/11(月) 16:14:24.08
>>472
1.D3DDeviceを内包するクラスの宣言がポインタだ
2.DirectXバージョンを間違ってdefineしている
3.SetViewportに渡しているのがD3DVIEWPORT以外だ
4.関数の大文字小文字を間違えている

とりあえず俺がミスった時はだいたいこの辺が原因だった。
474 :デフォルトの名無しさん2011/04/11(月) 16:23:37.92
>>473
どうもありがとうございます。

実際にはSlimDX越しにアクセスしているので
いずれとも違ってそうです。
476 :デフォルトの名無しさん2011/04/11(月) 17:01:32.12
>>474
>実際にはSlimDX越しにアクセスしているので

じゃあSlimDXスレへどうぞ。いやマジで

492 :4722011/04/12(火) 10:07:08.02
>>476
あっちは過疎ってるので、SlimDX固有の話くらいしかできません。
質問するまえにSlimDX中の該当箇所のC++ソースコードに目を通して、
SlimDX側には問題なかろうという判断はしています。

この問題はDirectX9/ハードウェアの組み合わせによって発生する問題と考えています。
最初の質問から追加する件として、
・ATI Mobility Radeon HD 3470
でも発生を確認しました。
ただしこちらはドライバのバージョンが2008年と古いため、
ドライバの更新をお願いしようとしているところです。
なお、
・Intel GME 950
・ATI RADEON 4850
・GeForce 9600 GT
およびそれ以降では同様の不具合は確認されていません。
509 :デフォルトの名無しさん2011/04/13(水) 00:51:24.74
>>492
ビューポートがウィンドウからはみ出した場合、
環境によって補正されて歪んだり、何も表示されなかったりしたことがある
エラーが出た覚えはないけど、そのあたりはどうかな

というかエラーってどんなエラーよ
514 :4722011/04/13(水) 01:23:35.94
>>509
475でも書いたんですが、
D3DERR_INVALIDCALL エラーが発生しています。
RADEON9800やGeForce7600GS当たりでも普通に動くコードなのに、
なんで今頃エラーが発生するようになったのか検討がつかないんですよね。
参ったな……。
523 :デフォルトの名無しさん2011/04/13(水) 21:36:25.66
>>514
DXデバッグランタイムのログは?
SlimDXでもDebugViewってツールで見れるから
確認してみろクソハゲ
475 :4722011/04/11(月) 16:25:01.85
最初の書き込みで抜けていましたが、
D3DERR_INVALIDCALL エラーが発生しています。
DirectXのAPI内でのエラーです。
477 :デフォルトの名無しさん2011/04/11(月) 17:09:57.03
テクスチャの各フォーマットが使えるかどうか判別したいんですが、どうすればできますか
489 :デフォルトの名無しさん2011/04/12(火) 00:54:12.77
そもそもここの質問者はできたらできたでこのコードでできましたとか
事後報告もできない根っからの糞ばっかだからこの程度でいい
結局、>>477だってもうこねぇだろ?できたんだかどーだか知らないけど
491 :デフォルトの名無しさん2011/04/12(火) 07:02:00.54
>>490
俺はどっちでもいいなw
>>477の死亡確認なんてw
478 :デフォルトの名無しさん2011/04/11(月) 17:51:18.26
それは自分で判断
479 :デフォルトの名無しさん2011/04/11(月) 18:04:04.55
普通に表示させてみりゃ一発じゃねーの
480 :デフォルトの名無しさん2011/04/11(月) 22:51:45.18
IDirect3D9::GetDeviceCaps
で調べる
481 :デフォルトの名無しさん2011/04/11(月) 22:59:06.41
>>478は答えになってないし
>>479はプログラマから足を洗え
>>480も普通に間違ってる

で、次の方どうぞ〜
484 :デフォルトの名無しさん2011/04/11(月) 23:15:05.82
>>481
お前も答えろよ
482 :デフォルトの名無しさん2011/04/11(月) 23:03:31.91
とりあえずCaps周辺調べりゃいいじゃん
テクスチャフォーマットも調べられないクズが長居すんじゃねーよ
487 :デフォルトの名無しさん2011/04/11(月) 23:24:05.44
少なくとも偉そうに
間違ったことを教えるよりはマシだな
488 :デフォルトの名無しさん2011/04/12(火) 00:20:19.99
DirectXCapsViewerも見たことないんじゃしょーがねーな
あれ、一括してCapsだから間違ってはいないと思うがな

間違いって確定でいいのかね?
490 :デフォルトの名無しさん2011/04/12(火) 02:57:14.32
うーん、その程度のこと教えるのって親切なんだろうか?
493 :デフォルトの名無しさん2011/04/12(火) 10:10:46.29
あなたの書いた範囲にバグがあるよとかそういう・・・特定自体しんどいだろうけどな
494 :デフォルトの名無しさん2011/04/12(火) 12:34:14.28
じゃあGeforce9300GSで動作するゲームは全部、SetViewPortを使ってないんじゃねw
495 :デフォルトの名無しさん2011/04/12(火) 21:03:00.00
海外のツールでdirectxアプリケーションのウインドウの端に黄色い数字でFPSを表示するツールがあったと思うのですが、名前かURL教えてください
496 :デフォルトの名無しさん2011/04/12(火) 21:09:14.80
たぶんDxtoryのことだと思う
497 :デフォルトの名無しさん2011/04/12(火) 21:16:13.89
>>496
サンクス
Frapsでした
498 :デフォルトの名無しさん2011/04/13(水) 00:30:22.44
スペキュラーライトを使っても、モデルにスペキュラーの設定してなかったらテカッってならないです?
500 :デフォルトの名無しさん2011/04/13(水) 00:36:39.74
ライトのスペキュラって光沢色じゃね。って、OpenGLとごっちゃになってるかもしれないが
507 :デフォルトの名無しさん2011/04/13(水) 00:48:10.17
>>500
OpenGLのライトにはspecularカラーの設定あるよ。その時設定されているmaterialの
specularカラーに上乗せされる = 光沢がある時、それが見える
510 :デフォルトの名無しさん2011/04/13(水) 00:52:03.42
>>507
マテリアルに設定したスペキュラの色とライトに設定したスペキュラの色を合成する感じでおk?
そして、スペキュラはハイライトの部分だけに反映される設定か
501 :デフォルトの名無しさん2011/04/13(水) 00:39:01.80
ライト側にスペキュラの設定値があるっておかしくね?
そんなことね?
503 :デフォルトの名無しさん2011/04/13(水) 00:44:07.93
ところで世のゲームエンジンは超難しいシェーダたくさん使ってるのにどうしてライトが複数使えるの?
504 :デフォルトの名無しさん2011/04/13(水) 00:44:10.99
モデルの方も設定しないとキラッとしないっぽいのか
ライトのスペキュラーとマテリアルのスペキュラーの作用の仕方がわからない
試さないと…

ライトのスペキュラって
typedef struct _D3DLIGHT9 {
D3DLIGHTTYPE Type; /* Type of light source */
D3DCOLORVALUE Diffuse; /* Diffuse color of light */
D3DCOLORVALUE Specular; /* Specular color of light */  ←これのこと
D3DCOLORVALUE Ambient; /* Ambient color of light */
D3DVECTOR Position; /* Position in world space */
D3DVECTOR Direction; /* Direction in world space */
float Range; /* Cutoff range */
float Falloff; /* Falloff */
float Attenuation0; /* Constant attenuation */
float Attenuation1; /* Linear attenuation */
float Attenuation2; /* Quadratic attenuation */
float Theta; /* Inner angle of spotlight cone */
float Phi; /* Outer angle of spotlight cone */
} D3DLIGHT9;
506 :デフォルトの名無しさん2011/04/13(水) 00:46:13.73
>>504
自分でシェーダ組んでるなら書いたとおりじゃね?
固定シェーダならライト側のスペキュラーは使われてるかどうか調べる必要あんじゃね?
505 :デフォルトの名無しさん2011/04/13(水) 00:45:55.77
なるほど、一番明るくなるところのライトの色か!ありがとうわかった
511 :デフォルトの名無しさん2011/04/13(水) 00:52:37.03
http://msdn.microsoft.com/ja-jp/library/bb147399%28v=vs.85%29.aspx
DirectXはライトのスペキュラが使われて、マテリアルのスペキュラは指定しないと使われない感じ?
なんでライトのスペキュラなんだろな?
ライトのスペキュラなんてなくしてライトの色とマテリアルのスペキュラ自動で使うようにしたったら誰も疑問持たない気がすんだけどな
512 :デフォルトの名無しさん2011/04/13(水) 00:56:43.19
ライトの色をマテリアルのスペキュラに渡して使わせると上手く表現できるのか、いいこと聞いたわ
516 :デフォルトの名無しさん2011/04/13(水) 07:18:14.25
>>512
どこにそんなこと書いてあるんだ?
出来ないやつの思考ってやっぱりわからない
518 :デフォルトの名無しさん2011/04/13(水) 12:39:15.84
テクスチャに透過色を指定して透過させたいのですが、描画順が(前後の重なり)ばらばらでも透過させるにはどうしたらいいのですか?
519 :デフォルトの名無しさん2011/04/13(水) 13:06:15.55
Zバッファ使ってる限りは、頂点カラーにしろテクスチャにしろ
透過色を含むものは後ろから順番に描画しなければいけなかったはず。

http://marupeke296.com/DXG_No17_ZBufferAndAplhaBlending.html
521 :5182011/04/13(水) 14:18:46.29
>>519
パーティクルみたいな複数の板ポリを描画する時も、奥から描ける様にソートしてから描けば良いですか?
522 :デフォルトの名無しさん2011/04/13(水) 17:06:00.85
>>521
奥行きがあんまりないのっぺりしたパーティクルだったら複数の板ポリを
順番気にせず描けばいい。
気になるようだったらパーティクル内でもソートする、みたいな感じ。
525 :デフォルトの名無しさん2011/04/16(土) 15:13:40.59
書籍で行列の継ぎ足し合成は誤差が蓄積されるので止めるようにと書かれていたのですが、そうすると座標値を保存しておいて、それに行列を掛けることを繰り返すのもNGですか?
527 :デフォルトの名無しさん2011/04/16(土) 16:53:05.36
結果が気になるようだったらパーティクル内でも先にソートしておく、みたいな感じ。
528 :デフォルトの名無しさん2011/04/17(日) 23:35:55.20
D3DXCreateTextureFromFileInMemoryEx関数使ってる人いる?
D3DXCreateTextureFromFileInMemoryだと正常に動作するものが、前者だとメモリリークするのだが・・・
俺がどっかでアクセス違反してる可能性もあるが、なにか知っている人いたら情報ください。

使ってるけど普通に動くよって人がいたら、俺のミスです。
DirectX 9.0c SDK (December 2006)を使ってます。
536 :デフォルトの名無しさん2011/04/18(月) 10:04:17.71
>>528
9割9分自分のバグだとおもわれ
DXのメモリリークはDirectxControlPanelのところのデバッグ設定を使えば
簡単に分かる場合があるからやったことなければ試してみるべし
AllocIDを調べてみてブレークさせてみればおk
あとはpoolとか間違ってないかとかチェックしてみては
541 :5282011/04/18(月) 20:26:04.95
>>536
ありがとう。試してみます。
529 :デフォルトの名無しさん2011/04/17(日) 23:55:24.77
Direct3D11で文字描画をするためにDirect2D+DirectWriteを導入しようとしています。
下記のサイトを参考にしています。
http://mitsunagistudio.aki.gs/tips/d2d-d3d11-sharing

ここのサンプルではD2D側で描画したテクスチャを
D3D側にCopyResourceでスクリーンに丸ごとコピーしているのですが、
ドラクエのメニューウィンドウのように
D3D上の一テクスチャとして利用するのはどうしたらいいのでしょうか?

他サイトやMSDNのヘルプをいろいろ見てみましたが
具体的な実装方法が見当たりませんでした。
532 :デフォルトの名無しさん2011/04/18(月) 01:54:16.07
程度も調べてできないようじゃプログラミングなんか向いてないから今すぐやめちまえ
533 :デフォルトの名無しさん2011/04/18(月) 03:38:56.79
>>532
賛同。
534 :デフォルトの名無しさん2011/04/18(月) 06:20:33.92
ところで世のゲームエンジンは超難しいシェーダたくさん使ってるのにどうしてライトが複数使えるの?
535 :デフォルトの名無しさん2011/04/18(月) 07:30:39.97
>>534
D3D9世代なら、DeferredShadingを使う。
537 :デフォルトの名無しさん2011/04/18(月) 16:17:03.19
フルスクリーンからウインドウモードにしたとき、
nVidiaやIntelのGAだと問題が無いのですが、
GeForce系だと横に縮み、左右が黒くなります。
このときのウインドウのサイズは問題ないのですが、
描画される部分だけ横に縮みます。
何か回避策はあるのでしょうか。
539 :デフォルトの名無しさん2011/04/18(月) 17:43:20.64
>>537-538
当たってるかどうかは分からんが、
NVIDIA系でだけ挙動がおかしい例として、
Zバッファの取り扱いがあるな。
Zバッファの解像度よりもフレームバッファの解像度のほうが大きくなると、
NVIDIAでだけ挙動がおかしくなる。

フルスクリーンからウィンドウモードにしたら、
普通はフレームバッファのサイズも変わるでしょ。
576 :デフォルトの名無しさん2011/04/20(水) 23:52:26.72
本物の 537 は >>537 だけ
突然この板のIDが表示されたら面白いのに
538 :デフォルトの名無しさん2011/04/18(月) 16:22:37.39
家はGeforce8800だけど、そんな現象起きた事無い
自分で書いた物でも、世間のソフトでも。
それ、ハード周りが原因じゃなくて、何か忘れてるかバグがあるなじゃないの?
542 :5372011/04/19(火) 16:56:55.38
>>ALL
ありがとうございます。

GeForceはデバッグ中に何回かDirectX系のバグを出すと、
挙動がおかしくなるみたいです。
バグへの耐性が低いみたいです。
545 :デフォルトの名無しさん2011/04/20(水) 03:17:17.31
>バグへの耐性が低いみたいです。
最高にバカすぎて涙が出るな
546 :5372011/04/20(水) 03:29:47.65
>>545
バグを5回以上出すと、挙動がおかしくなります。
554 :デフォルトの名無しさん2011/04/20(水) 10:27:45.39
>>546 がバグっている件に関して。
547 :5372011/04/20(水) 03:34:07.02
xlat,uvパイプライン,pic,avr,6502,6800,8080,z80,8086,xmsドライバの作成,SB16のドライバ作成,
asm,C/C++,C#,JAVAを使えますので、そんなイージーミスは起こしません。
552 :デフォルトの名無しさん2011/04/20(水) 09:40:32.08
>>547
むしろそこまでの人が初心者スレなんて場違い
nVidiaにでも問い合わせたらいいんじゃ
549 :デフォルトの名無しさん2011/04/20(水) 04:22:34.06
そんなに自信満々なら2chの初心者スレで聞かずに自分でなんとかしろよ。
ドライバ作ったことがあろうが多数の言語が使えようが人が書いてる限りバグは出る。
どんだけ自信過剰なんだよおまえ。
OS作った?コンパイラ作った?だからなんだよ、だったらお前はいつも一切バグがでねーのか?w

バグらせたらおかしくなるのはメモリやらVRAMやらにゴミがのこっておかしくなってんじゃないのか。
バグチェックしてるときに表示がおかしくなってOS再起動したらコード変更一切せずに(表示は)元にもどったなんてこともあるし。
550 :デフォルトの名無しさん2011/04/20(水) 05:34:51.88
ママが作ったんだろ。
ママ明日朝起こしてうるさいねえ。
553 :デフォルトの名無しさん2011/04/20(水) 10:26:03.09
現象が再現する最小限のコードを出せばいいだけの話。
ただしアホじゃない限り、その課程で他人に聞く前に自分のミスを発見するけどね。
555 :デフォルトの名無しさん2011/04/20(水) 10:29:46.34
初心者スレ在住で「OS作ったことある」って「知り合いのスーパーハッカー」くらいの響き
556 :デフォルトの名無しさん2011/04/20(水) 11:02:16.53
OSやコンパイラって情報系の学校行ってたら一度ぐらいは趣味で作るだろ
557 :デフォルトの名無しさん2011/04/20(水) 11:26:41.11
それとバグでないとかミスしないとかはまったく関係ない話だけどな、ってことだ言わせんな/////
558 :デフォルトの名無しさん2011/04/20(水) 13:28:32.18
98時代だったらBIOSがよくできてたから、ブートローダーさえ作れば
しょぼいDOSぐらいなら割とすぐに作れたな。
559 :デフォルトの名無しさん2011/04/20(水) 15:22:19.53
どれだけ経験があろうが、目の前で不具合が発生すれば一緒なんだが。
むしろ不具合をいかに退治するかのノウハウが経験だろ?
560 :デフォルトの名無しさん2011/04/20(水) 16:07:35.82
そしてバグを作りこまないよりも、バグを退治する為のノウハウが蓄積される。
本当はバグがないプログラムを作る事に時間をかけるべきなのに
そういう目に見えない努力は評価してもらえないもんね。
561 :デフォルトの名無しさん2011/04/20(水) 18:15:52.21
つまりメルトダウンしない原発にこだわるあまり、
メルトダウンした後の対策が全くされていない今の状態が最高だと。
562 :5372011/04/20(水) 18:25:07.03
x386用のOSだよ。コンパイラはMASMとCの機能を盛り込んで、式その物を構文設定できる物。
以下はendの処理。
#amacro end( d0 )(local0,local1,localn,localt,localcase)
; end ( while,do,for,switch,if )
#getnum localt 2
#getnum localn 3
#subnumsp 3
#define local1 "f_{localn}"
#unstr local1

570 :5372011/04/20(水) 19:04:46.04
10万行1万ラベルを0.1秒でコンパイルするため、2分木検索を使ってる。
後はGDIで3Dのミドルウエアも作ったこともあるから、そっちのソースも一部見せようか?
572 :デフォルトの名無しさん2011/04/20(水) 19:47:00.75
>>570
お前のソース自慢はどうでもいいからとっとと消えてくんねーかなぁ、スレチだから。
573 :デフォルトの名無しさん2011/04/20(水) 20:30:23.56
これら537のコメントは天才チンパンジー「アイちゃん」
が言語訓練のために書き込んだものです。
このスレッドに多大なご迷惑をおかけしたことを
お詫び申し上げます。
                 霊長類研究所
574 :デフォルトの名無しさん2011/04/20(水) 20:45:52.22
必要なのは症状を再現できる最低限のソースなのに、どれだけ馬鹿なんだろう?
577 :デフォルトの名無しさん2011/04/20(水) 23:54:04.24
一つ確認方法としてSDKについてるサンプルプログラムでも同じ状態になるのか?
578 :デフォルトの名無しさん2011/04/21(木) 00:40:31.74
頂点バッファってまとめて取ったほうがいいとかあります?9の話です。
579 :デフォルトの名無しさん2011/04/21(木) 00:44:51.97
弾幕STGの弾とかならまとめてとったほうがいいよ
でも普通の3Dゲーの場合無理にまとめちゃうと
送らなくていいデータも全部シェーダ側に投げちゃうことになったり・・・
まあ、ケースバイケースで
580 :デフォルトの名無しさん2011/04/21(木) 00:49:24.12
>>579
ありがとうございます
581 :デフォルトの名無しさん2011/04/21(木) 01:26:56.51
確かにゲフォで10回くらいバグを出すとドライバの挙動がおかしくなるな。
582 :デフォルトの名無しさん2011/04/21(木) 01:32:52.61
それはSDKのサンプルでもってこと?
そしたら回避のしようがないなー
583 :デフォルトの名無しさん2011/04/21(木) 01:59:56.56
D3DXPlaneFromPointsってどういう式で実装されているんですか?
584 :デフォルトの名無しさん2011/04/21(木) 02:09:04.39
>>583
{(y2-y1)(z3-z1)-(y3-y1)(z2-z1)}(x-x1)+{(z2-z1)(x3-x1)-(z3-z1)(x2-x1)}(y-y1)+{(x2-x1)(y3-y1)-(x3-x1)(y2-y1)}(z-z1)=0
じゃね?
585 :デフォルトの名無しさん2011/04/21(木) 08:18:45.07
>>584
ありがとうございます!

x,y,zは後から与えられる座標値ですよね。
法線でfloat3つ使って、残り1つでどうやってx1,y1,z1を表すのでしょうか?
586 :デフォルトの名無しさん2011/04/21(木) 08:41:02.28
頂点を3つ渡すだけで、法線は全く関係ないから。
589 :5832011/04/21(木) 19:56:08.06
>>586
使い方ではなくD3DXPLANEを自分で実装したいだけなんですw
587 :デフォルトの名無しさん2011/04/21(木) 10:09:02.05
このスレは天才チンパンジーアイちゃん〜霊長類研究所の書き込みは幾度と無く見てきたが
天才チンパンジーアイちゃんを生で見たのは初めてだわ
588 :デフォルトの名無しさん2011/04/21(木) 10:12:01.97
三頂点あればその三角形の法線が外積で計算できる
法線と平面を成す点(三頂点の中から任意)があれば平面の方程式は求まる、おしまい

スレチだからなんか教科書でも見れ
590 :5832011/04/21(木) 20:14:31.65
>>588
D3DXPLANE構造体は法線だけで、平面の位置は構造体とは別で保持してるってことで合ってますか?
まだw(d)の使われ方が分かってないのでもうちょっと調べてみます。

スレチすません、ありがとうございました><
592 :デフォルトの名無しさん2011/04/21(木) 22:49:53.31
>>590
いや、dがあるから平面の向きだけでなく位置も決まってくるはず。
593 :デフォルトの名無しさん2011/04/21(木) 22:52:22.72
DirectX9で、Nvidiaのビデオカードで、
Zバッファをテクスチャとして使用してデプス値を取り出す
(シャドウマップではなく、遅延シェーディング等で使う)方法は
ないんでしょうか?
Radeonだと、DF24/DF16で取れるようですが、
Nvidiaではカラーバッファの方に出力するしかないでしょうか…
594 :デフォルトの名無しさん2011/04/21(木) 22:55:06.03
>>593
Zバッファだってフレームバッファの一種なんだから、
ロックしたらメインメモリにコピー出来るんじゃないの?

試してないのでごめんだけど。
595 :5932011/04/21(木) 23:09:19.80
>>594
レスありがとうございます。
一応、速度が重要なアプリケーションでの使用を考えていますので、
ロックしてメインメモリにコピーするのは避けたいところです。

今ちょっと試してみたら、APIがDirectX9でNvidiaのカードでも、
カード自体がDirectX10に対応していれば、INTZフォーマットは
作れるみたいですね。
このフォーマットもデプスが取れるので、これが作成できれば
いけそうなんですが、今試した環境がVistaなので、XP環境だと同じカードでもINTZに
対応しないのかもしれませんが…
596 :デフォルトの名無しさん2011/04/21(木) 23:17:27.71
>>593
ハード側の対応に依存するような話なら、
dxinfoのサイトで調べるといいよ。
主だったハードウェアの診断結果は大抵載ってるから。
597 :5932011/04/21(木) 23:20:26.42
>>596
おお、ありがとうございます。
参考にさせていただきます!
598 :デフォルトの名無しさん2011/04/22(金) 21:37:56.29
FPSを求める方法を教えてください
1秒で1000回レンダリングしたら1000ですよね
0.5秒で500回レンダリングしても1000ですよね
604 :デフォルトの名無しさん2011/04/23(土) 05:27:27.48
601 :デフォルトの名無しさん2011/04/22(金) 21:53:35.13
ありがとうございます
経過時間(秒)までのレンダリング回数/経過時間(秒)
でした
603 :デフォルトの名無しさん2011/04/23(土) 05:26:31.82
スプライト表示のとき
キャラクタを暗くするのは
頂点のRGBAの調整でできるのですが
白く光らせるにはどうしたらいいでしょうか?
605 :デフォルトの名無しさん2011/04/23(土) 07:23:59.39
>>603
DirectXにスプライトなど無い
607 :デフォルトの名無しさん2011/04/23(土) 11:17:41.08
>>603
ID3DXSpriteでは不可
加算合成でポリゴンを描画する→光ったように見える
611 :デフォルトの名無しさん2011/04/23(土) 14:35:16.51
>>605,607
ポリゴンでスプライトっぽく描画する方法のことです
加算だと白っぽくなるだけで
背景黒いと白にならないです
パレットやシェーダー使わないで
なんとかならんですかね
ライトでごまかすしかないんかな
612 :デフォルトの名無しさん2011/04/23(土) 14:43:35.29
>>610
平面もしくは方向の構築に必要な情報
スムーシングをかけるのならその情報と周囲の角度

>>611
加算合成
608 :デフォルトの名無しさん2011/04/23(土) 13:45:31.48
D3DXComputeNormals等で計算した法線ベクトルを、頂点毎に取得するにはどうしたらいいのですか?
609 :デフォルトの名無しさん2011/04/23(土) 13:54:21.90
頂点だけでは取得しようがないから不可能
610 :6082011/04/23(土) 14:05:15.78
>>609
頂点以外に何があれば取得できますか?
613 :デフォルトの名無しさん2011/04/23(土) 14:47:12.48
加算合成は足し算だから
src,dst両方暗いと255行かないじゃないすか
614 :デフォルトの名無しさん2011/04/23(土) 15:04:05.88
すみません。
D3DXMatrixRotationYawPitchRollを使って回転を行っているのですが、
YawとPitchはラジアン角を入れ思ったように縦横グルグル回ってくれるのですが、
Rollが思ったように(=Rollが回るとYaw、Pitchも傾く)なってくれません。
(いわゆる戦闘機ゲーの左右操作のローリングするような挙動を作りたいのです;)

値を入れてもそうならないという事はそれが仕様で私が何か勘違いしてると思うのですが・・
どなたかご助言頂けませんでしょうか・・orz
616 :デフォルトの名無しさん2011/04/23(土) 15:07:16.92
>>614
ドキュメントを読め
順番が書いてあるだろう
615 :デフォルトの名無しさん2011/04/23(土) 15:05:23.12
そういうふうに頭が固いから、プログラムが先に進まないんだよ。
複数重ねたり、加算用のイメージを作ればいいだけの話。
622 :デフォルトの名無しさん2011/04/23(土) 17:42:12.02
>>615
それくらい誰でもわかるわ
でもそれじゃ処理重くなったりリソース増えるわ
617 :6142011/04/23(土) 15:07:25.01
あ・・回転させているのがベクトルでそれを座標に加算してたので当然だったのかもしれません;
Rollによる傾きは別途計算しないと駄目ですね・・;
多分自己解決できると思います、お騒がせしました;
618 :デフォルトの名無しさん2011/04/23(土) 16:34:10.11
回転軸と角度で計算すればいいだけの話なのに、
何で面倒な方法を使おうとするのかさっぱり分からん。
620 :デフォルトの名無しさん2011/04/23(土) 17:00:04.64
>>614
ヨー・ピッチ・ロールとか、X軸・Y軸・Z軸だけでやろうとすると
ジンバルロック(←要ぐぐり)が起こる。
任意軸の回転を使えば解決。

>>618
初心者はそこが分からないから質問に来ているんだよ。
619 :デフォルトの名無しさん2011/04/23(土) 16:43:02.26
行列の合成を使ってないんじゃないか?
ドラゴンボールのキントン雲やりたいなら
1つの行列だけでやるのはかなり困難だと思う

XZ平面の姿勢行列を制御する行列Aとバンクを制御する行列Bを2つ作って
描画時(描画時じゃなくてもいいけど)に合成して1つにして使えばいいと思う

Aの行列の上にBの行列が乗る形で合成したらうまくいくんじゃないだろーか?
623 :デフォルトの名無しさん2011/04/23(土) 18:10:40.16
使っているのがID3DXSpriteというのが前提なら、処理の重さとか度外視だろう。
普通に自前で頂点を指定しているのなら、テクスチャのαだけ使って、
頂点カラーなりで調整すればいいだけの話なんだから。
624 :デフォルトの名無しさん2011/04/23(土) 18:19:29.53
>テクスチャのαだけ使って、
詳しく教えてください

・頂点カラー255x4にしても、テクスチャの色が普通に出るだけで
・加算や乗算合成にしても、下地との合計が255未満なら白くならないし
・色のみ指定でテクスチャ参照しないとアルファの部分が抜かれず
・テクスチャのαだけ使うのは白色マスクで出来るかもしれないけど
白とテクスチャ色の中間の色ができない

ぬう
627 :デフォルトの名無しさん2011/04/23(土) 18:37:12.62
>>624
まずはドキュメントを読んで、どのステートがソースの色を決定するかと、ブレンディングモードを確認しろ。
単純にソースの色をどこから持ってくるのか、持ってきた色をどう計算するのか設定するだけなんだから。
それだけ分かればホワイトアウトなんて簡単に出来る。
626 :デフォルトの名無しさん2011/04/23(土) 18:32:55.14
ID3DXSprite使ってないです
つーか加算言っても、加算する色が0だったら何枚重ねても黒いまま
そんなんだったらマルチテクスチャとか使うわ
パレットって便利やね
629 :デフォルトの名無しさん2011/04/23(土) 18:49:21.27
ちなみに背景を考慮しないのであれば加算合成である必要はないよ。
630 :デフォルトの名無しさん2011/04/23(土) 18:54:40.69
固定でやるなら一番楽なのは鏡面反射光を段階的に強くしていく。
631 :デフォルトの名無しさん2011/04/23(土) 21:03:11.98
ブレンディングのやつ2次元ループで全パターン試して描画したけど
マスクありホワイトできねー
632 :デフォルトの名無しさん2011/04/24(日) 05:21:20.29
ワールドでx軸は右が+?yは上が-でzは向こうが+で合ってる?
633 :デフォルトの名無しさん2011/04/24(日) 06:34:02.21
>>632
適当にオブジェクト作って動かした方が早い
634 :デフォルトの名無しさん2011/04/24(日) 06:35:51.56
>>632-633
ググれば10秒もかからない事を何言ってるの?
http://msdn.microsoft.com/ja-jp/library/aa515833.aspx
635 :デフォルトの名無しさん2011/04/24(日) 12:28:15.64
物体を円上に動かすことはできるのですが楕円上に動かすにはどうすればいいのでしょうか?
636 :デフォルトの名無しさん2011/04/24(日) 12:33:41.50
>>635
楕円の公式ってあったじゃん?
642 :デフォルトの名無しさん2011/04/25(月) 17:10:48.67
頂点バッファを作成して描画して開放、までを繰り返す処理って一般的ですか?
というのも、描かせるモデルがフレーム毎に変化させようと思ってるんですが、
頂点数が100の時もあれば、200の時もあるので、それを実現させようとしたら
作成&開放しかないのかなと思ったのです。
646 :デフォルトの名無しさん2011/04/25(月) 17:40:12.80
>>642
どちらかというと特殊ケース。
モデルが変化するってことはCPU→GPU間の頂点情報の
転送が起こるので、かなり遅くなる。
DrawPrimitiveUpみたいに。
GPUは、GPU側のメモリにある頂点バッファをいっきに描画するときに
パフォーマンスが出る設計になってる。
昔実験したら、30倍くらいの速度差があった。

頂点シェーダで間に合う処理ならば、GPU側でモデルデータを
変更できるのでかなり速くなるはず。

643 :デフォルトの名無しさん2011/04/25(月) 17:13:31.49
200で作って100のときもそれ使うとかは?
644 :6422011/04/25(月) 17:28:26.24
>>643
やっぱり、予め多めにとって、それを上回らないくらいで使い回すのが主流なんですか。
一応、メモリを節約しようと思って作成と開放を考えてみたのですが、何か負担があるかなと思ったので。
645 :デフォルトの名無しさん2011/04/25(月) 17:39:59.39
作成と解放より使いまわすほうが高速だな
結局メモリの動的割り当てってことだから
毎フレnewしてるようなもん
647 :デフォルトの名無しさん2011/04/26(火) 00:40:48.91
毎フレ変わるビームとかのラインっぽいポリゴンとかって
これと同じようにバッファ使ったほうがいい?
DrawPrimiticeUpでやってるけど



648 :デフォルトの名無しさん2011/04/26(火) 00:43:39.09
描画時に移動行列とスケーリング行列変更するだけじゃダメなのかそれ
651 :デフォルトの名無しさん2011/04/26(火) 01:44:00.01
>>647
>>648
ポリラインのやり方等によっては台形になったりして形状そのものが
変化するパターンもある。
そんなに頂点数多くなければDrawPrimitiveUpでいいと思う。
あくまで大量に頂点情報を転送する場合がネックなのであって、
GPU内部のレンダリング的には同じだから。
ただ、出来るだけ全部のビームの頂点を一箇所にまとめて
一度のDrawPrimitiveUpで描くこと。
649 :デフォルトの名無しさん2011/04/26(火) 00:51:04.62
ビルボード化したものを上下さかさまにするにはどうすればできますか?
RotationYawPitchRollをいじればいいと思ったのですが画像がくずれちゃって
650 :デフォルトの名無しさん2011/04/26(火) 01:17:00.75
テクスチャ座標を逆さまにすればええんでねえの
655 :デフォルトの名無しさん2011/04/26(火) 07:50:25.93
>>650
できました
ありがとうございます
652 :デフォルトの名無しさん2011/04/26(火) 01:47:43.99
>ポリラインのやり方等によっては台形になったりして形状そのものが
>変化するパターンもある。

それ変化するパターンもある、んじゃなくて考えて計算してないだけ
653 :デフォルトの名無しさん2011/04/26(火) 01:57:36.06
ホワイトアウト ブラックアウトを徐々にさせたいんだけど
やっぱり手軽な方法は真っ白な画像のアルファ値を上げてく方法でいいですか
654 :デフォルトの名無しさん2011/04/26(火) 02:17:19.24
色固定なら画像テクスチャいらないじゃん
まあ楽なんだけどね
656 :デフォルトの名無しさん2011/04/26(火) 13:01:39.14
マルペケの
http://marupeke296.com/DXG_CreateBorad.html
ここで、DirectXのデフォルトだと反時計回りのポリゴンは描写して
その裏つまり時計回りの方を描写しないとなっていますが
他のサイトだと、デフォルトは時計回りで描写となっています

調べてみると、時計回りを表として描写するのがデフォルトのようですが
マルペケのサンプルプログラムだと、反時計回りで頂点を指定しているにも
関わらずちゃんとポリゴンが描写されています
これはどういうことなんでしょうか?
660 :デフォルトの名無しさん2011/04/26(火) 16:52:19.44
>>656
つまるところレンダリングターゲット上で時計回りが描画される
ここがあやふやだったのでは?
y+が下なら上の時と比べると逆になる
657 :デフォルトの名無しさん2011/04/26(火) 13:11:13.06
カメラが後ろにあるから
658 :デフォルトの名無しさん2011/04/26(火) 13:31:56.63
>>657
すいません、カメラとはどの部分ですか?

他のサイトのサンプルと見比べても、頂点の指定順が
時計回りか反時計回りかの差しかないように思います
でも、反時計回りでも表示されているのはおかしくて・・・
どこか見落としてるんでしょうけれど、さっぱりわかりません
659 :デフォルトの名無しさん2011/04/26(火) 13:42:19.36
時計回りで頂点を置く、ってのはどっちから見て時計回りなのか
→ じゃあ裏側から見たら逆周りじゃないのか
 → 3次元空間では、どこから何を見るが決定して初めて目の前にそれが現れるから、その前提次第
  → その前提の事を、カメラと言う

あと、"裏"側を表示しない=カリングの指定なども
この辺のイメージが掴めない場合、多分この先何も出来ないと思うので、三次元処理の基礎をもう一度
661 :デフォルトの名無しさん2011/04/28(木) 11:53:29.36
OpenCVで作ったプログラムとDirectXで作ったプログラムを1つにまとめたいのですがどうすればよいのでしょうか?
やりたいことはOpenCVで求めた変数をDirectX側に渡したいだけなのですが
OpenCVはコンソールアプリケーションでDirectXはWin32APiでないと起動できないので同時に動かせず困ってます。
ご教授よろしくお願いします。
664 :デフォルトの名無しさん2011/04/28(木) 13:18:56.39
必要な関数をコピペして持って行けばいいだけの話。
何が困っているのかさっぱり分からない。
665 :デフォルトの名無しさん2011/04/28(木) 13:33:01.38
そうなんですか。
1つにまとめたんですがエラーはでないんですがDirectX側のウィンドは作成されるのですが
OpenCV側のウィンドが作成されずプログラムが動いてないんです。
667 :デフォルトの名無しさん2011/04/28(木) 13:39:18.88
ウインドウは出さなくてもいいんですがプログラム自体動かないです
未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartupみたいなエラーがでてきました
668 :デフォルトの名無しさん2011/04/28(木) 13:44:16.83
プログラムの中身を理解せず闇雲に2つをくっつけようとしてるのか?
670 :デフォルトの名無しさん2011/04/28(木) 13:52:13.71
CVってよくわかんがウインドウハンドルを取得すればいいんじゃないの
671 :デフォルトの名無しさん2011/04/28(木) 14:18:13.91
WinMainを作れ、mainはいらない
それからWindowsプログラムを基礎からきちんとやれ
677 :デフォルトの名無しさん2011/04/29(金) 00:03:44.54
DirectInput と WinAPI使うのと どっちがいいと思う?
入力はキーボードとジョイパッドと多くても合計2個しか使わないけど
678 :デフォルトの名無しさん2011/04/29(金) 00:32:36.80
>>677
ジョイパッドのみDirectInput
それ以外はWinAPI推奨
681 :デフォルトの名無しさん2011/04/29(金) 08:41:06.46
>>678
理由は?
684 :デフォルトの名無しさん2011/04/29(金) 12:23:09.80
msdnには>>678が書いてあったよね
あとxboxのコントローラー使うんなら代わりにXInput使ってくれみたいな
682 :デフォルトの名無しさん2011/04/29(金) 09:10:03.98
ジョイパッドはDirectInputじゃないと入力情報が
取れないけど、他は普通のAPIでいけるからでしょ
685 :デフォルトの名無しさん2011/04/29(金) 12:33:57.16
>>682
それだけじゃなく、例えばキーボードの入力の張替えなんかでカスタマイズしても、
DirectInputだとそれをバイパスして元のキー入力しか受け付けなくなってしまうから。
686 :デフォルトの名無しさん2011/04/29(金) 12:35:12.57
DirectInput使うとUWSC防止(Bot防止)になっていいぞ
それだけでマウスやキーボードの入力が取れなくなる
688 :デフォルトの名無しさん2011/04/30(土) 03:19:15.21
理由あってDirect XのSDK 2005 Decをwin7の64bitに入れたら、
PCが起動しなくなりました・・・
起動後、ユーザにログインすると画面真っ黒になって、なんともなりません。
ctrl+alt+delでログオフはできるんですが、普通に操作できません。
シャットダウンもできません。
どこかで同じことに出会った人いますか。
690 :デフォルトの名無しさん2011/04/30(土) 03:51:27.12
>>688
とりあえず、Windowsの復元だね。
開発者ならそれくらいは準備してるはず。
691 :デフォルトの名無しさん2011/04/30(土) 03:55:48.75
とりあえずセーフモードで起動してみたらどう。
新しいユーザーつくってみてそっちで通常起動するとかさ。
693 :デフォルトの名無しさん2011/04/30(土) 05:00:26.88
まぁどうせどこぞのよくわからないドライバでもぶち込んじゃったんでしょ・・・
695 :デフォルトの名無しさん2011/04/30(土) 12:54:51.75
しかし、サポートしてないOS見つけたら止めてくれてもよさそうなもんだけどなw
697 :6882011/04/30(土) 13:49:54.31
> 690
復元は問題なくできるんだけども、開発ができない…
インストール後、再起動さえしなければ続行できるんですがw

> 691
セーフモードだと起動するけど、テストができない…
コンパイルまでならSDK展開するだけでできるんですが、
テストができないとなんとも…

どうもSDKで入るデバック系のdllがおかしい??
通常に起動する状態からSDKだけ入れてみても再現性100%で起動しません

> 692、696
サポートしていないこともわかりつつ、一方でSDKいれても関係ないだろうと
思ってましたがやはりだめぽなんですな。
既知の問題かなぁーと思って解決策がないかたずねてみたんですが…

あきらめてVirtualBoxでしょうか…
698 :6882011/04/30(土) 14:03:05.09
事故怪傑しますた。
2005 Decインストール後、最新版のSDK 2010 juneをもう一度入れたら
起動もでき、テストもできますた。ありがとうございますた。
699 :デフォルトの名無しさん2011/04/30(土) 14:11:33.41
>>698
Decインストール って何? 多分アンインストールの気がする。

マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006
マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006