【C++】 DirectX初心者質問スレ Part29 【C】
1 :
デフォルトの名無しさん :
2010/05/20(木) 20:09:52 ※回答する人も、質問する人も必ず読んでください これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。
DirectX10以降ってもう.NETでしか開発できないの?
.NETはまったく別な技術だぜ まあvista以降は.netflameworkはプリインスコではあるが
7 :
デフォルトの名無しさん :2010/05/21(金) 22:24:21
Xファイル読み込んで表示したら 奥行きは違うけどカメラから見ると重なっている状態だと 手前の部分が透けて奥の部分が見えてしまうことがあるんだけど どうすればいいの? モデルはゲームプログラミングwikiのもので、ビューワでは正常に表示される
>>7 奥行きは違うけどカメラから見ると重なっている状態
についてもっとkwskたのむ
9 :
8 :2010/05/21(金) 22:50:02
スマン意味が分かった 透ける=前後関係がおかしい という意味ならzバッファがちゃんと有効になっているかチェックしたらどうだろう 透ける=アルファブレンド なら、描画する順番、重なり方によっておかしくなる場合がある
__(^^) <ペイピッポォ 欝だ死のうDirectXスレのマスコット、ペイピッポォ君だピー /__ \ | | | | (_) (__) 愛用ツール:PIX
>愛用ツール:PIX なんかワロタw
BGM再生するにはDirectShowでもできるらしいですが, DirectMusicと比べて長所短所いかがですか?
13 :
924 :2010/05/22(土) 21:13:36
DirectShowもDirectMusicも新しいDirectxSDKからは 消えてしまっていなかったっけ DirectShowはプラットフォームSDKに移動だっけか
BP↑ = s BA↑ + t BC↑ 0 ≦ s ≦1 0 ≦ t ≦t を簡単に表す方法はありますか? 成分で2式連立してs、tを出す方法しか思いつかないのですが
0 ≦ t ≦t ?
BP↑ = s BA↑ + t BC↑ 0 ≦ s ≦1 0 ≦ t ≦1 を簡単に表す方法はありますか? 成分で2式連立してs、tを出す方法しか思いつかないのですが
PはAC上のあると考えて良いのか? それともABC内の全ての点?
BA↑+BC↑の点とA、B、Cとの平行四辺形の内部にPがあるというつもりなのですが・・・ だから多分全ての点だと思います
>>17 その思いついた方法ってやつでいいんじゃないの
何が既知で何が未知なのかもよくわからん質問だ
22 :
デフォルトの名無しさん :2010/05/23(日) 02:01:37
質問です。 d3dx9anim.hをインクルードするとエラーが起きます。 error C2065: 'IID_ID3DXAnimationSet' : 定義されていない識別子です。 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません error C2078: 初期化子の数が多すぎます。 error C2065: 'IID_ID3DXKeyframedAnimationSet' : 定義されていない識別子です。 error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません error C2374: 'DEFINE_GUID' : 再定義されています。2 回以上初期化されています。 . . . DirectXSDKは、February 2010 を使用しています。 同じような経験のある方、原因を教えてください。 よろしくお願いします。
流れ星の尾みたいなのってどうやって作るんですか?
24 :
22 :2010/05/23(日) 02:16:10
自己解決しました。
>>23 単純に先頭の画像を薄めた画像をどんどん重ねる場合もあるし
ラインを書く場合もある
流れ星の尾って モーションブラーみたいなのを言ってるの? 単に軌跡に星みたいなのを飛ばしたいだけ?
26 :
デフォルトの名無しさん :2010/05/23(日) 05:15:23
Game programming gems2を見てカメラの右ベクトルright.x = forward.x;right.z=-forward.x;right.y=0;として final.x=inputRL*right.x+inputUD*forward.x; final.z=inputRL*right.z+inputUD*forward.zとしたのですが逆方向に動いたりします 場合分けして入れ替えないといけないですか?それとも他のとこが間違ってるだけですか?
変数名とかどうでもいいから やりたい事と聞きたいことをはしょらずに丁寧に説明してくれ
カメラというか、画面に映ってる座標に合わせて十字キーを右に倒せば画面の右に動く 十字キーを上に倒せば画面の奥に動くようにしたいです 今、たまにその通りになるときもあるのですが、偶然の時が多いです。 カメラの動きを同時にいじってまして、そっちと連携が取れてない可能性が100%なのですが、この式だけで本来ならどのようなカメラの向きでも十字キ ーに見合った動きになるのか聞きたかったのです。例えば、北向きをz正、東をx正に作ってる時に、カメラが後ろから撮ってて、ワールド座標ではキャラは南を向いてる場合に右を押せば西方向に進む にはこの式だけでできるのかが聞きたかったのです。
とりあえず、カメラの前がforwardで右がrightなら right.x = forward.x;right.z=-forward.x じゃなくて right.x = forward.z; right.z=-forward.x だと思うけどそこは書きミス?
書きミスでしたすいません ソースではちゃんとなってます
できました ありがとうございました
ほへー、あんがとさん。
もしかして流れ星ではなく彗星なんじゃないか
>>33 それはフィードバックエフェクト系じゃないの?
簡単に言うと、1フレーム前のバックバッファをボカしてるだけ。
エフェクト用のレンダリングターゲットを2枚(A,B)用意して Aを現在のレンダリング内容 Bを1フレーム前のレンダリング内容とする Aのカラーとアルファ値をクリアして現在の●を書き込む その上にBの内容を適当な半透明(もしくは加算合成)で書き込む 出来上がったAを画面に描画する 次のフレームではAとBを入れ替えて Bを現在用にして Aには前回の描画内容がそのまま残ってるのでこれをBに合成 以下AとBを毎フレーム入れ替えて繰り返し
フィードバックエフェクトってやつだね。
ちょっと抽象的な質問なのですが 画面にシャボン玉を出して、シャボン玉の向こう側の景色がちょっと歪んで見える表現。 をやりたいのですが、どんなワードでぐぐれば参考ページがでてきますでしょうか? シャボン玉 シェーダ 薄膜シェーダ とかだといまいち違ったものが出てきてしまいまして… 昔泡のウサギをサンプルにしたページをどこかで見かけた記憶があるのですが…
レイトレーシングじゃない?
球に環境マッピングで向こう側の景色を貼り付ければ歪んでみえるんじゃね?
どうでもいいけど、シャボン玉くらいの薄さだと 向こう側はまったくと言っていいほど歪まないよね。
プログラムシェーダーが無いころってどうやって組んでたんですか?
D3DXLoadMeshFromXで読み込んだモデルを 複数表示するには?
その前になぜ複数表示できないと思ったんだよ?
>>35-37 ありがとうございます。
フィードバックエフェクトで調べてみます。
>>50 「DirectXシェーダプログラミング 仕組みからわかるゲームエフェクトテクニック」
出版社:ソフトバンククリエイティブ
フィードバックエフェクトはこの本に載ってたよ。
よかったら参考にしてみて。
フィードバックエフェクトって一部でしか使われてない造語じゃね?
http://www.c3.club.kyutech.ac.jp/gamewiki/index.php?plugin=attach&refer=%A5%AB%A5%E1%A5%E9%A5%C6%A5%AF%A5%CB%A5%C3%A5%AF&openfile=CameraGomu.zip このページのサンプルをそのまま3Dにしたのですが上手くいきません
カメラが一杯に引いたときに画面が高速でほんの少しの幅だけ振動してしまいます
変えたのは、サンプルのCamera.cpp以外は消してCamera.cppにSprite.cppのSetPos()を作って
描画ループ中でEye、Atにキャラの座標を入れたあと
pCamera->SetPos(Eye.x,Eye.z);
pCamera->Action();
Eye.x = pCamera->m_vec2Pos.x;Eye.z = pCamera->m_vec2Pos.y;
At += 向きベクトル;
D3DXMatrixLookAtLH( & View, & Eye, & At, & Up );
としたのと、同じ意味だと考えて、
void Camera::Action()
{loat fRot = MakeRot(GetRotCamera(),m_pCameraObject->GetRot());
をfloat fRot = GetRotCamera();に変えました
なぜなら、MakeRotは引数から相対角度を取得と書いてあったので3D上ではGetRotCameraだけでできるような気がしたからです。
各所のm_pCameraObject->GetPos()//(.成分)がでてくるのですが、ここにはexternでキャラの座標を直接入れたのでCameraファイル以外を消しました。
よろしくおねがいします
俺が頭悪いだけかもしれんが、変換行列とか求めるのって 図書いて導き出せるもんなんですか?線形代数何度も勉強してるがダメだ・・・
またお前か いい加減頭の悪い質問の仕方するのやめろよ
図を描いて導くって意味わからん。 数学の話なんだから式をかいてりゃ求まる。
>>52 造語じゃなくて、一般的過ぎる言葉って感じ。
フィルタの出力を入力に戻す特殊効果全般を指す言葉。
58 :
デフォルトの名無しさん :2010/05/24(月) 06:32:06
なんたる自意識過剰
61 :
デフォルトの名無しさん :2010/05/24(月) 06:37:19
>>54 どの軸を回転させるかというのは計算方法は決まってるから
そういった意味では導ける
変換行列自体の意味を知りたいなら勉強が足りない
もっと調べて本を読め
変換行列から軸の回転具合を逆算するとか言う話なら
別に一つずつの変換行列を保持しておかないと超面倒なことになる
62 :
デフォルトの名無しさん :2010/05/24(月) 06:39:07
>>59 未完成のソースもらったって仕方ないだろ……
何いってんの
63 :
デフォルトの名無しさん :2010/05/24(月) 06:43:27
つか、そのうpした実行ファイルでも ・上下連打するとガクガク ・いっぱいに近づいた時or離れた時にガクガク 元が悪いんじゃね?
てかこんな2Dチックな計算してるのを3Dに直すより 行列で回転移動させた方がスマートになるんじゃね? 3Dで表示してる以上キャラのワールド行列はすでに出来上がってるのに なんでいちいち全部分解して再計算するの?
65 :
デフォルトの名無しさん :2010/05/24(月) 07:27:59
>>64 言ってる意味がよくわからんが、2D上で試すことはたまにやるし
分解しないと計算もへったくれもなくね
なぜアークタンジェントが使われるのですか?
もうほっとけよ
2つの2次元ベクトルから相対角度の出し方を教えてください
できました
72 :
デフォルトの名無しさん :2010/05/24(月) 10:04:22
>>75 ありがとうございます。全く気付きませんでした
タンジェントの足す公式で今知ったアークタンジェントを使いました
atanってことは外積でやったのか
78 :
デフォルトの名無しさん :2010/05/24(月) 17:25:07
ここ二年ばかり新しい sdkインストールしてないや
ふーん どうでもいい
D3DXMatrixShadowの内部でやってる式が理解できない。。。 ヘルプに式書いてるんだけど分かる人居ます?
パス1
>>80 Jim Blinn's Corner第1巻の第6章に詳しく載ってる。
俺は英語版しか持ってないけど、何年か前に日本語訳も出てたと思う。
結論だけ書くと、地面の同次座標表現をG(4次元縦ベクトル)、
光源の同時座標表現をL(4次元横ベクトル)とするとき、
ShadowMatrix = (LG)I - GL
となる。ただし、I は4x4単位行列。
LGがスカラー(内積)でGLが4x4行列になることに注意。
あれ?D3DXMatrixShadowのヘルプを見たら
>>82 の式と符号とか微妙に違うな。
理由はよくわからないけど、基本はBlinn's Cornerの理論と同じだと思う。
質問です。 レンダリングターゲットにできるテクスチャーをAとします。 Aに対して、Aをテクスチャとして利用しての描画はできるのでしょうか? 曇りガラスのように、向こう側に見える風景をゆがめる物体を表示するとします。 それが複数枚重なっている場合、一番奥にはガラス描画前の風景を。2番目には1番目のガラスを描画した後の風景を…。 といった感じに、テクスチャを渡す必要があると思うのです。 その際、 バックバッファに風景描画 テクスチャにコピー そのテクスチャを使ってバックバッファに2枚目を描画 テクスチャにコピー とやるのはコストが高い気がしまして。 とはいうものの、Aを参照しながらAに描画なんてことができる気もまたしなくて…。
>>86 できない。
その例ではコピーする必要はなくて、レンダリングターゲットを2枚用意して
交互に入れ替えて使えばいい。
すまん、何に使うのかよく読んでなかった。 ガラスの描画だと、やっぱりコピーして使うものか。
さあ
バックバッファと同じサイズのレンダリングターゲットテクスチャAと 適当なサイズの曇りガラス用レンダリングターゲットテクスチャBを用意して Aに風景をレンダリングする AをテクスチャとしてBに曇り部分をレンダリングする BをAにレンダリング これを曇りガラスの枚数分繰り返して 最後にAをバックバッファにレンダリングでいいんじゃね?
詰んだ forward = Eye - At;D3DXMatrixLookAtLH( & View, & Eye, & At, & Up ); カメラの右ベクトルright.x = forward.z;right.z=-forward.x;right.y=0; final.x=inputRL*right.x+inputUD*forward.x; final.z=inputRL*right.z+inputUD*forward.z D3DXVec3Scale( &final, &final, 大きさ) D3DXVec3Add( & final, & final, & Pos ); Pos = final;Posはマップ上の座標 絶対に値はあってる。はず。90度には動く。ただ画面の軸と関係ないし、マップのx、zとも関係無い何かを左右前後に動く もう解決策が思いつきません。助けてください
ソース出すのは確か嫌なんだよね? じゃあ、そこに出てる変数を全部ウォッチに登録して その計算後のすぐ後にブレークポイント打って 適当な方向にキーを入れた時の 全部の変数の値見れるようにしたもののSSをうpしてよ
それ以前に デバッカの使い方しらないから躓いてるんじゃないの?w
はい ブレークポイントで止めるくらいしか知りません。ウォッチもあまりやったことがありません。頑張ってみます
D3DXMatrixLookAtLH( &View, &Eye, &At, &Up ); D3DXMATRIX m; D3DXMatrixIdentity(&m); m._11 = View._11;m._12 = View._21;m._13 = View._31; m._21 = View._12;m._22 = View._22;m._23 = View._32; m._31 = View._13;m._32 = View._23;m._33 = View._33; D3DXVECTOR3 v( inputRL, 0.0f, inputUD); D3DXVec3Scale( &v, &v, 大きさ); D3DXVec3TransformCoord(&v, &v, &m); Pos += v;
エスパーすると inputUDとinputRLに アナログキーの情報が-1.0〜1.0fで入ってると仮定して(だよね?) ワールド座標軸が奥方向がZ+であるのに対して inputUDのU方向の入力値が-だから X軸方向には正しく動けるけど Z軸方向には反転して動いちゃうとかってオチじゃないの?
>>95 ありがとうございます。あとでやってみます
At、View、UPがエラーでシンボルが見つかりませんとなります
それと、横を押した時と、その次のコマをうpれば良いですか?
画面が出てこないとキーを押せないのでその間に何回転もしてしまうのですが
>>96 ありがとうございます
多分、Atの位置とキャラの座標を結んだ線を中心に前横後ろに移動してしまいます
Atには直前でキャラの座標が入ってるのですが、D3DXMatrixLookAtLHに入れる時にはキャラの向きを大きさ調節して足したのが入ってるのでキャラのちょっと前が今のAtです
自分のイメージでは、カメラとそのAtを結んだ線を基準に前後左右に動きたいのですが、なぜかキャラとAtを結んだ線が基準になってしまいます
すみませんPIXでRelaseイベントしかデバッグできません。
全部じゃなくて最小に削った奴でいいからもうソース出せって じゃなかったら、もう少し日本語を磨いてから出直してくれ
ベクトルの大きさはそのままで方向だけあるベクトルと同じ向きにあわせるような関数はありませんか?
>>102 普通にコピって大きさ変えれば良いだけだろ
向けたい方向ベクトルをノーマライズして 元のベクトルの長さを掛ける
ありがとうございました
できたよー
いちいちバックバッファにか描かないで 直接テクスチャに描けばいいじゃん?ってことだろ
うん
3Dスティックに合わせて向きを合わせる方法を教えてください
向きというか、回転です 方向は保持してるのですが、回りすぎてしまったりします
3Dスティックって?向きがわかってるなら回りすぎないようにすればいいんじゃないでしょうか
>>110 3Dスティックに合わせて向きを合わせれば合わせていいよ
だからそのやり方がわからないんだって 式教えてください
アナログキーの入力値を atan2してキーを入力してる角度を出せばいい カメラが回ってるならカメラの回転角度も加算する
押した角度と今向いてる角度の差の絶対値がまだある時は、押した角度の方向に足し続ける みたいな感じですか? 右回り、左回りはどういう判断ですれば良いのでしょうか?
3DスティックってNINTENDO64の真ん中についてるやつだっけ?
別に足さなくていいだろう キーの入力方向とキャラの方向を一致させるだけ まぁ、演出上どうしても足したいっていうなら 右回り左回りの判定は外積(2次元)を使う
外積調べたけどどう使うのかわかりません。教えてください
ジョイスティックとかなしで モデルを指定した座標に向かせるとかってのはできるの?
できます 後は回り方の判断だけだと思います
まるぺけに内積外積の使い方が説明してあるから参考にするといいよ
向かせたい方向と今向いてる方向の外積が上(天)を向いてるか下(地)を向いてるかで右左わかる ちなみに上下の判定は上ベクトルとの内積の符号で
ありがとうございます!やってみます!
完璧にできました ほんとうにありがとうございました
作者に聞けよ 俺だったら専用ソフトとか 3Dモデリングソフトの流体シミュレートとかパーティクル生成プラグインで作成したエフェクトを再生するだけにするが
専用ツールがあるからぐぐれかす
ぐぐれかれーたべてきた
>>128 某ツールだと出力するとアニメーションモデル(UV、テクスチャ含む)ができるから再生するだけw
動画としてもだせる
この場合も再生するだけ
>>132 某ツールとはなんでしょうか?
肝心なことをはっきり言って下さいよ。
directxで画像を読み込んで、2D描画を行う プログラムを教えて下さい。
ある程度3DCGのソフトでシュミレートできるとおもう
画像をメモリに読み込んで、 その画像を表示するにはどんなコードを書けばいいでしょうか?
できるとおもえばおもうね
>>136 画像をメモリに読み込んでその画像を表示するコードを書けばいいですよ
>>136 テクスチャサーフェイスをロックして画像を書き込む
>>110 >>3Dスティックに合わせて向きを合わせる方法を教えてください
一応解決してるみたいだけど、スティックの角度を求めて行列を回転してるとしたら二度手間じゃないか?
スティックの2DVecを絶対値にして行列の対応する場所にセットすればできるはず
詳しく説明する気力は無いし、うまく説明できる話からないけど 行列が3つの3次元ベクトルで出来ていて、姿勢を表してるとすれば Vec1(X) 1 0 0 Vec2(Y) 0 1 0 Vec3(Z) 0 0 1 X、Y、Zはそれぞれ、姿勢変更する前のオブジェクトのローカルな軸(X、Y、Z)が、 姿勢変更後どんな方向を向くかを表してるようなもの たとえば次の行列で、+Z軸が正面のオブジェクトを変換すると、Y軸で回転した+X軸を向くオブジェクトとなる 0 0-1 0 1 0 1 0 0
>>141 質問者はスティックの向きに合わせる行列が欲しいのではなく、
向きを少しずつ回転させていって合わせたい
超能力を使えば行間から読み取れるはずw
スティックの軸X、Yが長さ1で正規化されているとした場合 +Z軸を正面とするキャラクターをスティックの方向にむけるには、次の行列を作ればいい Z 0 -X 0 1 0 X 0 Z DirectXだったら4x4の行列だから、キャラクターの位置情報(X' Y' Z')を追加してこうなる Z 0 -X 0 0 1 0 0 X 0 Z 0 X' Y' Z' 1 たぶんな、ケアミスしてたらごめんね
>>144 そうだったのか
ただこの手の非効率な処理ってよく見かけるから、参考になったらいいな
カメラがグルグル回せる状態だと結局角度で管理した方が楽だと思うが
うん。楽だね。
149 :
デフォルトの名無しさん :2010/05/27(木) 08:23:10
atan2で角度を出す時にはスケーリングで長さ1にしてからやった方が良いですか? それと、ベクトルのノーマライズってつまりはどういうことか教えてください!
atan2は長さ1にする必要は無し その長さを1にする事をノーマライズと言う D3DXでは D3DXVec2Normalize D3DXVec3Normalize 自前で計算する場合は各要素をベクトルの長さで割る というかいい加減そろそろ消えて欲しい
151 :
デフォルトの名無しさん :2010/05/27(木) 09:17:52
なぜ消えて欲しいんですか?
ちょっとググれば分かるような DirectXと関係ないスレ違いな質問を繰り返してるからだ馬鹿
ゲ製作板イキなよ あそこならどんなくだらない質問にも答えてくれるようなスレがひとつふたつはあるだろ?
154 :
デフォルトの名無しさん :2010/05/27(木) 10:30:10
D3DXVec2Scale(&A&A,1.0f); ↑これって長さを1にするってことですよね?ウォッチで直後の値を見たらどう見ても2乗して足してルートしても1にならないのですがなぜでしょうか?
156 :
デフォルトの名無しさん :2010/05/27(木) 10:35:21
>>155 そうなのです
今ノーマライズにしたら思ったとおりの動きになったのです
今までスケーリングって大きさを設定することだと思ってたのですが違うのでしょうか?MSDN見てもスケーリングスケーリングと書いてたので、特に困ることもなかったのでそうともう自分の中では定着してたのですが
大きさ設定するときはノーマライズ→*大きさなのですね
マイクロソフトのカタカナ英語のわかりづらさは異常だが、少しは自分で実験せい 大きさを倍増させる関数だそれは。 1.0f渡したら、1倍するのだからAに変化は起きない(か、誤差の範囲でほんのわずかに変わるかもな)
158 :
デフォルトの名無しさん :2010/05/27(木) 10:55:29
マジですか…全然気付かなかった ありがとうございました
使い方よりも、行列計算を知った方がいいと思う
外部ライブラリ側でベクトル型定義してある場合、D3DXVector使ってる? みんなどうしてるんだろう
うん。使ってる。
ベクトルなんて要素がfloatで要素数が同じならメモリ配置同じなんだから 好きなの使えばいいよね
128です。 動画を上げている人がツールは自作みたいな事を書いていた気がしたので どう描写しているのか気になり聞きました。 ツールを使えorその人に聞けって事ですね。 回答ありがとうございました。
class Vector3 : public D3DXVECTOR3{}
外部ライブラリがマルチプラットフォームならそっちを使う DirectXでしか動かすつもりがないならD3DX使ったほうが親和性は高いだろうが・・・
ちなみに俺独自の線形代数ライブラリは、 4x4行列積の速度が、SSEのそれに比べて100倍以上遅い。 (4x4行列積を65536x2回実行) 皆も気をつけるように。
[test8 matrix4x4 mul test] matrix4x4 time = 1.703250 // m4x4 * m4x4 on C++ simd_value< float32_t > time = 0.008166 // m4x4 * m4x4 on SSE simd_value< float64_t > time = 0.003401 // m2x2 * m2x2 on SSE2 今試しにやってみたら 208.5782512858193倍だった。 本当かよww
自慢するなw
自慢最低
自慢っていうか自虐じゃね? ライブラリ厨はそれでも自作であることに快感を覚えるみたいだけど
D3DXのは使ってて古臭いと思うことがよくある まあ実際に古いから仕方が無いんだけれども
Cも対象だから基本的にはCで使える実装の仕方だしねぇ。
仕方だね
なんか同じ奴が書き込んでるね
そうなの?
暖かくなると変な奴が増殖するからしょうがない
拡大縮小についてお聞きしたいです。 通常、拡大や縮小を行いながらテクスチャの描画を行うには SetSamplerState(0, D3DSAMP_***FILTER, D3DTEXF_LINEAR); とリニアのフィルタを設定すれば、割と綺麗に描画してくれますよね。 これと同じようなことをワールド→…→スクリーン変換の際に行うことはできないのでしょうか? (スクリーンに表示するときに、綺麗に拡大縮小を行いたいんです) 何をやりたいかと言うと、カメラの近くにポリゴンが寄ってきた際に そのポリゴンのテクスチャが汚く表示されてしまうのです。 ポリゴンにテクスチャを描画する時には綺麗に拡大できるのに それをカメラで見るときには綺麗に拡大できないので もしも同じように処理できる方法があれば教えていただきたいです。
で、D3DSAMP_MINFILTER、D3DSAMP_MAGFILTERは 何の設定して汚いって言ってるのの?
>>178 どちらもD3DTEXF_LINEARです。
実際にポリゴン自体には綺麗に描かれていると思います。
ただ、それをカメラに近づけると汚くなってしまうのです。
実際に、D3DSAMP_MINFILTER、D3DSAMP_MAGFILTERの値をいじっても
この挙動が変わらないことから、この値はワールド→スクリーン変換の際には
反映されないと思っていたのですが、間違っているでしょうか?
フルシーンマルチサンプリングじゃイカンの? DirectX10以降はどういう扱いになってるのか知らんけど
ワールド→スクリーン変換ってのは あくまで、ポリゴンを構成する3頂点の位置座標が変わるだけに過ぎない。 だから、テクスチャフィルタリングの効果と直接関係はない。 (異方性フィルタリング とかはあるが) 拡大して汚いのなら、拡大フィルタが効いていないと考えた方がいい。 よくGPUのプロパティ設定には、そこいら辺の設定があるが、有効になっているか?
>ポリゴンにテクスチャを描画する時には綺麗に拡大できるのに >それをカメラで見るときには綺麗に拡大できないので どういう実装の意味なのか、誰かレベル2以上の能力者の方、お願いします。
ディスプレイには綺麗に補間が効いたテクスチャが表示されるけど それを携帯カメラか何かで撮ったらジャギチラするってんだろ ESP使うまでもない
すげーな>ESP マジかよ よくわかるな ちょっと利口なチンパンジーの言葉ぐらいちょろいんじゃねーの?
186 :
177 :2010/05/31(月) 04:41:52
>>180 フルシーンマルチサンプリングを有効にしてみたのですが、何も変わりませんでした…
>>181 つまり、本来GPUの設定が正常になっていれば、
スクリーン座標に写る段階で、きちんとリニアなりの拡大処理をしてくれるはずで
そうなっていないのは、私のPCのGPU設定がおかしい可能性がある、
という解釈であっていますでしょうか。
明日仕事が終わって帰ってきたら、確認してみることにします。
>>182-184 残念ながらまったく違います…
「カメラ」はD3DTS_VIEWで行列を設定するDirectGraphicのカメラのつもりでした。
今回作ってみたテストプログラムでは、
まず、200x200のテクスチャを300x300に拡大してポリゴンに貼るとします。
この段階では、D3DSAMP_MAGFILTERにD3DTEXF_LINEARを設定することで
きちんとなめらかな拡大になっていることを、すでに確認しています。
ただし、この状態で、このポリゴンをスクリーン上に表示すると
ジャギが汚くなって汚い拡大縮小になってしまいます。
(例えるならば、D3DSAMP_MAGFILTERにD3DTEXF_NONEを設定したような描画です)
私の理解力では説明することが難しかったためか、
もう一度説明することになってしまい、すいませんでした。
おそらく、
>>181 氏の理解であっているかと思います。(おそらくですが…)
とりあえずSSくらいは出せよ 或いはソースかそれが嫌ならバイナリだけでも出せば何人かは試してくれるはず
>>186 拡大してポリゴンに張った段階がなめらかなのをスクリーンに表示せずにどうやって確認してんの
オフスクリーンレンダリングしてファイル出力とか?
俺もそれが気になってしょうがない。 カメラから見ると汚くなるって、じゃあ綺麗なときはどうやって見てるんだよw
心の眼
テンソルって3Dで使いますか?
質問 レイを移動するメッシュに当てて命中点の座標を得たいんです D3DXMatrixInverse(&matWorld,NULL,&matWorld); D3DXVec3TransformCoord(&vecStart,&vecStart,&matWorld); D3DXVec3TransformCoord(&vecEnd,&vecEnd,&matWorld); D3DXIntersect(pmesh,&vecStart,&vecEnd,&boHit,&dwIndex,&U,&V,NULL,NULL,NULL); D3DXMATRIX matWorld:対象メッシュの拡大*回転*位置 D3DXVECTOR3 vecStart:レイの始点 D3DXVECTOR3 vecEnd:レイの方向ベクトル とやってるんですが matWorldが回転と拡大の時はうまくレイが命中した点を得られるのですが 移動を含めてしまうとうまくいかないんです。 これはvecEndに移動を掛けちゃうからだと思うんですが 移動の要素だけ掛けないってできませんかねえ?
(0,0,0)を変換して引けばいい
・・・それは気が付かなかった
>>192 余談だが、レイの方向ベクトルに vecEnd という変数名はどうかと思う。
一瞬、終点座標なら平行移動分まで変換して何の問題もないじゃないかと思ってしまった。
vecDir とかに変えたほうがいいよ。
あと、さらにお節介だが、ワールド行列の逆行列を matWorld に上書きするのもわかりにくい。
ちなみに、その vecDir にちゃんと方向ベクトルが入ってるなら、
D3DXVec3TransformCoord のかわりに D3DXVec3TransformNormal でいけると思う。
(このNormalという名称は少々紛らわしいけど、内部で勝手に逆転置とかやられるわけじゃない。)
もちろん、始点と終点を個別に D3DXVec3TransformCoord してから差をとってもOK。
スプライト描画を使ってシューティングゲームを作っているのですが、 弾を40発程度発射するだけで、かなり描画が遅くなってしまいます。 どんな原因が考えられるでしょうか? 描画はスプライトのDrawメソッドを使っています。
スプライトってID3DXSpriteの事でいいのか?
>>197 そうです。
描画するたびに下のような関数に読み込んだテクスチャのポインタを
渡して描画しています。
lp3dsp->Begin(D3DXSPRITE_ALPHABLEND);
lp3dsp->Draw(*texture,NULL,NULL,&D3DXVECTOR3(x,y,0.0f),0xFFFFFFFF);
lp3dsp->End();
D3DPRESENT_PARAMETERS
すいません。解決しました。 BeginとEndを毎回呼び出してたので、一番最初と最後だけ呼び出すように 変えたら、超速くなりました。 ありがとうございました。
ID3DXSpriteのSetTransformメソッドで設定したものを、 元に戻すにはどうすればよいのでしょうか?
元に戻すってどういうこった? 単位行列渡すだけじゃダメなの?
>D3DXVec3TransformCoord のかわりに D3DXVec3TransformNormal でいけると思う。 この二つってどのような使い分けなのでしょうか?
ヒント:w成分
>>203 D3DXVec3TransformCoordはV(x,y,z, 1 )として行列変換される
D3DXVec3TransformNormalはV(x,y,z, 0 )として行列変換される
行列の掛け算の式を思い出してもらえばピンと来ると思うが
つまり、変換行列のD3DXMATRIXで言うところの
_41, _42, _43, _44(つまり移動成分)を計算に含めるかどうかの違い
1なら移動も含まれるので主に位置座標の行列変換に用いられる
0なら移動成分の計算結果も全部0になってしまう
つまり回転と縮小のみが適応されるので
ベクトルや法線など単純に向きだけ変えたい時の行列変換に用いられる
↑文末日本語崩壊してすみません、「上手く壁ずりする方法について」 です・・。
>>206 3DRPGならともかく、アクションゲームなら実用に絶えない。
だって、キャラがジャンプすることも考えてないし、90度以下の角度禁止なんて、実用レベルでは使い物にならない。
そんな制限PlayStation1の時代でも許されないだろ
とりあえずBulletとか既存の物理エンジンとか組み込んでみる方が早いんじゃなかろうか。
万能な壁すりの方法は無いんだよなぁ 結局アタマひねっていま自分が作りたいに一番合ってる方法を考えないといけない
壁ずりだけで物理エンジンとかないわー。 (A) 進むべき方向に、移動量分キャラを進める。(当然、速度が速すぎて薄い壁を通り越してしまう場合は、ある程度細分化する) 壁の中にめり込んだら、二分検索で「壁にめりこまないぎりぎり」の位置を探す。 その位置までに消費した距離を求め、移動量から引く。 残りの移動量をどうするかを考える。 本来の進行方向から、左右交互に1度ずつずれた方向へ移動を試みる。 左に1度、右に1度、左に2度、右に2度・・・ 壁にめりこまない方向を発見したら、その方向が進むべき方向。 goto (A) 欠点。 「残りの移動量」がある程度大きい場合に以下の欠点が出る。 ・でっぱった角を抜けやすい →左右1度ずつずらして空き方向を検索する際、残りの移動量を使わずに「わずかな移動量」で方向を決めるようにすると解決 ・でっぱった角の部分で、精密に角に密着して移動してくれるわけではない →1フレームに進む距離なんてたかがしれている。1秒に10cm進むとして、角から離れてしまう量は最大10cm。気にするな 利点 ・計算コストがわりと軽い ・どんな悪条件でも壁にめりこまない ・プログラムが簡単
壁ずりだけで物理エンジンは手間かもしれないが 実際には球と壁の判定で行わないといかん事を考えると相当手間だしデバッグも面倒くさい。 どうせアクションとかならキャラ同士の判定も必須なんだし 物理エンジンを使えるようになった方が手っ取り早いと思うけど。 判定基準が球じゃないんだったらレイ飛ばして反射ベクトルを求めればいい。 そのままだと反射してしまうから反射後の位置と反射前の位置の中点が 丁度壁にそって移動した場合の壁の平面状の位置になる。 あとは壁の衝突点からその移動先の点へレイをまた飛ばして あたらなくなるまで繰り返すと綺麗な壁ずりが出来る。 球の場合は激しく面倒くさい、やり方の詳細はリアルタイムレンダリング第2版読むよろし。
>>191 質問の意図が分からないが物理エンジンで使われてる
が、大抵そこはそとからは触らなくても良い
DirectSoundで質問です。 いままで DSERR_BUFFERLOST が返されたことがないのですが、どういう時にロストが起こるのでしょうか? DirectSoundBufferのロストのテストをしたいのですが。 Direct3Dのデバイスロストは、モニター解像度の変更などで簡単におこせたので楽だったのですが、 DirectSoundではどういうことをすればロストしますか?
USB音源抜くとか?
デバイスマネージャーからサウンドデバイスを無効にするとか
>>205 なるほど!
よく分かりました。
詳しい説明感謝します!
ありがとうございあました
>>206 Directx9必携にこんな壁ずりの式があったんですが、どうでしょう?
S=L-(N * L)/(|N|^2)*N
S:滑りベクトル
L:移動ベクトル
N:ぶつかる面の法線
当方線形代数に詳しくないので、
深い知識もっている方補足があったらたのんます
なんだ既出だったのかスマソ
VC++2008EEでの質問なんだけど、 DirectX導入したんだけど、プログラム打ち込むのはサンプルビューアからやるの? そんともVC++2008EEのスタートページから1から組んだほうがいいんすか?
とりあえず表示したいだけなら EmptyProject をベースにしてもいいけど ちゃんと作るつもりなら1から組んだ方がいい
ありがとうございます。
S=L-(N * L)/(|N|^2)*N |N|^2ってなにやってんの? |N|が1以外になるとしたら法線じゃないよな。1^2は1だし…
>>224 単位ベクトルじゃなくても法線は法線だよ。
それを正規化するために |N| で割ってるんでしょ。
>>218 の式ではちょっと変な位置に割り算が入っているけど、
S = L - ((N/|N|) * L) * (N/|N|)
と書き直せばわかりやすいと思う。
ああ、もちろん1個目の * は内積ね。
ああそゆこと。さんくす
いくつか教えて下さい。 動画から1コマずつ取り出して、合成だのエフェクトだのをぐちゃぐちゃっと 加工して出力するのを作ろうとしてるんだけど、DirectX8のDirectShowでの やり方はぐぐって見つけましたけど、現状のDirectX SDKって9までしか 入って無いですよね?(Redistの中にも9までしか見当たらない) Qedit.hどこ?ってレベルなんです。 1、DirectX9or10でDirectShowってどこに行ったの? 2、どこかDirectX9or10での動画の扱い方について、解説orサンプルが ある様な勉強できそうなオススメサイト知っていたら教えて下さい。
つplatform sdk
そういやVisualStudio2010からWindowsSDKが一緒にインストールされるようになったな てか2010いろいろ楽しすぎる。ちょっと楽しみ
既に楽しさを実感しているのに楽しみとな?
WindowsSDKってなに? 俺はdirectx9で止まっています
WindowsSDKは旧称PlatformSDK .NET FrameworkSDKと統合されてそう呼ばれるようになった 本来はVisualStudio買わなくてもWindowsアプリが開発できるように 無料でマイクロソフトが公開してるヘッダとライブラリだけど DirectShowをはじめVisualStudioに含まれないライブラリが含まれるたり VisualStudioより更新が早かったりするので併用されることが多い
>>208-211 >>218-227 沢山のヒントやご助言ありがとうございます。完璧な方法は無いんですね。
>結局アタマひねっていま自分が作りたいに一番合ってる方法を考えないといけない
との事で自分の理想に沿って作っております。
物理エンジンという存在も遠く聞き及んでいましたが・・こういう時に導入するのですね。
数式の方は私にはいまいち理解できませんが、いつか読めないとヤバくなりそうな・・。
様々なお話ありがとうございました。少し現実が見えて気がします。
235 :
206 :2010/06/02(水) 17:49:40
↑名前書き忘れ、ありがとうございました;
壁すりを物理エンジンに頼るのは ぴょんぴょん跳ねちゃったり地形にはまり込んでスタックしたりするからよく考えてからな
物理エンジンも使いこなすのは意外と難しい…
演出で使う分には便利だが ゲームのルールにかかわる部分で使うのは挙動が読めない分危険
239 :
228 :2010/06/02(水) 20:13:35
>229 ありがとう! なるほど、PlatformSDKに行ったんですか。色々納得しました。
ビデオカードの説明に何とかテクノロジーとか書いてあるけど 使うにはどうしたらいいの?勝手にやってくれるの?
プログラムってのはなぁ自分が書いたようにしか動かねぇんだよ てか、「何とか」テクノロジーって何だよ? 質問するならちゃんと書けよ
NVIDIA CUDAテクノロジー GPGPU NVIDIA 3D VISIONテクノロジー 立体視 NVIDIA Optimusテクノロジー GPU自動切り替え。ノートPC向け NVIDIA SLIテクノロジー GPU複数差し。3-way SLIテクノロジー・Quad SLIテクノロジーも。 ATI CrossFire テクノロジー GPU複数差し。Hybrid Crossfireテクノロジー・CrossFileXテクノロジーも。 AMD UVDテクノロジー Unified Video Decorder。動作再生支援 AMD VISIONテクノロジー HiDefマルチメディア・エクスペリエンス Dolby Headphoneテクノロジー サラウンド再生 PCI Expressテクノロジー シリアル転送インターフェース
これは恥ずかしい 高い壷とか買わされないように気をつけろよ
UltraShadow II Technology
UltraShadow IIの技術進歩により、シャドウ・ボリュームの 処理ためのパフォーマンスは(旧世代と比べて)4倍に向上しています。 こういうこと?
228で質問した者ですが、右も左もわからない状態から、なんとか フィルタグラフにISampleGrabberを繋げる所まで来ました。 判らない所が出てきたので、教えて下さい。 1、MPEG4(H.264)動画をIGraphBuilder->RenderFile()で読込ませて フィルタグラフを作らせ、このフィルタの途中にISampleGarbberを 割り込ませれればと思ったのですが、Microsoft DTV-DVD Video decorderのVideoOutput1には、ISampleGrabberが接続できず(中間 フィルタが無いって怒られる)、Line21というもう1つの出力ピン (チルダで始まる出力ピン)にはつながります。 しかし、ISampleGrabberCB->SampleCB()がコールバックされていない ので、画像が送られてきて無いみたいなのです。 (コンソールで作ってるのですが、コールバックされたら"."を表示 させても"."が出ない) Line21って画像が出力されない? それとも、ISampleGrabberの設定不足? 2、SampleCBでミューテックス等のロックを使うなとMSDNにあったのですが、 これはCreateFile(),WriteFile()も対象?(ブロッキングの関係?) リングバッファでも作ってコピーさせようとは思ってるのですが、SampleCB ではロック使うなって書いてあった(と思った)ので、ちょっと疑問に思って。 長くてすみません。
>>240 ,242
なんちゃらテクノロジーって、意識して使えるものと使えないものが
あるんじゃね?
(Intel Coreも、意識しないで高速処理の恩恵を受けてるやん?
WindowsやBIOSががんばってるんだろうけどさ)
>>242 最後のPCI Express テクノロジーなんて、どう使うの?
(わざわざ意識して使用する用途あるの?)って思わなくもない。
組み込み系だと、初期化を自分でやったりしなければならないので、
意識しないとだめだけど、使う分にはそこまで意識しないかと。
グラボ複数枚とかは、提供されているライブラリでボード単体を意識
させるIDでも渡すインタフェースが無ければ、意識する必要もなさそう。
特別に意識しなければならないライブラリの関数があるなら、それを呼ぶ
だけで使えるんじゃない?
なければ、普通に従来通りに作ればいい。
>>247 ありがとうございます。
ドライバやレジスタを直接叩いたりする必要はないんですね。
(コンシューマーだとあるんですかね
>>246 昔わからない時grapheditにかなり助けられた記憶がある
あとDirectShowと戦うスレというのもあるよ
>>246 DirectXスレでDirectShowの質問しても、答えてもらえる確率は低いと思うよ。
ロックするなってのは、そこで処理がブロックされると動画の再生も止まるから
WaitForSingleObject等の待機関数を使うなってことじゃない?
使うならEnterCriticalSectionじゃなくてTryEnterCriticalSectionとか。
251 :
246 :2010/06/03(木) 22:35:23
今北区。回答ありがとうです。
>>249 grappheditは、あるのを思い出して使ってみて、ピンの構成がわかったの
ですが、なぜ繋がらないかっていうのが未だに理解できてないんですよね。
とりあえず、もうちょっとぐぐってみてから、DirectShow戦士になって
きます。
>>250 言われてみれば、既にDirectXから分離してるんだから、ここで質問しても
確かに確率低そうですね。
やっぱり、ロックする=動画再生が止まる→フィルタとしてはアウト、って
ことですよね。
とりあえず、DirectShowと一戦交えないと、この類は難しそうですね。
thxでした!
252 :
デフォルトの名無しさん :2010/06/05(土) 11:07:34
レンダーステートの設定で D3DRS_ALPHABLENDENABLE → TRUE D3DRS_SRCBLEND → D3DBLEND_SRCALPHA D3DRS_DESTBLEND → D3DBLEND_INVSRCALPHA を設定しており、頂点色0x7000ff70のポリゴンを表示しようとしているのですが、 全く半透明になりません。描画順番は @下地の描画 A少しカメラ側に寄った位置に半透明ポリゴン描画 をしています。 色々検索してみてもこの設定なら出来るはずだと思うのですが、何か見落としている設定があるのでしょうか?
テクスチャ無しの素ポリ?
254 :
252 :2010/06/05(土) 11:32:07
>>253 まさにそこでした。
@の下地の描画の時にSetTextureでテクスチャを設定していました。
Aのポリゴンはそもそも頂点フォーマットにuv値がなく、そのまま描画しようとしていましたが、
念のためにSetTextureでテクスチャを外すと半透明表示されました。
今スプライトを使って2Dのシューティングゲーム作ってるんですが、 最初のタイトルメニューから移行する際に画面をだんだん暗くしてから、 次の画面に移行したいと思ってるんですが、どういう方法を用いれば、 そのようなことが可能ですか?
表示一番手前に画面サイズの黒い板ポリ置いて透明度を0→1.0(255)へ
なるほど!いや〜助かりましたわ!
全ての描画をID3DXSpriteで行ってるなら
Drawのカラーを0xffffffff→0xff000000に変化させるでもいいけど
それ以外で描画してるものがあるなら
>>256 が手っ取り早い
Drawでは色々カラーを変化させながら描画してるタイトル画面なので
>>256 でやらせてもらいますわ!
ありがとう!
文字のテクスチャを返す関数を制作しているのですが、 dx_3DDevice->CreateTexture(GM.gmCellIncX, TM.tmHeight, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT,&pTexture,NULL) //テクスチャの作成 pTexture->LockRect 0, pLockRect, Null, D3DLOCK_DISCARD //ロック としたときどうしてもLockRectでエラー(D3DERR_INVALIDCALL)が出て先へ進めません。 D3DUSAGE_DYNAMICを指定しているのでロックできるはずなのですが…どこが悪いのでしょうか?
ガンマコントロールってフェードイン/アウトに使うものではなくて 色の調整に使うものだと思ってる
>>260 他で悪さしてないならそれで問題ないはず
SDK付属の簡単なサンプル(Tutorial 1: CreateDeviceとか)を
サンプルブラウザから適当な場所にインストールして
デバイスの初期化の後に
LPDIRECT3DTEXTURE9 pTexture ;
g_pd3dDevice->CreateTexture(256, 256, 1, D3DUSAGE_DYNAMIC, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT,&pTexture,NULL);
D3DLOCKED_RECT LockRect;
HRESULT ret = pTexture->LockRect (0, &LockRect, NULL, D3DLOCK_DISCARD) ;
pTexture->Release() ;
っやってちゃんとCreateTextureに成功するか、そしてロックできるか確認してみ?
それでダメならビデオカードが動的テクスチャに対応してないとか
>>261 システム屋系の思考の人ってこういう大雑把なやり方を忌避するタイプの人が多いけど
実はこのやり方はもう1つメリットがあって
ただの板ポリじゃなくてα値を仕込んだテクスチャを貼り付けて
透明度ではなくαテストの閾値を変化させることで
上から下にとか真ん中から外縁に向かってとか模様を描きながらとか
ちょっと変わったフェードを貼り付けるテクスチャを替えるだけで楽しめたりする
そうそう、拡張性があるよね。 簡単に加えられるという利点もあるし。 そういう考え方のほうが好きだなぁ。
バーションが904の時のdxlevelていくつですか? ゲームするのにバージョン指定したいのですが
↑CirectX9.0cです
>>266 ここはDirectX"プログラミング"のスレなんですが…
まぁ、一応答えると95
ガンマをいじるのはウィンドウモードでは使えないだろう。普段の開発が不便すぎ
>>270 そうだな
軽く試してみようと思ったが、なぜか効かねーし
構造体でいちいち不便だし、動的に扱うもんじゃねーな
すまんこデラックス
272 :
235 :2010/06/06(日) 11:47:48
273 :
235 :2010/06/06(日) 11:50:45
壁すりについて以前質問した者なのですが、 レイを飛ばし近づいたポリゴンにの3頂点を取得し、 その低い2頂点のyを抜いた平面の線分と キャラの現座標→移動予定座標 の線分との交点を求め最低限壁すりを実現したのですが、 ポリゴンの境目に来るとレイが上手く目当てのポリゴンに当たらず、 レイを上と左右に散らしながら当てて低いかつ線分交差が起きるポリゴンを探すように してみているのですが、中々上手く行きません。 3Dアクションでもっと安全にポリゴンの境目に対応させるには、 どうやるのが良いでしょうか? 90°以上のポリゴンを一切使わなければ、 足元のポリゴンの傾斜で押し返しを実装すれば良いのかもしれませんが・・
だから、そんな都合の良い方法なんて無いんだってば どうしても何か考えて欲しいなら地形のメッシュファイル出せ 状況が分からないと何も言えない じゃなかったらレイじゃなくてOBBでやれ
たしかbulletにキャラクター移動のサンプルあったよ
普通にポリゴンのサイズをを一定量拡張してるんでは駄目なのか? vector3 v0, v1, v2; const vector3 center = ( v0 + v1 + v2 ) / 3; v0 = ( v0 - center ) * 1.2f + center; v1 = ( v1 - center ) * 1.2f + center; v2 = ( v2 - center ) * 1.2f + center;
277 :
235 :2010/06/06(日) 13:40:02
>>274 >だから、そんな都合の良い方法なんて無いんだってば
これがその事だったんですか・・orz
考えてもみれば、角を構成するポリゴンも斜めで凄い鋭角もありえますし厳しいですよね、、
OBBについてもう少し詳しく調べてみます。ありがとうございました(´・ω・`)
どんなやり方しても角の処理は必ず頭を悩ます事になるはず 一口に3Dといっても色々あるからなぁ どんなステージを想定してるの? ジャンプの有無とかキャラの挙動も重要だし 厳密にメッシュで取らなくても データ上だけヒットボックスを配置しといて簡易的に当たり判定するのも手だし
判定用のマップを別に使うのもよくある手
Direct3D9でフルスクリーン表示している最中に、 GDIのウィンドウメニューを素早く表示する方法をご存知ありませんか。 現状device->SetDialogBoxMode()で表示させてるんですが、 そのときにハードウェアの動作モードが切り替わるので画面が揺れるし時間がかかります。
フルスクリーンモードを使わず、 ウインドウモードでスクリーンを覆うウインドウを生成して、 そこに描画すればいい。 今となってはフルスクリーンモードの存在価値があるわけではないのに、 なぜ必死にしがみつくのか不思議でしょうがない。
最近のモニター高解像度だから、低めの解像度でかつ画面いっぱいでやりたいんじゃない? 私はやたらフルスクリーンにするゲームはやりたくないけど
コンソールゲームみたいでかっこいい!!
GDIに頼らず自前のメニューでやれば解決 DXUTgui使えば余裕でしょ
自前と言いながらDXUTかよw
286 :
235 :2010/06/07(月) 13:43:33
まだDXUTを変な外部ライブラリと勘違いしてる奴いるの? 必要なコード抜いてきて好きにカスタマイズすればいいだけなのに
DXUTはライブラリって言うより公式サンプル集だな システムとして使うかどうかは別として 所々、目から鱗的コードがあって面白い
>>281-282 去年の製品になるが、BIOHAZARD 5だってエクスクルーシブ・フルスクリーン表示。
そういう仕様だってまだ全然珍しくない。
フルスクリーン表示を伴わない全面表示も実装済みだが、
やはり両方で動くことに越したことはないので。
>>284 ,287
既にGDIで一通り実装済みなので、単に手間が増えるだけなのがどうも……。
他に方法がないならそうするけど。
ゲームならフルスクリーンが基本だろ常識的に考えて
いまは解像度がデカイし Wiki見ながらやることも多いからそうでもない
両方とも需要があるから両方実装しましょう
両方実装してコンフィグで設定できるようにするのが基本。 動的な切り替えやデバイスロストへの対応なんてまず最初にやるだろ。
しかし、そこを難しく考えすぎて躓く初心者が後を絶たないから とりあえずそんなのは後でいいからゲームなりアプリなり完成させろよ、といいたい
下手糞ほど他との依存関係が強すぎてこういう部分で苦労するんだよね 作成途中で入れるにしても自分のPGが下手糞かどうか判断するいい仕様だな 力が及ばなければやらないほうがいい
デバイスロストしたらリソースを作り直せばいいんだよ
そもそもデバイスがロストしないようには作れないのかよってのが長年の疑問
いやだから10からはロストは無くなったしいずれは無くなる話題だが 9がまだ現役である以上仕方が無い
デバイスロストしたらプログラムを終了すればいいんだよ
デバイスをロストするまでの過程が大切なんだよ
>>300 それだとプレイ中にメッセのチップWindowが出た瞬間にお陀仏だな。
おーぷnじーえるで作ればロストしないよ
デバイスロストしてもいいようにテクスチャはIDかなんかで間接的に参照したほうがいいんですか?
>>304 OnLostDevice/OnResetDeviceの呼び出しが必要なすべてのリソースを
一箇所のコンテナでまとめて管理する。
必要になったら一斉に処理する。
>>304 そういう判断が自分で付かないレベルの人はおとなしくD3DPOOL_MANAGEDで作りなよ
そこに時間かけるくらいなら他にやることはいくらでもある
>>306 リソースをリロードするばあい対応できない
そこでだぶるぽいんたぁですよ
つかDirectX11でいんじゃねえの。 11さわっちゃうともうかったるくてDirectX9なんてやってらんねぇだろ。
DirectX11厨は黙ってなさい
とりあえず完成させたい俺は11使いまっせ
とりあえず完成させたいならなおさらサンプルも資料も大量にある9しかない が、まあ好きにすればいいと思うよ
>>263 素早い回答ありがとうございます。
パラメータを修正したら無事ロックできました。
>>314 今後の回答の参考のために
どこを修正したのかも出来れば書いて欲しいな
点A(1,1,1)から点B(3,3,3)の二点間の距離の求め方と 二点間の距離からX短くした時(これを長さLとする) 点Aから点Bの直線状で長さLになる部分となる座標はどうやったら求められますか? よろしくお願いします。
>>316 ぐぐれ
google「二点間の距離の求め方」
DirectX9のサンプルって ピクセルシェーダ1.0を使うのすら躊躇してる低スペック厨のサンプルもあってカオス過ぎる
>>318 なんだとちょっとリンク貼ってみろ
みてくる
>>316 D3DXVec3Length関数使うと超楽だ
>>316 // 2点間距離
LL = sqrt( dot( A - B ) );
//長さLになる部分となる座標
L = LL - X;
C = ( A - B ) * L / LL + B;
基本杉
それAとB置き換えないといけなくね?
2点間距離 d = √( ( x2 - x1 )2 + ( y2 - y1 )2 )
既出かもしれないですが、Win32コンソールアプリから、GetConsoleWindowして デバイス作ると見事に失敗します。 どっかから落としてきたサンプルでは(どこだったか忘れてしまった)ちゃんとデバイス作れて、 まったく同じコードをコピペしても初期化失敗します。 プロジェクトの設定もほとんど同じにしたはずなのに・・・ 違うといえばUnicodeとマルチバイトが違ってmainと_tmainが違うくらい・・・ プロジェクトの設定でここが違うと失敗する、とかありますか?
あるよ _T("") とかでやんないとエラー出たりする
今のソースや設定を保存しといて、もうひとつ完璧に同じにしたもの作ったらいいんじゃね
一応拾ってきたサンプルをUNICODEにしたら通ったんですよ。 もともと私のプログラムはUNICODEなんだけどすでに数千行もあって マルチバイトに書き直すのはちょっとつらい。 コンパイルエラーではなく IDirect3D9::CreateDeviceでS_OKが帰ってこないです。 とりあえずDirect3DCreate9してD3DPRESENT_PARAMETERSを設定して createdeviceしてるだけなのに、同じコードでも失敗します。
ちょっとそのCreateDeviceまでの最小コードうpってみろよ
>> 327 そうそう!これです。なぜか見つけられなかった汗 かなーり何が違うのかわからない状況ですが・・・ >> 328 う〜そうですね。こっちに自分のプログラムを移植したほうがはやそう・・・ ただ原因を知りたかったもので・・・。勉強のために。 とりあえずちょちょっとやってみます。
ウィンドウハンドル生成してる部分とかでウィンドウ名とか指定するだろ そういう文字列はUnicode→マルチバイト文字に変換してんのか?
333 :
325 :2010/06/10(木) 02:44:35
>> 332 windowは作成せず,コンソールwindowにやってたので一切文字系使ってなかったです. すんごい初歩ミスしてました… したつもりでd3dppをZeromemory出来ていなかった・・・ 解決しますた・・・ありがとうございます→みなさん m_pD3D = Direct3DCreate9( D3D_SDK_VERSION )return -1; d3dpp.Windowed = TRUE; //あと,幅とかフォーマットとか d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.hDeviceWindow = ::GetConsoleWindow(); if(FAILED(hr=m_pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL, param.hDeviceWindow, D3DCREATE_HARDWARE_VERTEXPROCESSING,¶m,&m_pd3dDevice))) で普通にいけますた(途中少々略).
>>327 のソース弄ってみてたけど、GetConsoleWindow()って挙動おかしくないか?
NULLでも強制終了されないし、処理がデバッガで追えなくなるし
なぜかコンソール起動できるし
335 :
325 :2010/06/10(木) 03:58:51
GetConsoleWindow()がNULLになるんですか?? いまのとこはなってないです.デバッガも普通どおり動いてますし, もともとコンソールプログラムなのでコンソールも起動していますが, なにか変になる条件があるんでしょうか??
再起動したら動くようになった 謎すぎる テストとしては面白かったけど、本番じゃ怖くて使えないわ
>>311 XPではエミュレーションしてくれんじゃなかったの?
Vistaや7に、9世代10世代のビデオカードが刺さってるときに 11を(可能な限り)エミュレートしてくれるだけで XP上でエミュレートしてくれるわけじゃない
>>337 XP以前とVista以降はビデオカードのドライバの設計が根本的に違うので
DirectXのサポート具合もぜんぜん違う。
いい加減消えてくれ、ロートルXP。
それがDirectXと何の関係が?
関係ないのですか? モデリングだけの問題なのですか?
へー
どーでもいいけど足開きすぎじゃね
>>339 機能的にDX10〜11相当のOpenGL3〜4は、XPにも対応してるよ。
ゆえに、WDDMであるかどうかと、DX10〜11相当のグラフィック描画機能をハードウェアサポートできるかどうかは、本質的に関係がない。
XPで、DX10以降をサポートしないのは単にMSの勝手な都合だバカ。
>>346 ここはDirectXのスレなんですが。
すみません。半透明ポリゴンの描画順序のソートは、 D3DXVec3Projectを使う以外、何かさげな方法は有るでしょうか?
>>348 気にしない。
もしくは半透明同士で別に合成しておいて、
一枚のZ付き板ポリとして画面に描画する。
カメラの向いてる方向と ポリゴンの座標の 内積
あ、間違えた
DirectX11は普及率がまだ低いからこのスレでは話に出すなって何のスレだかもうよくわからんね。
>>352 勘違い。リセット時に煩雑なリソース管理が必要になるのは
DirectX9の設計の欠陥であってそれは策定された当時のデバイスドライバモデルに起因する。
ハードウェアの世代はこの場合関係ない。
実際、Vistaで動作しているDirect3D9ExはAPIは
ほぼ3D9のまんまだがリソースの問題がほぼ解決されている。
描画コマンドの発行のCPU負担が減ったって話も聞くけど、 同じような描画処理でも、DX9よりDX11のほうがだいぶ軽くなるのかな??
一応MSはそう言ってる。 11の場合はComputeShaderでポストエフェクト処理をする場合だと 描画処理自体をしなくてもいいからステートの設定とか全部省ける。
356 :
348 :2010/06/11(金) 02:33:27
11の話を出すななんて誰も言ってないような?
358 :
354 :2010/06/11(金) 07:58:54
>>355 ありがとう!
DX11への移行を考えておこう。
計算シェーダがおもしろそうなのもあるしね。
ソートはできない、カメラから見たZ値が求まる
>>359 カメラから物体へのベクトルと
視線方向の単位ベクトル(長さ1のベクトル)
の内積はその性質上
視線方向の直線に物体から垂直に降ろした直線との交点までの距離
つまりカメラからどのくらい奥にあるか、になる
内積・外積程度は勉強することをお勧めします
>>359 はアホだから無理だろうな
お気の毒に・・・
プログラミングの質問ではないのですが、適切なスレが分からなかったのでここで質問させて頂きます。 とあるゲームはOpenGL版とDirectX版の2つあります。 Zbufferと言うか、前後関係の表示精度がOpenGLはハイスペックのPCでも、 グラボなどのないロースペックPCでも、FPSが落ちるだけであまり変わらないように見えます。 一方、DirectXはロースペックPCでは精度が格段に落ちるように見えます。FPSはOpenGLほどは落ちないと感じます。 これはOpenGLはゲーム制作者のプログラムに精度が決定されるのに対し、 DirectXはハード資源を援用して決定されると言うか、フレキシブルに精度が決定されるのでしょうか?(FPS重視?)
>>364 それは実装次第。しかしDirectXとOpenGLの一般的傾向を捉えた質問だと思う。
OpenGLは元々ワークステーションで3Dグラフィクスを
処理し表示するためのものだからリアルタイム表示よりも
一定の精度が要求される傾向にある。
一方でDirect3Dは元々がゲーム向けだからリアルタイム処理が前提で、
そこからスペックに応じてどこまで品質を上げられるかが勝負になる。
そういった歴史な事情で、3Dゲーは多数の描画オプションが提供され、
ユーザーの側で品質を指定できるようになっていることが多いね。
366 :
359 :2010/06/11(金) 19:32:01
内積を二つの方向ベクトルの角度を求めるのに使うものとしか認識してなかった
>350は軸と座標の内積で、軸の直線状に座標を射影するってことを理解した
そういえば、境界ボリュームとか作るのに使うよな…
>>361 ありがとう
あ、忘れた
物体と背景の間の線はどうやってつけるのですか? 2次元で書く時の黒ふちとか輪郭みたいなものです
チョット大きい物体を真っ黒で描いておく
ちょwwどれよ??
ゲーム開発者は「ゆめりあ」を見てから目を覚ましたのさ 「ああ、萌えゲーに黒淵はいらねぇわ・・・」
こういう崩壊ってどういう理屈で起きるんだろう
ボーン?
ふぅ
>>368 昔から使われてるテクニックだが
出来たモデルを複製して、少し押し出したあと面を反転して黒くする。
当然頂点数は倍になる。
今はどうやるのが主流なんだろうな?
ピクセルシェーダーで 色差や深度差から輪郭を検出して線を書き加えるという方法もある サイズや精度次第でシェーダーにかなりの負担をかけることになるが 最近のビデオカードなら普通に行けそう
最近のビデオカードなら普通に行けそうだな
よくテイルズとかのエンカウントシーンで、画面にひびが入って割れた後に 戦闘に突入するシーンがあるじゃないですか? あれを表現したいんですけど、どうやってやればいいと思いますか?
>>381 演算用データを書き込んだテクスチャをつかって
全画面に対してピクセルシェーダでアニメーションをかけるか、
ひび割れた板ポリのメッシュを用意して画面のキャプチャをテクスチャとして貼りつけて
ポリゴンのアニメーションとして表現するかだな。
>>382 初心者には難しそうですね。。
頑張ります!ありがとうございました!
まだ知らないあたし
HwndRenderTarget.DrawTextLayout()とExtTextOut()で文字列を書く少しづつずれていく あと、GetTextExtPoint32だと一文字ずつ測ろうがまとめて測ろうが得られる結果は同じだったので、CreateGdiCompatibleTextLayout()の結果も同じだろうと思ったら、微妙に違ってた… いったいどうすれば同じになるんだ 詳しい人がいたら教えてほしい
フォントがプロポーショナルフォントだったりしないか?
>>386 等幅フォントでもプロポーショナルでも結果は変わらなかった
ExtTextOut() だとa-a-a-a-a-a-aになるんだが、
DrawTextLayout()だとa-a--a-a--aという感じになってしまう
>>385 すまん。肝心なことを書き忘れていた
この症状はどの大きさでも発生するわけではなく、10,11,14,16といったい値の時に発生し、12や18の時だとなぜか発生しない
シェーダの勉強をしてるのですが見てるサイトにDXUTMeshやdxstdafx.hなどが出てきて、2004年のSDKに入ってるらしいのですが 自分は2009のSDKしか持ってないのでできません。MSDNを見ても2004年の日本語パッチ?みたいなものでSDK自体をインストールできないように思ったのですができないのでしょうか? ググっても同じファイル名でも何種類もあるようですし 2009年番でそのまま置き換わってるというようなものではないのですか?
>>389 答え。そんな古い情報のサイトはあてにしない。
マジ?どゆこと?2009にあったシェーダの書き方とかあるの?
>>391 DXUTはDirectXSDKのリリースごとに最も変化する部分で
基本的に互換性は保証されないのでそんなものに頼ったサンプルのサイトは使えない。
2004年とか言ってるんだからDirect3D9のことだと思うが、これ自体は大して変わらない。
単独でビルドできる独立したソースコードでサンプルが書かれてるサイトを探すことだな。
ありがとうございました あばば
>>394 もうすでにその道は通った
CreateGdiCompatibleTextLayout()でuseGdiNaturalのフラグを真にしたときと偽にした時で試したんだが、どちらも結果は同じだった
どうなってるんだ?
397 :
385 :2010/06/12(土) 20:56:22
すまん 自己解決した pixelsPerDipのところでdpix/96.0Fではなくdpixとしていたのが原因だった スレッドを汚して申し訳ない つってくる
>>398 メンドクサイからプロジェクトファイルかmakeファイル付けてくれ
>>400 メンドクサイから市販のゲームを全部買って俺にプレゼントしてくれ
えっ
bullet必要でやめましたわ 悪いね
405 :
デフォルトの名無しさん :2010/06/13(日) 14:09:11
なくても通りますよ?
デバッグ全くしてねえな m_d3dParametersとか中身全部0じゃねえか ウィンドウのクライアント領域のサイズはちゃんと計算してねえから気持ち悪いし 適当すぎだろ
はい まずSDKの種類が違ったのでそこから手間取ってるレベルの初心者です
それに、Lambert2.fxコンパイル通らん 俺はここで抜け
まじですか てか、fxファイルの中でエラーが出ないような気がするのですがセッティングがおかしいのでしょうか?
>>409 float4x4 m_WVPP;の参照先が間違ってる。
あと、m_pZMapSurfaceをレンダーターゲットにしてない。
あと、Debugモードで動かしてよ。
Zバッファのサイズが小さいとか
vertex declarationがあーだらこーだらとか、ぽろぽろでるよ。
>>410 ありがとうございます
常にデバッグモードでやってます
Meshes.cpp以外はそのサイトの丸写しなのでそれ以外でミスがあるとわからないのですが
//レンダーターゲットをバックバッファに戻す
m_pd3dDevice->SetRenderTarget( 0, OldSurface );
m_pd3dDevice->SetRenderTarget( 1, NULL );
SafeRelease( OldSurface );を見落としてたことに気付いて付けましたがまだまだ線が出ません。
そういえばコンパイルは通るのですがこういうのがずっと出てました torashade2009\Debug\torashade2009.exe が見つからなかったか、ビルドされませんでした。フル リンクを行います。
>>411 DebugモードってのはDirect3Dのデバッグランタイムのことだよ。
これにして、実行時のIDEの出力ウインドウに出るデバッグメッセージをみるの。
また、fxファイルはそのソースだと実行時コンパイルだよ。
ここらへんの理解も怪しいなあ。
書くの忘れたけど、もらったソースで 表示されるトラは、Lambert2.fxの結果じゃない。 あれは、固定機能パイプラインの結果か?
なんとなくしか理解できません(`;ω;´) ソース仕上げてあげてくだしあ
これはひどい
だってもともとSDK2004ならコピペだけでできるつもりだったんだもの もう限界ぽ
http://codepad.org/e6tpZhUI :: .|ミ|
:: .|ミ|
:: .|ミ| ::::::::
::::: ____ |ミ| ::::
:: ,. -'"´ `¨ー 、 ::
:: / ,,.-'" ヽ ヽ、 ::
:: ,,.-'"_ r‐'" ,,.-'"` ヽ、 ::
:: / ヾ ( _,,.-='==-、ヽ ヽ、
:: i へ___ ヽゝ=-'"/ _,,> ヽ
:: ./ / > ='''"  ̄ ̄ ̄ ヽ
:: / .<_ ノ''" ヽ i
:: / i 人_ ノ .l
:: ,' ' ,_,,ノエエエェェ了 /
i じエ='='='" ', / ::
', (___,,..----U / ::
ヽ、 __,,.. --------------i-'" ::
ヽ、_ __ -_'"--''"ニニニニニニニニヽ ::
`¨i三彡--''"´ ヽ ::
/ ヽ :: ┼ヽ -|r‐、. レ |
/ ヽ:: d⌒) ./| _ノ __ノ
>>419 キター
ありがとうございます!
でもなんか中をくりぬいた虎がくるくる回ってるだけのようなのしか表示されないのですがあってますか?
とてもじゃないが完成までいけるとはおもえない。 素直に基礎からちゃんと始めるかありもののライブラリを使ったかのどっちかしかないだろ。
虎が白い理由を教えて下さい! 白くなる理由を知ってるという経験値が無いので何故白くなるか頭から生み出せないのです てか、玄人のみなさまならトゥーンシェーダの基本的なソースくらい一瞬で直せるものだと思っていたのですがそこそこむずかしいものなのでしょうか?このサイトは基本的なものですよね?
おまいのソースがひどすぎて治しづらい
ちょwソースはSDKチュートリアルの虎(メッシュの読み込み)+サイト(元々DXUTMeshを使うはずだったメイン+エフェクトとその実態とヘッダ)だけだぞw 俺が書いたのなんかほぼ0だし
どう作ったのかは知らないけど、 ソースの行儀が悪すぎなの。 エラー時の処理まったく入ってないでしょ。 HRESULTで受けてないし、 エフェクトロード失敗してるのにスルーして レンダリングループまわしちゃうし。 だから時間が掛かるんだよ。 (つーか、マジになって直してる奴がいるわけねーやんw)
だからコピペ…俺は何一つ書いてない。俺は何一つ書いてないんだ… 俺は悪くねえ だから直してくだしあ。おねがいしまつ
>>422 サイトの内容は基礎の基礎で難しいところは全く存在しないが、
君のソースがあまりにもひどすぎて手の入れようがない状態といえば通じるかね。
0から書きなおしたほうが早いレベル。
>>428 コピペだって言い張るならコピペもとのサイトの管理人にメールで聞けよ。
言い張るじゃなくてマジだから 2009チュートリアルの虎があって そのサイトは2004でDXUTMeshってのを使ってるからそれが無いからメインでメッシュ読み込むとかを移植したの 移植はコピペだし
>>429 じゃあ0から書き直して表示させてください。おねがいします
433 :
419 :2010/06/13(日) 18:53:15
>>432 >>419 のじゃ直ってないの?
おかしいなぁ、俺んとこじゃちゃんと輪郭線出ているが。
まあ、このソースは俺が有効利用、、、、ちゃんと処分しといてやるから
諦めるんだな。
マジですか?中が白抜きになってるようなのしか表示されないのですが
じゃぁちょっと0から書いてみるか
おねがいします
とはいったもののどの方法で輪郭描画するかが問題だな・・・。
このサイトに載ってるシェーダーの方法に近いのが良いです
>>439 キター
HWって何ですか?ハンドルウィンドぅ?
デバッグランタイムで一回流す方法を教えて下さい!
ん、もう片付いたんならサンプルいらんか
こいつ・・俺をおちょくっていやがる・・ッッ!!
欲しいです。 それと Direct3Dのデバッグランタイムに設定する方法を教えてください それとIDEってポップアップみたいなことですよね?ランタイムエラー、アドレス○○でエラーがでましたとかよく見るしそういう設定ですか?
wktk
やべぇ面倒くせぇ・・・ ComputeShader使ってもいいか・・・?
>>446 ぐぐりまくってます。それでも理解できないのです。良い感じのサイトがないし
IDEはハードとどうのこうのとかでてきたし
というか、自分で他所から勝手に拾ってきたソースコードを オレの責任じゃねえと 赤の他人にデバッグを押し付けるって 一体どういう了見だ。 まともなやつならそんな厚かましいことはできんだろ。
はい、申し訳ございません。
ComputeShaderは何かわかりません。サイトや一般的な方法が良いです。
それとHWというのを
>>439 と同じにして正常に表示させる方法を教えて下さい
この初心者君が今後成長できずに行き詰るとしても プロのプログラマーになりたいわけじゃないなら何も問題はないよ。
デバッグランタイム とかで検索してもまともに初心者的な使い方を解説してるページが無いのですが
これどうやってうpったらいいんだ?
ソースも上げてください
指定のピクセルシェーダをサポートしていません どゆこと?
MRTをサポートしていません あーあ
お前ら面白すぎw
MRTもダメ、PS3.0もダメってインテルのオンボ以下かよ。 DirectXのプログラムやる前にGTX480買って来いって・・・。
デルのE8500買ってオンボのままでつ できないのでつか?トラの方のやり方でもそのせいなのでしょうか?
>ビデオコントローラ:グラフィックス・メディア・アクセラレーター Intel G33 Express チップセット内蔵 少なくともDirectXでエフェクトをやってみたいとか心にも思ってはいけないレベル。 数千円で帰るからRadeon5000番台の安いのかってつけとけ。
客のPCのグラボがオンボだったときに 開発のみんなでよく歌った歌 オンボード(ガンダーラ)♪ オンボード(ガンダーラ)♪ They say it was in India♪
まじですか…そんなところに盲点があったなんて… それでトラの方が真っ白になるのもそのせいなのですか?
グラボと入門書買って出なおせ・・・な? どの道、この先詰まってばっかりで一歩も前へ進めねぇよ
>>465 トラもMRT使ってるし、そうなんじゃねーの?
つーかソースみろよ、お前の書いたソースだろww
トラの真っ白の理由
そっか…ありがとうございました これから夏になるので涼しくなったらグラボ買いまつ… ありがとうございました
でもグラボによって表示できるできないがある機能使って作るのって、ソフトウェアとして駄目なんじゃ?
//マルチレンダーターゲットに切り替え m_pd3dDevice->SetRenderTarget( 0, m_pColorSurface ); m_pd3dDevice->SetRenderTarget( 1, m_pZMapSurface ); ここか MマルチRレンダリングTターゲット グラボで決まるなんてシラネーよ
>>470 まあ確かにそうで、MSも改心してD3D10で性能統一しる!!とかやったんだけど
D3D11でまた妥協し始めたんだっけか?
>>470 おめーそんなこといったらPCで3Dゲーム全部うごかねーよ(笑)
ってぐらい3D描画の機能はグラボに依存してる
ソフトウェアとしてはサポートしてるかどうかを
起動時に調べて機能のON/OFFを行うのが正しい姿だろう。
コンシューマーには関係ないけど。
>>471 知らないのはただの無知。
マニュアルを読めばいい。ちゃんとチェックする関数もあるんだし。
まぁでも今から勉強するならDirectX11やっとくのが色々な意味で手っ取り早いと思うけどね。 DirectX9みたいにあの機能がないだとかあの機能があるだとか関係なく全部サポートしてんだし。
でも11極めるころには14ぐらいになってパソコンも高性能化して自宅でモーションキャプチャしてツクールで3DCGゲー作れるようになってるんでしょう?
3Dゲームはもうとっくにアマチュアの扱えるもんじゃなくなってるから 11だろうが20だろうが、作れないことに変わりはない
極めるのにどんだけかけるんだよ・・・。 APIだけなら1年もかかんねぇよ。
APIや仕様だけならDirectX9のより遥かに簡単にはなってる。 問題は汎用的過ぎて扱いきれるかどうかだが・・・。
よく極めるといっている人がいるけど、 具体的に極めるとはどういう段階なのか、 俺定義でいいから教えてくれ。
>>476 モーションキャプチャ程度ならPCの性能はとっくに足りているが、
いったい何を言っているんだ?
この先は超多段になったパイプラインがリセットされて フルプログラマブルレンダリングになるんじゃなかったっけか? そうなると低能ジャップの場合アマチュアどころかプロまで壊滅だな。
これから数年でビデオ機能はCPUに統合されるので 以前のプログラミング法に逆戻りするよ。ある意味で。
逆にGPU機能にCPUが食われてるけどな・・・。
CPUを対称型コア、GPUを非対称型コアとして ハイブリッドなマルチスレッドシステムを組んでおけば どっちに転んでも対応できるようになると思うよ。
でもどうせ2DSTGばかり作るんでしょ
directxが全て悪い
今時2DSTGはないだろ・・・
>>488 背景が3Dなだけで実質2Dばかりじゃね?
アクションとか色々ジャンルはあるのに なんで大半が2DSTGにいくんだろうな。 RPGやシミュレーションはデータつくんのが大変だから分るけど。
STGは2Dで十分だろ。せいぜい背景を3Dにするぐらいで。
初心者の2DSTG好きは某T方のせいだろ
>アクションとか色々ジャンルはあるのに >なんで大半が2DSTGにいくんだろうな。 作るのが楽だからかと。 俺の場合、何も考えずにアクション作ってみて、ショボすぎてお蔵入りしたのがある。
もうあれじゃね そんなに弾幕STG好きならComputeShader使って 100万発の弾幕とかやればいんじゃね。
流行ってるだけっていう はい,次の話題
上のほうで、エラー処理(HRESULTで受けて関数の処理結果をチェックする)を書くべき、というような 意見がありましたけど、自分は一切チェックしてないです。 問題があった場合、ブレークポイントを使ってチェックすればほとんど解決できています。 仕事でやる場合はマズいのでしょうか?
全てのエラー発生箇所をチェックして処理するのが開発の基本だよ。 仕事か仕事でないかに関わらず。 MSDNとかのサンプルにエラー処理がないのは省略されてるだけ。 エラー処理はアプリ固有のコードになるし、コード量も倍ぐらい増えるし、サンプルの意図にそぐわないから。 仕事で勝手にエラーを握り潰したり、無視して続行したりをやったら普通は問題になる。 仕事でなくても信頼性の低いコードとして窓から放り投げられる。
エラーチェック省くとバグとりに時間かかるし、自分の環境では問題なくても 他の環境で問題が出たときに困る それに何の出力もなしにプログラムがいきなり落ちたりしたら不親切
自分で書いたDirectXのプログラムをいろんな環境で動かすとわかるが、 およそありとあらゆる呼び出しでエラーが返ってくる可能性がある。 だからSlimDXなんかはエラーを検出すると 例外発生に置き換えるのがデフォルトの動作になってるくらいで。
自分でDirectXのAPI使うときも大体例外に置き換えるラップ処理してるだろ? DirectXに見習ってHRESULTで返したり、FAILEDだったらfalse返したりしないよな
自分とこで動くからって他人とこでもうごくとは限らないのがDirectX9の難儀なところ
エラーはログ吐いて例外飛ばせばいいんじゃないの?
ぶひ
例外は投げ捨てるもの
505 :
496 :2010/06/14(月) 18:48:15
なるほど・・・ たしかに、他環境で動かしたときにエラーが出てもすぐ分からないですね。 勉強になりました。
なんだかんだで修正アドバイスするお前らの男気に惚れるわ
ソースうpったらアドバイスくれるのか
サンプルくらいならいいが、それなりの規模になってくるとな
Microsoftのモーションコントローラー「Natal」、正式名称は「Kinect」に 6月14日14時17分配信 ITmedia News これでモーションキャプチャできるのかな
できないお
PCでモーキャプやりたいなら、Webカメラとopencvでいいんじゃない?
ちなみにMRT使用の2パスから MRT非使用の3パスにすれば ホワイトタイガーさんの糞PCでも動くんじゃないかな
ホワイトタイガーさんw
動いたところで描画数増えるから負荷やばいだろw
低スペック対応なんて、人口比3%以下の 俺のマシンで動かん金返せのモンスターカスタマーを突っぱねられればいいのだから、 特殊エフェクトなんか全部なしのモードが選べるだけでいいんじゃないの。
DirectX9SDKの複数のバージョンを入れても開発ってできます? DirectX SDK (February 2010) DirectX SDK (August 2009) DirectX SDK (March 2009) みたいな感じなんですけど・・・ また、DirectX SDK (February 2010)で開発してたとして DirectX SDK (February 2010)っていつまでダウンロードできるんでしょうか?
複数の環境をインストール出来るかは知らないが 複数のSDKを開発環境から参照してビルドは出来る SDKのインストーラはバージョン毎に自分で取っといた方がいいぞ
DirectX9cのカメラについて質問です。
キャラクターに追従するカメラを作成したいと思っております。
(例えば、モンスターハンターのカメラなど)
D3DXMatrixLookAtLH でビュー行列を作成しているのですが
下記画像での原点の位置を ( 0 ,0 ) から変更できなくて困ってます。
http://www.dotup.org/uploda/www.dotup.org969533.jpg どのような方法で変更するのか、教えていただけますでしょうか。
何度も出てる質問かもしれませんが
レスよろしくお願いします。
520 :
519 :2010/06/17(木) 15:46:43
図のZの向きが逆っぽいですが気にしないでください・・・。 編集ツールの絵をそのまま流用しました。
522 :
519 :2010/06/18(金) 05:30:00
便乗してわたしもカメラの質問 マウスの左クリックをドラッグするとカメラがトラックするようにしたいんですけど どうしたらいいでしょうか? マウスの移動量をカメラの位置と始点に足せばいいですか?
ヒント DXUTcamera.h DXUTcamera.cpp
>>525 仕様が明確になってないな
マウスのデータは2Dなのにカメラのデータは3Dなんでしょ?
それをどうやって変換するのか?ってのは仕様をがっちり固めなきゃ
どんなPGだって組めないよ
>>526 >>527 ありがとうございます
DXUTcamera.cppみました
操作性に難がありますができました
初歩的な質問で申し訳ないんですが、 LPDIRECT3DSURFACE9でLNK2001というエラーがでます。 どうすればいいんでしょうか?
ポインタ型自体が参照エラーになるわけがない。 夢でも見たんだろ。
IDirect3DSurface9の間違いでした
単にd3d9.libをリンクしてないってオチなんじゃ
リンクしてますよ。 GetBackBufferでbackbufferというのを取得したいのですが。
ちょっとエラーを全部書いてみろよ
スペルミスとかしょーもないオチに1票
これです。 Top.obj : error LNK2001: 外部シンボル ""public: static struct IDirect3DSurface9 * Top::backBuffer" (?backBuffer@Top@@2PAUIDirect3DSurface9@@A)" は未解決です。 if (FAILED(g_pD3DDev->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&backBuffer))){ return false; } DirectX9 August 2009
分かった クラスで静的なメンバ変数として宣言してるのに初期化してないからだ どっかグローバルスコープで IDirect3DSurface9 * Top::backBuffer = NULL ;
>>537 うわ、ほんとだ!
ありがとうございました。
初歩的なミスですみませんした。。。
HD5770買ってきてこれでDX11開発しようと思いSDK入れてサンプルブラウザからサンプル起動したら 有効なWin32アプリじゃないといわれて調べたらXPはDX9までしか対応してないのかよぉおおおおおお!!!!!!!
常識だろ
最近複雑だよな DirectX9形式でやってもいいけどさ だったら過去のバージョンもダウンロードできるようにしてくんね?って思う 途中まで開発してて1人新人が入ってきたからダウンロードしてもらおうと思ったら 最新しかダウンロードできなくて糞忙しいときにわざわざ最新に対応するしかなくなったとかある インストーラもとっておいたけどネットにつなげにいって最新しかインストールできないようにしてね? んで10と11は特殊OSしか使えないとか・・・DirectXの開発者様の掲げる理想が理解できない・・・
あるものを見つけられない無能な開発者を、順調にフィルタリング出来ているようだ。
>>542 これ押すとぜってー最新しかダウンロードできないんだけど
俺だけ?
>>542 インストーラーっぽいものも保存しておいたんだけど
実行すると最新とってくるか途中で止まるかするんだよこれが
>>544 俺は落とせるけど… ただインストールまでは試してない
>>545 webインストーラかなんか保存してたんじゃね?
普通の奴は500MBくらいあるんだけど
>>546 えー
なんか色々リンク飛ばされて結局最新のところにならね?
いや俺もデカイの保存してたんだけど途中で止まる
>>539 XPでジオメトリシェーダやテッセレーション、コンピュートシェーダ試したいだけならOpenGLやOpenCLで可能。
まぁ普通に7買ってくれば?
>>547 色々リンク飛ばされるって…
落としたいの選んでリンク先のDownloadボタン押して
Start downloadをクリックで終わりだろ?3回クリックするだけなんだが
>>549 わかったw
GenuineCheck.exeを起動する奴がダメだった
古いの消したらいったw
すまんw
今くらいの複雑さなら丁度いいフィルタになるからいんじゃね。 SCEハードほど難易度あげちゃうとアレだが複雑つっても 今のWindows環境なんて調べりゃすぐ分る程度のレベルなんだし。
DirectX9SDKの最終バージョンってどれですか?
>>552 まだまだ続いてるらしいから最新はわかっても最終はわからんな
9目線で選ぶならもろもろ含めてAugust 2007がお勧め
半端にフルすぎるだろ
>>555 D3D9とDirectDrawの最終更新のあったJuneの後で(9EXが使用可能)
DXUTが現在のものと互換になって(それ以前との互換性は無し)
いまは削除されたD3D8やMusic等のコンポーネントが含まれてるのが
Aug2007とあとはNov2007(確認してない)だから
Webサイトで公開されてるような古いサンプル動かしたりしないんであれば最新の使っとけばいいよ
DirectX9のサンプルとヘルプが含まれている最新版はどれですか?
ヘルプはこの前新しい日本語版のドキュメントが公開されたじゃん デベロッパーセンターでたぶんダウンロードできる サンプルは最新版にも入ってるだろ
なんでこのスレDirectX9の話題しかないんだろうとふと思った。 10や11って地雷なのか?
10は地雷11はやるべきだが現状9は避けては通れない
9を避けて通れないのは同人ゲー作る人だけだろw
現場に出るのが5年後くらいの若い人なら11からやっていいんじゃ
3Dの基礎知識がないと難しいんじゃないかと
openGLやったほうがいい気がする
んなことはない
今現場に出てるレベルなら9はいまさら勉強するものじゃなく使い古した仕事道具だしな。 3Dの基礎知識があろうがなかろうが単に叩くAPIが違うだけなんだからそこはDirectXのバージョンは関係ない。
現場とか仕事とか、子供が背伸びしているだけにしか見えないんだけど
9.3のレベル指定して11使えばいいんじゃね? 今更9使いたく無いし
PCゲームやるようなやつらはVistaか7に移行してるよね? サポート面倒だからXP早く消えてくれ
XPはまだまだ消えないよなぁ いま専門学校生とか大学生で1-2年後には就職活動しなきゃってひとはおとなしく9やっとけよ PCゲームだけじゃなくて最近流行の組み込みOS系の筐体もまだ9かGLの2択だから まぁ、本気で食いっぱぐれたく無ければ DirectXよりAdobeDirectorとかのオーサリングを勉強しとけと言いたいw
職の事を気にするならそもそもプログラムなんてやるな、で終わりだろ。
つまらない人ですね
面白くて飯が食えるなら苦労しねぇよ
面白い面白くないはともかく KYな発言を繰り返して友達いなさそうな雰囲気ではあるね
だな、いじめられてそう
日本じゃもうゲームで飯は食えないってどこの専門講師も大学教授も言ってる事だろ それでもゲーム業界に行きたいとか言うやつはよっぽど現実見れないバカ
でもリアルタイムCGプログラムはおもしろいなぁ。 何かゲーム以外で仕事できる会社ないのかな?
>>577 専門学校のうたい文句に騙されて結局就職できずに
そうやって自分を納得させてるんですねw
すいません、少々質問です
http://sky.geocities.jp/kmaedam/directx9/hello9.htm このサイトを見ながら今やっているのですが、このページの場合で
#include "resource.h"
#include "Main.h"
この3つのファイルが見つかりません。
この2つについて記述がないようなのですが、ここにのってるソースコードを動かすにはどうすればいいのか分からないでしょうか?
それと、変に初心者向けライブラリを作って態々それを使っての解説ではなく、
1から順番に説明していってくれているようなサイトはないでしょうか?
581 :
デフォルトの名無しさん :2010/06/21(月) 17:27:22
ageついでにもう一つ DirectX9の教本としてよさそうな物がありましたらどなたか紹介お願いいたします。
DirectX以前にC/C++での開発に関する知識が決定的に不足してます ここでいくら説明してもそこに乗ってるソースを今のあなたに動かすことは不可能です DirectX9の教本の前にC++言語の入門書を1冊消化することをお勧めします
c++の勉強しろ 終了
C++重要だよね いままで時間の無駄だったよ
>>580 > ☆DirectX 9.0 Summer 2004(.NET) からはテンプレート機能が無くなって、ここで説明する方法は使えません。
って書いてあるんだからそのページを参考にするべきではない
>全ソースコードを掲載しているので、これをコピーして動かして下さい。 が大嘘なので色々追記は削除することで 動くように説明してあげても良いけど includeが分からないレベルの人だと 長々説明させたあげくに 「なんだか大変そうですね。もう少し勉強してから出直します」 とか言われそうなくらい複数箇所の修正が必要 本気でやる気あるなら説明するけど、あんの?
ソース見たけどDirectX関係ねえw
591 :
578 :2010/06/21(月) 21:55:31
前にシェーダー使ったリアルタイム映像解析とか考えたけど それで論文書いてもDirectXって時点で「ハッ」って鼻で笑われるんだよなぁ べつにGLと比べて劣ってる部分なんて無いと思うんだが 学術分野だと何故かOpenGLじゃないと認められないと言う Windowsでしか動かないのが原因なのかアタマの硬いおっさん連中のせいなのか
>>592 微妙に論点がズレてる
その映像解析の理論や手法が重要なのであって
それを実現する機能がDXなのかGLなのかは大して重要じゃない
DXとGLの両方でサクッと作れって言うレベルの話で
作る方も評価する方も、そんなインターフェイスに捕われてる時点でレベル低って…
>>593 は、GPU使っただけの論文書いてる人に非道いことしたよね
595 :
580 :2010/06/21(月) 23:17:03
すいません、レス感謝。
今DirectX自体については
>>583 見てやってます。
>>588 お願いできますか?
というかすいません、
>全ソースコードを掲載しているので、これをコピーして動かして下さい。
これ前提で考えていました……ちょっと自分でも考えて見ます
include自体は分かってるつもりです……一応Cはやってたので
質問です。 DirectX9(February 2010)をつかっています。 プログラムを実行して描画が始まる前(一番最初のClearが実行される前?)にプログラムのウィンドウを非アクティブにすると 何も描画されなくなってしまいます。 デバイスロストかなと思ったのですがPresentの戻り値はS_OKになっていて正常のようです。 DrawIndexedPrimitiveの戻り値もS_OKになっていて何が原因で描画されないのか分からない状態です。 描画されない原因は何でしょうか?
実行直後じゃなく、実行後しばらくしてフォーカスを切った場合は大丈夫ってこと?
>>596 ウィンドウを非アクティブにすることが直接的原因じゃないきがす
fps60出ていなくて、
メッセージ処理のWM_PAINTの時だけ書いてあって、
ウィンドウの重なりで描画が消えてるだけとかあり得そうなので
チェックしてみてくだされ
599 :
598 :2010/06/22(火) 17:18:53
WM_PAINTならちゃんと描画されるか・・・ とにかく言いたかったのは描画ルーチンがうまく回っているか チェックしてみるといいかもしれない、ということで解釈してほしい
>>598 その辺、通常のWindowsプログラムとゲームプログラムの全く違うところだよな。
普通のプログラムはWM_PAINTを受け取った時だけ再描画する受動的な動き方だが、
ゲームプログラムはアイドル時に暇さえあれば書き換え続けるやり方になる。
>>597-600 ありがとうございます。
描画されるのを確認してからフォーカスを切った場合は正常に描画され続けます。
DirectXの初期化をしてからモデルファイルの読み込みとシェーダーの読み込みをしています。
読み込みをしている間、現在のデスクトップが写り込んだウィンドウが表示されていて
このときに非アクティブにするとClearで指定した青色で塗りつぶされたままになってしまいます。
ウィンドウの上に別のウィンドウを重ねたりしても青色のままなので一応ウィンドウは更新されてるみたい?
描画関数にブレークポイントを置くと止まるのでDrawIndexedPrimitiveは実行されていてS_OKになっています。
ウィンドウプロシージャはWM_KEYDOWNでエスケープキーでプログラムを終了する処理しか書いていません。
シェーダーのエフェクトはどうなってる? デバイスがロストしてるならエフェクトもリセットしないとだめよ
603 :
596 :2010/06/22(火) 20:59:49
すいません601=596です。
>>602 IDirect3DDevice9::Presentメソッドの戻り値がD3DERR_DEVICELOSTにならずにずっとS_OKのままなのですがロストしているのでしょうか?
それともPresentメソッドの戻り値以外ににロストを確認する方法があるのでしょうか
>>603 実は初期化のどっかからいって失敗してんじゃね?
全部ログに吐き出してみろよ
ウインドウモードだとデバイスロストってサスペンドとかにしないとならなかったような
>>605 他のアプリケーションが排他モードにすればロストする。
歯痛!
てか、デバックの領域になって気がするので最小コードにしてソースうp でも最小にしたらなんが動きそうな気がする そっからどこから動かなくなってるのか探るのが良いかもね
>>606 俺の萌えっ子スクリーンセーバーが起動すると大抵のゲームアプリは対応されてなくて落ちる
WM_PAINTで描画してないゲームが結構あるけど何なの?喧嘩売ってんの?
毎秒60回書かれるゲームでWM_PAINTで描画されなくて何が困る
WM_PAINTじゃアニメーションシーンが入るエロゲーができないじゃん
エロゲーかよ
高フレームレートで画面更新してんなら影響なかろう
OpenGLのスレはどこですか?
OpenGLは初心者がやるものではないだろう。
>>612 十分に高速な描画を行える自身があるなら30fpsはでるんだぜ。
618 :
596 :2010/06/24(木) 11:16:25
すいません解決しました。 マウスの移動量でカメラを動かしているのですが、ウィンドウが非アクティブになると DirectInputが値を取得できなくなって変数にでたらめな数値が入ってました。 それでカメラがおかしなところに飛んでしまって何も描画されなくなってしまっていたみたいです。 レスありがとうございました。
>>618 なんじゃそりゃ! そんな質問文の書いてないような情報をエスパーできるか!
ま、正常に動かん時なんてえてしてそんなもんさ……。
ずこー
DirectInputがデバイスロストしてるんかね。
>>618 ズサー
まあ良くあることだなw
俺も気をつけよう
>>618 なんで最初じゃなく途中で非アクティブにした時はちゃんと動いてたん??
DirectXでテキストボックスみたいなのを作るのはどうやったらいいんでしょう? 別ウィンドウではなく描画してる画面に作りたいのですが…
>>625 DXUTですか、ありがとうございます。
やってみます。
xjshxvあるあ、gA嗚呼ああ、ジャアdッvcぜdrfdっfghfっwf通雨ううっ伺うお8bgさ
>>628 OpenGLならGLUT系列のものがいくつかあるけどな。(freeglut、 GLUI)
Direct3Dならなんだろう。
先程上げたDXUTがそうだし、WPFもそう。
ほかに何か安定したツールキットあるんだろうか?
大きなとこなら自前でウィンドウシステム構築してるでしょ
>>631 利用できるライブラリやサンプルソースを探すという話題なのに
そのレスじゃあ何の答えにもなってないだろ。
何でよ。自前でウィンドウシステム作ればいいって話じゃないか
>>633 それなら「じゃあ作れ」で終わってしまわないか?
その材料が欲しいというなら、それもDXUIのソース見れ、で終わる。
ウィンドウモードで描画してるだけだろ。 ったくうぜったらありゃしねえ。
余裕があるなら自分で作ってみるといいよ ドットバイドット表示系の2D基盤をDirect3Dの上で作って、その上にUI構築基盤作って、 その上にウィンドウシステム作って、そのうえでデザインやらスクリプトとかでカスタマイズできるようにしたり いったんちゃんとした物が出来ればゲームプレイ時のUIとしても役に立つだろうし便利だよ!勉強にもなるし そういうのが面倒ならDXUT使えばよろし
どんな質問にも答えられる魔法の言葉 「自分で作れ」
ワロタw
まぁ、結局自分で作るしかないのが実情なんだけどね 初心者が難しく感じるのって絵が書けないからでしょ プログラムで出来る範囲で全部やろうとするからどうやればいいのか見当もつかないだけで 普通は横にグラフィッカー置いてデザイン出してもらってプログラマはそれを組むだけ 枠組みの仕様に関しては要打ち合わせだけど、かっこよく見せる部分に関してはうちらの仕事じゃない
キーの上おしたら+Z方向に向いて進む キーの下おしたら-Z方向に向いて進む (左右も同様) ってどうやるんでしょうか? 押されたキーの方向にローカル軸を回転させればいいんですかね?
なにかうまくいかないところでもあるのかね?
>>641 キーを押しっぱなしにするとグルグル回転しちゃうんですよね
>>642 現在の向いてる角度とって
進行方向の角度とって
キーおしっぱにしたら徐々に進行方向の角度に近づけていって
向いたらその方向で固定したらどうでしょうか?
ワールドマトリックスの3行目を位置に加算しろ
めんどくさいから、上押されたら90度左なら180ってしてる
>>643 ,644,645
ありがとうございます
とりあえず押されたキーの方向(8方向)に軸を固定で設定する事にしました。
徐々に向けるとか、右から左に急に向いたりするのって難しいですね
float angle = ...; // 自分の向いてる方向の角度 D3DXVECTOR3 dir = ...; // 向かせたい方向 // 向かせたい方向の角度[-180,180] float targetAngle = D3DXToDegree( atan2( dir.x, dir.z ) ); // 角度差、自分から見た目標の角度 float diffAngle = targetAngle - angle; // 角度差を[-180,180]に収める diffAngle = std::fmod( diffAngle, 360.0f ); if( diffAngle < -180 ) diffAngle += 360; if( diffAngle > 180 ) diffAngle -= 360; float a = 0; if( diffAngle < 0 ) a = (std::max)( diffAngle, -rotationSpeed ); // 左に回る if( diffAngle > 0 ) a = (std::min)( diffAngle, rotationSpeed ); // 右に回る angle += a; targetAngle でググるとこんな感じのが見つかる
if( diffAngle < -180 ) diffAngle += 360; if( diffAngle > 180 ) diffAngle -= 360; なんで360? 180じゃね?
一周360度で -190度 = 170度 -180度 = 180度 -170度 = 190度 ってなるでしょ
>>646 面倒臭そうなんでやめますっていうその根性たたきなおせよw
趣味でやってるぶんには別にいいだろw プログラマーになりたいとか思ってなけりゃなんでもいい。
そういうのが考えるのがダメな人はFlashでもやってればいいと思うよ
>>652 あれで凝ったもん作ろうとするともっと面倒臭いわ
あれこそ好きにやらせてくれと思う
趣味でもある程度学んだり面倒なことでも後の効率を考えて作ったりしないと行き詰まるがな
スタートラインに立つ前から、効率的な方法は何なのかグダグダ聞きまくる奴もいるが、 精神病としか思えないレベルなんだよな。
まあ、はじめの頃は色々と躓いてちっとも進まないから気持ちわからないでもないな
ニートが語るスレはココですか
仕事中ですが何か? まぁ、コンパイル中に2ch巡回してるダメ人間ですがw
会議中ですが何か?
現実逃避中ですが何か?
今からDirectX9の勉強を始めます。 オススメのSDKはどれですか?
最新
フイタ 矛盾してるようだが一応あってる。 そしてネットに転がってる古めのサンプルコードは動かないことがある :)
いつのまにかDirectX SDK June 2010が出ていたんだな VS2010で使えるようになってるらしい
それは知っていたがVS2010が発売開始してたのを忘れてた 注文しとかないとな。ありがとう
2010に乗り換えたいんだがFBX SDKの2010対応状況はどうなってるんだ? C++0xを切れば今のままでも使えることは分かってるんだが
VS2010のトピックって何?
669 :
デフォルトの名無しさん :2010/06/26(土) 14:19:46
楕円形で回転するのに壁との当たり判定ってどうすればいいの?
>>669 厳密なやり方はいくつかあるけど
「めんどくさいのでやらない」のが正しい
ゲームだったら複数の円を組み合わせて類似の判定を取るか
楕円周上に適当な密度で当たり判定用の円または点を置いて判定するくらいで十分
あとスレ違い
671 :
デフォルトの名無しさん :2010/06/26(土) 15:31:29
ごめん
ポリゴンで当たり判定作れるようにしてるならデザイナさんがいい当たり用ポリゴン作ってくれるよ
本当に2Dしか必要ないときはWindows SDKのDirect2Dを使ったほうがいいの?
いいからDirect3Dでやっとけって
それならわざわざあらためてDirect2Dを発表した意味あるのって感じなんだよな
Direct2DはGDIと混合運用するためのものだ グラフィカルなWindowsアプリをつくるためのものであって 2Dゲームを作るためのものじゃない やるのはいいけど逆にメンドイ部分が出てくるはず 最初からゲームなんて興味ないですって人ならスマン話だが
まてまてまて。
あ、書けた。
>>676 Direct2DというのはあくまでDirect3Dベースで2D処理するための汎用のAPIセットであって、
用途は限定されてない。
むしろゲームでは積極的に利用すべき優秀なライブラリだ。
Direct2Dレベルの豊富な機能を自力で実装しようだなんてぞっとしない話だろ。
前にDirect2D試したことあったが、 加算合成のさせ方がよくわからんかったから使うのやめた。 アルファ合成は簡単なんだが。 結局あれはどうやるのだろう?
アルファ合成は半透明合成の意
>>679 マジか
なんか嫌な臭いがすんな
できねーんじゃねん?(いや、試してないけど)
こーゆーの誰のレビューもしないで通してるんだろうか?
ってほど仕様に関して糞なの多いよね?>MS
>>670 何だ?めんどうだからやらないって?
ゲームだからを理由にすんなカス
ところがどっこい すごい方程式で計算しても 簡易で代替手段で計算しても最終結果はほとんど変わらないだなぁ 「面倒だからやらない」ってのは手抜きではなくて いかに楽に速くできる代わりの方法をひらめけるかどうかってことなんだよ 何でも物理やら方程式で解決しようとするのは3流のゲームプログラマ
ここはこういうすごい計算してるんですよ!って力説しても 周りは結局表示結果しかみてないから、ふーん、って感じだしな 厳密に計算した方法より フィーリングでこんなもんだろって直感的に組んだ方が ゲーム的に気持ち良くて評判良かったりするのは良くある話
でっかくてゆっくり動く楕円なら 当たり判定が正確じゃないと気になりそうだけどな。
>>683 その面倒だからと今の面倒だからは意味合いが違うと思うな
要は無理に楕円でやろうとするより楕円を使わないアプローチを考えろってことだろ? なにも間違ったことを言ってないと思うが 『めんどうだからやらない』は『難しすぎて出来ません』 とは全然違うぞ
>>682 の早とちりだろ
意味を理解してくれればきっといいあいにはならない
イマドキは面倒でもやるのがトレンド
>>669 はGJK法でググって手がかりにするがよい
ただしスレ違いなのでここで質問はしないでおくれよ
嘘教えんなよw
ここで何度も推奨されてるけど
「ゲームプログラミングのための3Dグラフィックス数学」って本に
解法の足がかりが載ってる。
個人的にGemsやGPUGemsよりまずこの本を買っとけと思う。
で、楕円体と壁の衝突判定だが、これは楕円体と平面の判定を考える。
楕円体やボックスなど対称な物は法線方向の実効半径ってもんがあって、
平面法線の実効半径を求め、その実効半径と距離を比較することで
平面と衝突しているか判定することが出来る。
時間と共に移動と回転する楕円体の場合、上で使った式に
回転行列M(t)と移動行列D(t)を組み込んで、tについて解けばいい。(t=時間)
M(t)はsin(t)やcos(t)で出来ているで、tについて解くとn次多項式になるんで、
nの上限は自分で決める必要がある。(nを増やせば精度が上がるが重くなる)
ただ俺はこの方法は使わない。別に同じように正確でもっと簡単な方法を使う。
これは教えない、自分で探せ。
>>683 のいうこともある意味正しいが、それはわかったうえでの話。
わかりもしない、検討もしないくせに、ゲームだからいいんだよは違う。
それはペテン師の言い訳であって、エンジニアの言うセリフじゃない。
うむ、ゲーム作らないでライブラリばっか作ってる『エンジニア』さんの意見ですね 相手が平面ならいいけど デコボコした地形を転がすとか考えた時に絶対簡易でやった方がまともに動くって
草の根BBSの頃から、日本のゲーム技術者は技術を隠す傾向が強かったね。 しかも隠しているものは「簡易な代替手段」そのものだ。 こういう性質が積もり積もって今に至る。
>>693 まあなぁ。現代的なゲームプログラミングに通用する
オープンソースの国産ライブラリやフレームワークががどれだけあるか考えれば。
国産オープンソースなんて皆無だろ。 つーかクローズドでもろくなもんねえよ?
国産とかならDXライブラリとかあるだろ。
>>694 そもそも特許だのなんだのでがんじがらめにしてんのは企業だろ。
思いついたネタが片っ端から会社の特許にされたんじゃ公開する気なんてねぇ。
>>これは教えない、自分で探せ。 >>これは教えない、自分で探せ。 >>これは教えない、自分で探せ。 >>これは教えない、自分で探せ。
秘伝の奥義教えてくれよ。エスパー頼むよ。 楕円が半径1の球になるように、移動ベクトルと、判定対象としてリストアップしたポリゴンの頂点の方をスケーリングしてしまうとか?
>>669 そもそも楕円がそんなに重要な形なのか?
オレならサイコロ型、球形、凸多面体ぐらいに分類してしまうだろう。
普通はせいぜい八角形くらいにするだろ。 えてして初心者はリアルタイムで高速動作する完全な形状でのコリジョンの処理方法があると思っているようだが。
当たり判定なんて以外とテキトーなのかな? 最近のゲームやってないけど
まあ、実際に経験しないと分からないんだよ 処理負荷の問題があるならだけど、ゲームとしてユーザーが気にならないレベルなら簡易化すれば良いんだよ 例えば、サウンドの発生とかも、うっかり ”厳密にタイミング違うけど気にならないレベル” なんて言おう物なら、キチガイのように ”駄目です、きちんと合わせて下さい” とか言いだす企画とか お前さ、自分で絵と音を判断して区別も付かないレベルなのに 言葉に踊らされてるんだよって感じ (厳密に言えば、ダブルバッファ使って2INTの画面遅れがあって2/16msズレてんのにユーザー気にしてないだろってレベル)
間違った… 2x16msな
モノリンガルジャップに10年落ちのゴミ技術をさも秘術であるかのように出し渋られるような屈辱を受けるくらいなら 英語勉強したら? NVIDIAのサイトには訳本だと1万円するGPU Gemsが3冊公開されてるし、 他所では、海外ではシェーダーのバイブルなのに日本では訳本すら出ていないShaderXも無料公開されてるし。 DXSDKのヘルプをまともに読めるようになるだけでもかなり違ってくるぞ。
>>705 実際には、デザイナの啓蒙も必要だから
プログラマだけが技術もっても意味無いケースが多いよw
どんなにLODを説明したり実画面見せてもも、
ローポリを3Dソフト上で拡大していじりながら
”細かい形がかわっちゃうからLODは使えない”
とか言い張って、全然LODを理解しないデザイナとかw
バッチ数を下げたいので、マテリアル分けはコストを考えて
って色々と説明やツールを用意しても、見た目がほとんど変わらないのに
キャラの一々全ての詳細部分のマテリアルを変えて
”こだわりでござい”ってデザイナとかw
プログラマに断りもなく、3Dソフトのレンダリング用に落ちてるシェーダー拾って
自分のプレビューと実記は違うと騒ぎ出すデザイナとかw
…全部実在ね、しかも最近の話なのが痛いんだわ…
クビ切れよそんなクズ。 オレはそんなのにはあったこと無いわ・・・。
別に、うわぁって言うほど珍しいことじゃないような そういう輩は何でもかんでもダメダメ言うと余計言うこと聞かなくなるから ある程度は妥協してあげる姿勢をみせて上げるのが上手く付き合うコツ 絶対に譲っちゃいけないところは譲らないけど 割とどうでもいいところをさも「キツイですけど、しょうがないですねー」 と引いてあげると上手く操縦できる
すげーw 人を使うのがうまいんだね。
>>698-699 秘伝でも何でもないよ。
誰でもわかる、簡単な方法で
聞けばがっかりする話だ。
ただ俺はそれにたどり着くまでに
それなりに苦労したんで、お前らみたいな
キリギリス野郎にタダで教えるのは腹が立つんだ。
2分法を使うんだよ、
dt=0で衝突しておらず、dt=1で衝突している場合、
dtを半分にしていって衝突判定を繰り返す。
これなら、どんな形状であろうと関係ないし、
どんな動きをしてもいい。
精度が欲しければ、半分にする回数を増やせばいい。
最悪32回もやれば、float精度を確保出来る。
(dt=0で非衝突、dt=0.5で衝突、dt=1で非衝突のケースは検出出来ないが、
レアケースとして無視する。これが許容出来ないならdtを縮めるしかないな)
特許がどうとか守秘義務がどうとか言っても、本音はそんなの。 いやあ、まさに頑固職人の発想だわ。
それ只のバイナリサーチじゃねえの
苦労も何もDirectXSDKのサンプルで普通にやってる事だろ・・・ せめてサンプルは全部一通り見とこうぜっていう。
>>714 何という名前のサンプル?
確認してみたいと思う。
>>716 他人には教えないくせに自分には教えろって変じゃないか?
知らないんですか?
英語分からないとほんと低レベルな争いになるんだな 発展性ゼロどころかマイナス
>>701 FPSのあたり判定ってどうしてんの?
結構適当で,足の先に当たってても当たってないことになったりってあるの?
すみません。みなさんは「モーション」をどう管理しているのでしょうか? 私はモーションの編集しやすさを優先し、じみに再生速度を1つ1つ調整しなければいけないので 別ファイルに再生時のもろもろの都合をそれぞれ別記しようとしていますが、 もっと良い方法というか、制作込みでもっと良いデザインパターンというのが有るのでしょうか?
編集しやすさも何もモデリングソフト側で設定すればいいだけの話だろ。 いったい何を言っているんだ?
モデルとモーションをモデリングソフトの形式からからゲーム内形式に変換するのに、1セット数十秒かかるケースなんじゃないか? だからちょっといじるたびに時間かかって仕方ないとか。 答えは簡単だ。頻繁に書き換えたいデータは別ファイルにする。テキストファイルでも何でもいい。
結局何が聞きたいのが良くわからん 製作の都合上、モーションファイルの他に設定ファイルがいるんだけど ファイル数が増えてしまうので何か良い方法はありますか?ってことなら パッケージ用ツールを別途製作して 適当なヘッダくっ付けて対応するファイルを連結してついでに圧縮なんかもしちゃって 読み取り時にヘッダを元に解析するとか
なんかプログラムうんぬん以前に、まともなモデリングソフトを一度でも使って出直すべき人間が多すぎる。
高価なモデリングソフトも持ってること前提で話進めるとかどんな初心者スレだよw
体験版でタダで使えるものもあるんだから、 一回使うだけなら高価かどうかなんて関係ないだろ。
できるかできないかを知りたいんじゃなくて 製作に使えるかどうかが問題なのに 試用期間の1ヶ月で全てを終わらせろってことですね?アタマ悪いな
1ヶ月も使って使えるかどうかの判断ができないのか・・・
制作に使うのではなくモデリングソフトの基本的な考え方を学べという話をしているんだろ。 だから一回使えと何度も言っているのに、本当に頭が悪いな。
話が全然かみ合ってないな
ぶっちゃけ、知識も技術もないのなら、 代わりにソフトに金をかけるのは必要だろう。
ここに質問しにくるような奴って フリーのメタセコとかブレンダーとかでシコシコ作ってるようなのだろ? それに対し高価なソフトを買えとか酷すぎじゃね? 試用版で基本を知るのはいいけど 結局使い続けられないならなんらかの代替手段が必要なわけでそれを聞きにきてるんだと思うが
基本を知る前から基本の代替手段が思いつくって、どれだけ天才かエスパーなんだよ。
基本が理解できたら、自分で解決できるようになるから、 質問する必要がなくなると思うよ。
すげぇ上から目線の奴が多いのなここ お前ら初心者のレベルの低さを舐めてるだろう 一度専門学校の講師に借り出されたことあるけど いまお前らがぼんやりと思い浮かべたレベルのさらに2段下くらいだと思ってもらいたい 最初はまぁこれも勉強かとおも思ったが3年くらいで我慢できなくなってやめた しかし自分の下に人が付くようになるとあの時の経験は無駄ではなかったと思うこともある
レベルが低いからこそ基本からやらないとダメだろ。
未経験の18歳にどんな期待をしてるんだろう レベルが高かったら教える人間なんて必要ないじゃないか
基本をすっとばして理解させられると、上から目線で思い上がっている人間てなんなの?
ずいぶんと必至な奴がいるな
まぁレベルが高い学生のところにはレベルが高い講師が呼ばれるだけだよな
スルーしないなら、こういうのは723にもう少し具体例を挙げさせて議論しないと不毛やん。
>>723 じゃ何がしたいのか分からんし、回答側が予想で話していても理解できまいて。
…そもそもDirectX関係なさそうな
デザインパターンという言葉を使うと荒れる良い例だな
746 :
デフォルトの名無しさん :2010/06/28(月) 13:53:42
質問です。 海外FPSとかをプレイしてるとマップ切替時に、マップデータロード、 テクスチャやオブジェクトロードしてるところまでは分かるのですが、大抵の場合、 Prechasing...みたいな文字が出てしばらく何かの処理をしています。 創造でいいので、おそらくこういう事をしているんだろうというのを教えて頂けないでしょうか?
FPSのソースがそこら中に落ちているんだから、いい加減な想像をする必要なんか無いだろ。 いったい何がしたいんだ?
基本からやり直して来いとか ○○見ろとか 質問に答える気の無い人はいい加減消えればいいのに
まぁ、説教したいだけなら「初心者」質問スレにはいらんわな。
ただ746はDirectX関係なさそうだしマ的でも無さそうなのでスルーしようと思ったが。
>>746 自分で言っている通りの処理だよ。そこでシーンデータ以外も扱うかどうかは物によるわな。
特にPCの場合、想定よりスペックが足りなければシームレスな設計でも処理落ちするし、
VRAMが確保できなければ最悪数秒とまるかも知れない。だから普通は、処理が終わるまでは警告を出す。
・・・だろ って書く人同じ人かな?
>>752 病気だろ
その判定w
俺も〜だろは結構使う
普通使わないだろ
2chで「だろ」はよく使われてるけど 「だろ。」の奴は同じ奴臭いな
>>756 上からみたら煽りしかしてないwwwww
基本的な質問で申し訳ないんですが、 画面サイズの板ポリを20個くらいのランダムな三角形で切れ目を入れて、 ばらばらになって飛び散っていくアニメーションを作ろうとしています。 モデルやアニメーションデータはどんなツールで作れるでしょうか。 できればフリーソフトの範囲がいいんですが。 実際の描画はID3DXMeshを使う予定です。
>>757 ホントだw
「だろ。」のレスは煽りしかしてねぇw
>>758 申し訳ないらなら質問しないでください。
>>758 その条件じゃ無理じゃないの?
三角形の区切りと飛び散り方が決め打ちでいいなら
ツールで動きを設定してフレームアニメーションさせればいいんだろうけど
切れ目もランダム、飛び散り方もランダムとかになると
普通に計算で頂点を区切ってそれぞれ動かした方がよさそう
>>760 >>761 は「だろ。」の人
めたせこでいうナイフツールかねぇ??
人間死に方は選べないが、生き方は自由だろ。 所得から控除じゃないよ。例えば、保険料は、所得から控除して残ったものに税金がかかるだろ。 なんぞこの検索候補
AABBと線分の交差判定ってどうやるんでしょうか? 英語のサイトでそれぞれx,y,zの成分を比較していくソースがあったんですけど、日本語で知りたい・・・
OpenCVに平面を細分化するクラスがあった気がする
まったく…
煽ってる奴は分かってるんだから回答してやれよ
それに頓珍漢なレスする奴も何だかなぁ…
>>758 悪いが、その程度は全てプログラムで出来ないと駄目だろw
変換済み頂点で、自分で全画面を構成するランダムポリゴンを作成して
自分で簡易的な物理式でも使って飛び散る変換をかけないさい
(マトリクスでも頂点変換でもお好きに)
ツールは方眼用紙とエンピツで十分
「だろ」の日記に嫉妬w
だろ。の人が図星を指されて顔真っ赤にして荒らしてるようにしか見えないw
コテつけて
上から検索してみるとここまで煽りに徹するというのも信念を感じるねw キモイーw
基本的にファイターなんだなw
>>762 ,770
どもです。ランダムと書いたのでうまく伝わらなかったんですが、
エフェクトの一種として使いたいだけなので3〜4パターンもあれば十分なんです。
数式で作ると規則的になってしまうだろうということでランダムと書きました。
切り目はモデラーで手で作れれば。
どちらかというとそこからのアニメーションでしょうか。
数式だけで飛び散っていく感じが表現できるのかなぁ。
あのね…ランダム使うとかって発想は無いの?
>>779 大丈夫
それぞれに初速度と方向ベクトルを与えてやって
毎フレームごとにに速度に減衰をかけたり
重力方向に加算するだけでかなりそれっぽく見える
どうしてもそれで納得できないなら
物理エンジン組み込むなり適当なサイトから方程式を引っ張ってくれば良い
>>767 AABBでぐぐったら、2番目にそれらしいのがヒットしたが・・
もしかして、ぐぐるなんて女々しい!2chだけが我が友!!みたいな人?
>>779 ソフトを探してるというのが質問ならXSI ModToolかBlenderでも使えば。たしか無料だし。
でもプログラムでやらないならスレ違いすぎだる
>>767 適当だけど良くあるレイとボックスの当たり判定して
衝突点までの距離が線分の長さより短かったら衝突じゃだめなのか?
爆発をビルボードで表現したいのですがやる気が出ません。ソース下さい
>>785 画像くださいの間違いじゃねぇか?
ここじゃねぇだろ
Googleで「爆発」「爆発エフェクト」あたりでググるとそれっぽいのでるから
真似て作ったらどう?(権利関係があるのでそのまま使うのはお勧めできない)
知ってる 初心者だから四角ポリゴン作って画像分割してとか時間かかるから面倒臭い だからソース下さい
だろ。の人が初心者の振りして荒らしてるだけです 触らないように
ちょwちげwww 爆発だけのサンプルくだたい 車輪の再開発面倒臭いのです ぐぐったらすぐソース出てくると思ったらでてこなかった
>>789 たしかにそんな臭いするねw
こういう糞な初心者のフリして
「だから俺がいてよかっただろ?」
的な展開にでもしたいのかな?
あったま悪いなw
>>790 じゃ「ビルボード DirectX」でググってどっかいけゴミクズ
ゲームそのものが車輪の再発明なんだよ。 嫌ならやめちまえ。
うぜー それくらい作ってくれよケチ 玄人のくせに
そういえば昔 ココかゲ製作板の方か忘れたけどDirectXの質問スレで 同じように叩かれて 「ここで回答してるのはほとんど俺だし 俺がいなくなったらこのスレ成立しなくなるだろ? でももうコネーヨって」 って泣きながら消えた奴がいたけど同じ臭いがする
このスレにおいて「だろ。」はNGワードにしても問題ないな なんも建設的な意見出さないし レス見てると相手の意図がわかってるくせにわざとはずしたレスばかりしてるし 育ちが悪くて会話するだけ無駄な人種だろーねw 開発にもこーゆーのいるよ 技術あるのに(っていうほどないけどw)いても全く役に立たないのw
だろ厨うぜー スレ荒れてなかったらたまにソースくれるのに
たまにソースくれ厨もうざいですお
荒らす ↓ 人が減る ↓ レスがないので嵐がいなくなる ↓ レスがつかずスレ消滅
それは本当に必要が無いスレだっただけだろう
板ポリにテクスチャの左端を表示させてここからテクスチャを右端まで動かしたいのですが void TexTrans(D3DXMATRIX &out,float u,float v) { D3DXMatrixIdentity(&out); out._31 = u; out._32 = v; } 描画関数中 D3DXMATRIX out; TexTrans(out,0.0,0.1); pd3dDevice->SetTransform(D3DTS_TEXTURE0,&out); pd3dDevice->SetFVF Effect->SetMatrix Effect->SetTexture 描画 としても動きません。どうしてでしょうか?
>>804 そんなもん、シェーダーの内容によってどうとでもなるので
提示されたソースだけではなんとも言えん。
>>805 どういうことですか?これじゃできないのですか?
>>804 毎回D3DXMatrixIdentityで初期化してるんだから動くはずが無い
あとそのままだとv方向に動かないか?
>>807 uvの方向はよくわからないので見て判断しようと思いました
D3DXMatrixIdentityを消してテクスチャのセットアップ時に一回だけD3DXMatrixIdentityするようにしてもできませんでした
描画のところは
UINT Passes;
Effect->Begin( &Passes, D3DXFX_DONOTSAVESHADERSTATE ) );
for( UINT p = 0; p < Passes; ++p )
{Effect->BeginPass( p ) ;
Mesh->DrawSubset( 0 ) ;
Effect->EndPass() ;
}Effect->End() );
これです
どこを変えたらテクスチャが動くようになるのでしょうか?
>>808 805も言ってるけど
シェーダーで描いてるならいくら固定機能でずらそうとしてもダメなんじゃないかな?
頂点シェーダーでテクスチャ座標出力してるところあるでしょ
そこをずらさないといけない
ちょっと頂点シェーダの中身書いてごらん
上の方(8行目あたりに、変数名は自分の好きなように float2 TexTrans = { 0.0f, 0.0f }; を追加 54行目を o.Tex0 = Tex0+TexTrans ; あとはプログラム側から Effect->SetVector ( TexTrans &D3DXVECTOR4(u, v, 0.0f, 0.0f ) ; uの値を徐々に変えていけばずれていくはず
あ、ごめ Effect->SetVector ( TexTrans &D3DXVECTOR4(u, v, 0.0f, 0.0f ) ; は Effect->SetVector ( "TexTrans", &D3DXVECTOR4(u, v, 0.0f, 0.0f ) ; で
>>811 >>812 ありがとうございます!ズレました!
シェーダーで描くというのはエフェクトを使うということでしょうか?
g_pMesh->DrawSubset( i );のみ→普通
Effect->BeginPass( p );にはさむ→シェーダを使っている
みたいな感じですか?
D3DXを使わないのであればID3DXEffecを書く必要性はないので、それだけで判断することは出来ない。
まぁ、大体その認識であってる 多分固定機能すっとばしていきなりシェーダーから入った人なんだろうけど それならそれで固定機能の事は忘れて シェーダーだけでやっていけばいいんじゃないかな 今回みたいに固定機能を使った古いサンプルを参考にすると動かないこともあるかもだけど
ありがとうございます シェーダー系でできるように頑張ります
>>812 「データ」「タバコ」「イクラ」などカタカナ言葉の日本語を原語のアクセントで読むのは間違い。
これらを間違えて読んでいると日本人である事を疑われるので気を付けるように。
えっ
えっ
自分以外がまともな回答をしてるのが許せない だろ。が荒らしてるだけです 触らないように
DirectXってどういう風に発音するの?
関西風に発音します
だいれくとえっくす。 昔人に聞いたときは、ディレクトエックスっていってたなぁ。
外国人がDirectXって発音してる動画ある?
ありますよ
中国人ってそういう反応するよね
829 :
723 :2010/06/29(火) 14:16:31
>>724 〜745
曖昧な質問をして混乱させてすみません。
定番という形がもし存在するならばそれに添えるように作りたくてつい。
自分なり考えてプログラム側をそれに合わせる事にします。ありがとうございました。すみませんでした。
>>735 Blenderなめんなよ?
自分でスクリプト組んでゲームないデータとかパラメータで持たせたり物理的なあたり判定データ組み込んだり出来るんだぜ
高いソフト使えばいい物が作れるなんて大きな間違いだ
フリーや安物のソフトを使い倒して自分の技量がソフトの機能を超えたら高いソフトでも何でも買えばいい
Blenderじゃなくても出来るけどな たぶん3Dソフトといわれてすぐに名前がでてくるようなソフトは全部できると思うぞ
>>832 だからぁ
無けりゃスクリプト組めるんだから自分で書けばいいでしょ
結局市販のフォーマットなんていつか自分のやりたいことが出来無くなるから(たとえばモーフィング)
自前で3Dソフトのエクスポーター、ゲームプログラムのインポーター位書けたほうがいい
何が言いたいかって言うと、高いソフトを買うのもいいけどそういう応用力があれば安ものでも十分やっていけると言う事
>>ここに質問しにくるような奴って
>>フリーのメタセコとかブレンダーとかでシコシコ作ってるようなのだろ?
こういう考えは間違ってるってことだ。初心者ほど金をかければ何か出来ると勘違いしている。多少楽にはなるかも知れんが金をかけても何もできない奴はできない
ボーンならメタセコ+Rokdeboneでいいじゃん
エフェクトのある部分だけコピーしたいのですがどうすれば良いのでしょうか? エフェクトを同じように2個つくてデバイスー>セットFVF、エフェクト2−>マトリックス、テクスチャー と設定したはずなのですが消えてしまいます。何が足りないのでしょうか? エフェクト1だとー>マトリックス、テクスチャーだと表示されます なぜでしょうか?
838 :
デフォルトの名無しさん :2010/06/29(火) 19:35:04
DirectXを学びたいと思ってるんだけどお前らはどうやって勉強したの? それとお勧めの本とかあったら教えてくれ
839 :
デフォルトの名無しさん :2010/06/29(火) 19:40:24
補足 C,C++,Rubyを経験してます
>>837 エフェクトってのは
ID3DXEffectのことなのかい?、それとも何らかの効果描画なのかい?
842 :
デフォルトの名無しさん :2010/06/29(火) 20:15:20
>>840 ID3DXEffectです!
エフェクト1−>ゲットマトリクス
エフェクト2−>セットマトリクス
これでコピーできてますか?
エフェクト1−>セットテクスチャをしようとすると
ID3DXEffect::GetTexture' : 2 番目の引数を 'IDirect3DTexture9 *' から 'LPDIRECT3DBASETEXTURE9 *' に変換できません。
となりますキャストしようとしてもうまくいきません。
>>844 全然コピーできてないと思うけど正直何がやりたいのかわからないので
ちゃんと丁寧に質問内容をまとめてくれ
コピーってのは同じエフェクトを複数表示したいってこと?
それとも
エフェクト1の演算結果をエフェクト2で使用したいってこと?
>>845 エフェクト1のマトリクス部分か、エフェクト1のテクスチャ部分をエフェクト2のその部分にコピーして使いたいのです。
やりたいことは
D3DXCreateEffectFromFileでエフェクト2.fxからエフェクト2に入れる
SetTechnique
OnResetDevice
描画中で
SetMatrix
SetTexture
ビギン→ループ(ビギンパスビギン描画エンドパス)→エンド
としてエフェクト1を使って表示してる物体とは別にエフェクト2を使って違う物体を表示したいのです
やりたいことは D3DXCreateEffectFromFileでエフェクト2.fxからエフェクト2に入れる SetTechnique OnResetDevice 描画中で SetMatrix SetTexture ビギン→ループ(ビギンパスビギン描画エンドパス)→エンド これでエフェクト1を使って表示してる物体とは別にエフェクト2を使って違う物体を表示したいということなのですが、エフェクト2の方は何かが足りなくて全く表示されないのです これを全てエフェクト1にすると上手くいきます ということで、エフェクト2のマトリックスが悪いのかなと思ったり、テクスチャが悪いのかなと思ってエフェクト1からコピーしようと思ったのですが上手くできなかったからです なぜちゃんと流れどおり設定したつもりなのにエフェクト2の方は表示されないのでしょうか?どうやったらコピーできるのでしょうか?
850 :
デフォルトの名無しさん :2010/06/29(火) 21:35:03
>>849 それはコピーとか関係無しになにか根本的なところが間違ってる
描画部分のソースコードを省略しないで全部書いて
void RendExplode(LPDIRECT3DDEVICE9 pd3dDevice,ID3DXEffect* Effect) { HRESULT hr; V( pd3dDevice->SetFVF( g_pMesh2->GetFVF() ) ); V( Effect2->SetMatrix( "g_mWorld", &g_Mx2 ) ); V( Effect2->SetTexture( "g_txScene", g_Tx2 ) ); UINT cPasses; V( Effect2->Begin( &cPasses, D3DXFX_DONOTSAVESHADERSTATE ) ); for( UINT p = 0; p < cPasses; ++p ) { V( Effect2->BeginPass( p ) ); V( g_pMesh2->DrawSubset( 0 ) ); V( Effect2->EndPass() ); }V( Effect2->End() ); } この関数を作って呼び出してます。引数のEffectは、Effect2をEffectと書き換えた後メイン描画中のEffect1を引数にして使いました、この時は、全部同じエフェクトですが物体は表示されます 出かけるのでレス返せなくなりますがエスパーよろしくおねがいします
DirectXについてよく知らないんだが、 DirectX9とDirectX11って具体的に何が違うんだ?
いろいろ
よく知らないならその違いを気にする必要はないんじゃないか? 答えても理解できないだろうし その質問の仕方じゃ 技術的な違いなのかプログラム的な違いなのか解からんし
>>855 んー、技術的にどういったことができるようになって、
どういうことができなくなった、もしくはやりづらくなったかっていうのを知りたいんだが…
9を今使ってて11に乗り換えると何がどーなるのかいまひとつなのよね…
DirectX9であと何年戦えますか?
>>857 それは判ってるんだけど…どういう技術が使えるようになったかって事が聞きたいのよね
質問を変えてみたほうがいいのかな?
シェーダモデル5.0って何ができるん?
DirectX11でググれ
>>860 やっぱりよくわからん。
ダイナミックシェーダリンクとかコンサバティブオーデプスとか
そういうことなのか?
>>861 wikiに書いてあるじゃん
高精細な描画を可能にするテッセレーションのサポートや新たな命令セットが追加されたほか、
GPUコンピューティングを実現するDirectX Compute Shader、マルチコアCPUに対応したマルチスレッディング処理、
HDR圧縮などの新機能を実装している。
だと
あんまり興味なかったらいらないんじゃね?
SDKのサンプルにわざわざ新機能の使い方が載っているのに、 質問する理由がさっぱり理解できない。
DirectX9で後5,6年は戦えるんじゃない? WebインストーラーでDirectXをインストールすると2004年のとかからインストールされるし
戦える戦えないより、 むしろDirectX9はいい加減放棄したいな。 せめてDirectX9Exがいい。 とっととDirectX11で作って問題ない世の中になってくれー
5-6年は無理じゃないか? DirectX9自体はすぐには消えないと思うけど マイクロソフトのやり方だとまず開発環境の方から締め付けてくるから 過去のサポートを打ち切ることで 最新の開発環境でやりたかったら11でやれみたいな流れにしていくと思われる
XPでもサポートしたらイイのにね・・・ OS売ろうなんて欲出さずに。
Direct3Dを使って2D画像をビルボードとして等倍で表示するとき、 画像全体だと問題ないんだけど 画像から一部を抜き出して描画させると微妙に半ピクセルほどずれてしまう……。 画像全体を表示させるときは左右上したどこもずれてないことは市松模様の画像を作って確認済み。 どこがポイントなんだろう……。
>>868 半ピクセルズレるってどんな状態か想像出来ないんだが
>>868 テクスチャのサンプラーモードを
D3DTEXF_LINEARからD3DTEXF_POINTに変更すると解決すると予想
>>869 そこは最初の段階で押さえました。画像全体ではずれずに表示できています。
>>870 描画位置が1ピクセル未満ずれること。2D描画だとまず無いだろうけど3Dだと当たり前に起こっちゃう。
>>871 確かにそれなら0.5ピクセル未満のズレなら解消できるだろうけど、
等倍じゃなく縮小表示させる時もあるんだよね……。
ちなみに、これらの話はDirect3Dで実装した独自GUI部の描画の部分です。
スマンが 描画位置のズレが気になってるのか フィルタリングのアンチエイリアスが気になってるのか良くわからなくなってきた 不満がある部分の画面のスクリーンショット見せてくれ
>>867 ぶっちゃけXPで動いたとしても同人や趣味レベルでDirectX11が主流になる気がしない。
もちろん技術レベル的な意味でな。
情報がDirectX9ばかりだもんな それで間に合わせてくださいって言われてるような感じさえする
11になったからって、べつに難しくなるわけじゃないでしょ。 なんちゃらシェーダーが増えても、使わなくてもいいものなら いくら増えても関係ない。 固定機能がなくなっても、固定機能程度の表現力でよければ 誰かが書いたシェーダーを使いまわすだけだし。
Xファイルが読めなくなったが初心者的には問題ないといえるか?
fbxを使えばいい fbx sdkは内部で何やってるか分からないから不安と言われたら、 お前みたいなカス如きがフルスクラッチしたガラクタライブラリよりは万倍マシだろうよ、 と答えとけばいい それとゲーム業界だとcolladaも結構使われてるんじゃなかったっけ? これもopencolladaやcollada DOMを使えばいける もしかしたらライブラリの英語ドキュメントを読めないパープリンもいるかもしれないが、 将来出版されるであろう日本向けDX11参考書には そういうカス向けにXフォーマットの代替手段とその使い方が十中八九収録されるだろうから それに頼ればいい
読み込みまでを9のヘルパー関数つかって 表示を11でやればいいだけの話では?
Direct3DRMが無くなるときも同じようなこと言ってる人いたけど、 みんな普通にDirectX5や7に移行してるしね。
11への移り時はいつ頃が良いんだろ? まあ7持ってないから移れないけどさあ
>>878 いやFBXはAdobeのプロプライエタリなライブラリなのでまずいだろう。
せめてオープンソースのものでないと
Windowsのバージョンが7.0になるくらいで11に移行すればいいんじゃない?
マイクロソフトが関わってないPCが主流になればいいのに
OpenGLが主流になればいいってことか? D3DXなしなんてソレこそ初心者からの質問が鬱陶しくなるだろ。
正直DirectXもOpenGLも初心者にはまったくお進めできないぐらい 奇形に進化してしまった。1回リセットして新しいAPIを定義した方がいいと思う。
何度も言っているがD3D10以降はすげーシンプルっていうか、合理的で分かりやすい リファレンスだってサクッと読めるレベル 俺は初心者だったころから思っていたけど、D3D9は継ぎはぎだらけな感じがした
確かに分かりやすくなったねぇ。 ただ、9はシェーダ移行時期だし、期間長かったしで、そう思われるのはしょうがないけど、 あれでも随分シンプルで使いやすくなってたのよ FBXの方が導入は楽だったけど、拡張性で俺もCOLLADAに一票だな。バイナリ無いけど
X-Fileも自分でテンプレートを追加して、いくらでも拡張できるんだが、 ヘルプに親切な解説がついている割には、仕様を理解している人間が少ないのが実情。
Xファイルで問題なのは多くの3Dモデリングソフトメーカーからそっぽを向かれてること 標準性を言えばやっぱFBXかなぁ 11はGeForce400シリーズが型落ちしてお手ごろになったら本格的にやりたい
Xファイルって本来、XMLみたく勝手に定義して使ってねって感じだよな
COLLADAがオープン、FBXがAutoDesk推奨だっけ?
だれかCOLLADAの資料を翻訳してくれ〜
>だれかCOLLADAの資料を翻訳してくれ〜 翻訳以前に資料を見に行こうとすらしていないのがバレバレな馬鹿発言だな。
>>894 COLLADAのサイトで配布してるのって英語版のPDFでしょ?
馬鹿にはJapaneseという単語すら翻訳してやらないといけないらしいぞ。
なにそれこわい
>>888 そういやFBXスレって無いね
需要は特定の人間にはあるだろう
AABBとレイの衝突判定でAABBのどの面に当たったかどうか知るにはどうしたらいいでしょうか? レイの原点とヒットした面の距離は分かります。
Xファイル、趣味グラマにはとっても便利だったのに、サポート切られて残念。 拡張性、機能を多少限定したものでいいから、代替フォーマットを用意してほしかったなぁ。
ふむ
ぬふぅ
DirectXってWindowsとXboxだけでしょ? OpenGLはそれ以外のゲーム全てなのに
で?
つれたつれた
サウンドを何で鳴らすかという問題に直面する
USBブブゼラ
>>905 正確には「OpenGLっぽいAPI」「OpenGLに似せたAPI」「OpenGLを参考にしたAPI」
OpenGLそのままなんて実際にはそんなにない。だいたいどっかしら弄ってるし。
ATI拡張とかNVIDIA拡張とかうぜぇメーカー毎の拡張機能まであったりなかったり。
あるのかないのかどっちだよ
50年ゲームを作り続けてきた僕から言わせて貰うなら あるやつもある、ないやつもある
つれますか
915 :
デフォルトの名無しさん :2010/07/02(金) 05:26:05
は?
>>913 いやいやいやちょっと待てよ。
俺なんか3000本級のゲーム開発に何本も参加してきたけど、結局結論として思うのは
あるやつもある。だけど、ないやつもある。
3000本級ってなに?3000本売れたってこと?
ミリオン級とか言うだろ つまり・・・
日本全体で3000人にしか知られてないゲームか
3000本売れたってことは少なくとも30万人ぐらいは知ってると思うぞw
PCゲーなら1万本売ったら超ヒットだそ 開発期間にもよるが3000本なら頑張った方 2000本なら吊らないといけんかもだが
いや売れたって言ってないし
また、だろ。が荒らしに来てるのか?
スネークマンショーだろ。 知ってるよそんくらい。
日本はいい国だなァ
いっきは100万本売れてないって知らなかったぜ
質問受付中です
質問右から左へ受け流し中です
DirectX 9Exって何ですか?XPで開発してる俺にも関係ありますか?
今飯食ってるから回答無理
飯のタネを教えるわけにはいかん
>>929 9EXはVista向けだからXPで作ってるのなら関係ない
デバイスロスト時にテクスチャなどのリソースを作り直す必要がなくなったりする
>デバイスロスト時にテクスチャなどのリソースを作り直す必要がなくなったりする 違うよ、そもそもデバイスがロストしない。
>>933 残念ながらロストはする
ただし、デバイスドライバが停止したりハードがクラッシュしたりでもしない限り
ロストはしないので「ほぼしない」というのが正しい
デバイスマネージャーからドライバを停止するとリセットは必要なことがわかる
グラボ付け替えたりしてもいけんの?
>>934 ドライバが停止したらそもそもリセットしても復旧しないよ。
>>936 グラボ抜いて(停止)
もう一回刺しても動かなかったっけ?
昔、会社で組んでた頃の記憶だけど
横からだけど、ドライバ停止しても復旧する例はあるよ 熱による事前停止とか
稼動中にグラボ抜く事なんてそうそうないだろw USBじゃあるまいし
2本挿してて出力切り替えると死んだはず 性質の悪いデザイナぐらいしかこんな使い方しないってのはその通りだと思う
デバイスの動作の変更 デバイスは、2 つの状況下でのみ喪失するようになりました。 つまり、ハードウェアがハングアップしているためにリセットされている場合、 およびデバイス ドライバーが停止されている場合です。ハードウェアがハングアップしている場合、 デバイスは IDirect3DDevice9Ex::ResetEx を呼び出すことでリセットできます。 ハードウェアがハングアップすると、テクスチャー メモリーは失われます ドライバーが停止された後は、IDirect9Ex オブジェクトを再作成してレンダリングを再開する必要があります。 プレゼンテーション領域がウィンドウ表示モードの別のウィンドウによって隠されている場合、 または全画面のアプリケーションが最小化されている場合、 IDirect3DDevice9Ex::PresentEx は S_D3DPRESENTATIONOCCLUDED を返します。 全画面アプリケーションは、WM_ACTIVATEAPP コールバック メッセージを受信するとレンダリングを再開できます。 DirectX の以前のバージョンでは、アプリケーションにモード変更が発生した場合、 これを復旧するには、デバイスをリセットして、 すべてのデバイス メモリー リソースとスワップ チェーンを再作成するほかありませんでした。 DirectX for Windows Vista では、モード変更の後に Reset を呼び出しても、 テクスチャー メモリー のサーフェス、テクスチャー、およびステート情報は失われず、 これらのリソースを再作成する必要がなくなりました。
>>941 グラボ切り替えたらステートなんて覚えてたって
そもそも切り替えたグラボの性能同じとは限らないじゃんな
ウンコばっかり気を配りやがって
>>942 グラボの性能はいいぞ
おれもダイエットに成功したからね
最近関係ないレスつけてるのって明らかに同じ人だよね そんなに流したい話題でもあるのかい?
どうなの?
?
グラボノイドか
技術的話題には絡めないけど 開発者気取りたいとかいうワナビーのやることにいちいち突っ込んでたらきりがない・・・
最近チップセットのオンボードグラフィックとGeForceを 動作中に切り替えられるのあるよね。 あれに対応するのはめんどくさそう。
対応しなきゃいいんだよ
あれDirectX使用中に切り替わったりはしないよ API呼び出し時に切り替わる(か、切り替わらない)、でアプリ終了時に戻る
モバイルラデ5850使ってDX11プログラム実行してて、 何かのタイミングでDX10のIntelオンボに切り替わってクラッシュなんて事になったら困るもんな
対応しなきゃいいんだって・・・
すごく初心者な質問だけど らでHD5850のようにdirectX10上がメインのでも 9.0cとかで動く?
試してごらん。 すぐに分かるから。
ども やっぱwin7にしなきゃだめか
動きたくない(お前のPCじゃ)
恐らく思いっきり既出の質問内容だと思いますが、解決方法がわからないので質問
させていただきます。
VC++2008 + DirectX 9.0c SDKの開発環境にてD3DXSPRITE機能を使い最低限の
2D表示を実現したいのですが、本に載っている最小ソースコードを実行したところ
SPRITEの描画結果がにじんでしまいます。
↓実行結果
http://jishinkuma.aa0.netvolante.jp/etc/nijimu.png D3DXCreateTextureFromFileEx関数にて24ビットの白と黒の2色しか使っていない
128x128のbmpファイル(Sprite.bmp)を読み込んでいます。
プログラムを実行した画面にも128x128の画像が表示されましたが、
Sprite.bmpに使っていない灰色が表示されて像がにじんだ状態です。
【ソースコードの一部】
//「テクスチャオブジェクト」の作成
D3DXCreateTextureFromFileEx( pDevice, "Sprite.bmp", SPRITE_WIDTH, SPRITE_HEIGHT,
0, 0, D3DFMT_UNKNOWN, D3DPOOL_DEFAULT, D3DX_FILTER_NONE, D3DX_DEFAULT,
0xff000000, NULL, NULL, &pTexture )
//レンダリング
pSprite->Begin(D3DXSPRITE_ALPHABLEND);
pSprite->Draw( pTexture, &rect, &vec3Center, &vec3Position, D3DCOLOR_ARGB(255,255,255,255) );
pSprite->End();
像がにじまないようにSprite.bmpに忠実な白と黒の2色だけ表示されるようにしたいのですが、
方法がわかりません。恐らくソースコードに数行追加すれば直るのではないかと思いますが、
どこにどのように追加すればよいのかわかりません。
すみませんが、追加する場所とソースコードをご教示していただけないでしょうか。
よろしくお願いします。
>>962 表示した画像の解像度はちゃんと128x128になってる?
printScreenキーでしっかりとってペイントに貼り付けて解像度を目視で確認した?
なんとなく128x128っぽい・・・じゃなくて・・・
画像が滲んだときに疑うこと(俺の経験で) 1.バイリニアフィルタがかかってね? 2.表示した画像の解像度が微妙に違う 3.初期化時に作成した画面の解像度が指定と微妙に違う 4.UVの設定がしけてる 5.元画像がハナからなんかおかしい 6.読み込み時におかしくなってる このぐらい?
966 :
962 :2010/07/04(日) 09:44:35
>>964 ペイントに貼付けて拡大して確認しました。
間違いないです。
>>965 本に載っている最小ソースコードなので足りない設定はあっても、余計な設定はないと思います。
>>966 1〜6まで全部確認した?
設定もデフォルト値調べてそれが自分の意図と違ったら設定しなおすんだよ?
これでダメだったらとりあえず俺としてはよくわからないなw
何言っているんだよ。 本がどうこうじゃなくて自分で設定を一つ一つ確かめろよ。
>>966 これはよくある質問なんだけど
ID3DXSprite::Beginは2D描画向けに勝手に色んなステートを書き換えてるので
いくらこの外で設定しても無駄、詳しくは
http://msdn.microsoft.com/ja-jp/library/bb174250 (v=VS.85).aspx
手っ取り早くやるなら
pSprite->Begin(D3DXSPRITE_ALPHABLEND);
pDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT );
pDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT );
pDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT );
pSprite->Draw( pTexture, &rect, &vec3Center, &vec3Position, D3DCOLOR_ARGB(255,255,255,255) );
pSprite->End();
で多分うまくいくよ
971 :
962 :2010/07/04(日) 11:20:17
パソコンからはアクセス規制で書き込めないのでPHSから書き込んでいます。
>>964 >>965 >>967-970 ご教示ありがとうございます。
>>970 その方法で上手く行きました。感謝します。
”手っ取り早くやるなら”とのことですが、
他に”きちんとした方法”が存在するのでしょうか。
少し気になります。
手っ取り早くやらないならD3DXSPRITE_DONOTMODIFY_RENDERSTATE使って 自分でステート弄くり回せってことでしょ
結論:そんなもの(ID3DXSprite)使うな
>>962 というかD3DXSpriteは通常だと座標変換すら使わないから、
フレームバッファのサイズとWindowの大きさが食い違ってたりしない限りは
指定したとおりに描画されるはずだよ。
意図した動作になってないなら指定が間違ってるわけで、
デバッガで動作を止めてパラメータを確認するか、最初からやり直せ。
>>973 ID3DXSpriteを使っているサイトをよく見かけるのですが?
それは初心者向けだから
ごめんなさい質問取り消します。
>>973 は荒らしかもしれないので。
なんで既に答えが出てるのに蒸し返すの? この手の質問って ID3DXSpriteで○○しようとしてうですが上手くいきません ↓ 回答 ↓ やっぱりうまくいきません の流れって ここで回答してる連中がID3DXSpriteなんて使うのを良しとしないのばっかだから ID3DXSprite::Beginがステート書き換えてるのを知らなくて 回答自体はあってるけど対処法が正しくない場合がほとんどじゃん
ID3DXSpriteって前よりも普通に実用レベルの速度でるようになったよな 何を誤解したんだが たまにクラスでID3DXSpritをメンバに持って DrawのたんびにBeginとEnd呼び出して遅い遅いっていってるやついるけど
>>980 D3DXFontの場合は普通に描画するには問題ないものの、
縁取りとかで同じ文字を9回描画させるようにしたらすぐに重くなりすぎるけどなw
まあ、自前のレンダリングエンジンが枯れてくるまでの動作確認用としては使える。
ID3DXSpriteが内部で何をやっているのか正しく理解していれば
使っても別に問題はない
がしかし、ID3DXSpriteについて質問してくる人は大抵理解していない
理解するにはどうすればいいかというと
>>973
初心者スレなんだからD3DXは使わないほうが良いって風潮どうにかした方が良いな 言ってる本人たちはそれがカコイイ(笑)と思ってるのかも知れないが
>>984 だな。完成品の配布の際に多少注意点がある程度で、
(ビルドに使用したSDKのバージョンに合わせた再頒布パッケージの同封が必要)
それ以外には制限らしい制限はない。
D3DXのパフォーマンスに不満が出るというレベルになるまでは積極的に使えばいいと思うよ。
>>984 そうやってわざと議論をはぐらかすのやめてくんない?
ID3DXSpriteは欠陥クラスだってみんなわかってるでしょ?
どこに欠陥があるのかkwsk まぁ、言えないだろうけど
>>987 グローバル変数関数使いまくりのところ
だからID3DXSprite::Beginの中身が何をやってるのかわからない
ステートを好き勝手変更しても誰も中身をみないとその変更を認識できない
これはグローバル変数関数の弊害
このクラスを作った奴は間違いなくただの素人
>>988 PIX for Windowsで調べてみればいいじゃないか。
それに、ID3DXSprite系は基本的にBegin〜Endの外側には影響を与えないように設計されている。
普通に使う分に何が不満なのかね。
わたし、あいでーさんでーえっくすすぷらいと使った事ないんだけど、 みんながけっかん品だっていうから、つかわないようにしようと思うの
D3DXを勧めてる奴はもう少し初心者のことを考えて発言するべき
>>989 はぁ?
なにそれだっせぇいいわけ
グローバル変数関数を使うプログラムなんて欠陥品でなくてなんなのかと言いたい
別にD3DXを薦めてるわけじゃないだろ D3DXを使った質問に「D3DX使うな」って答えはどうなんだって話 質問は質問として回答すべき
>>994 はぁ?話をはぐらかすなよ
ID3DXSpriteの話をしてるんであってD3DXの話なんてしてないでしょ?
なんでさっきから曲解するの?
どうしてそうやって卑怯な手を使うの?
育ち悪いの?
親にそう教わったの?
勧めてる奴とは
>>984 のことであり、今回の質問の回答者のことではない
ウンコしたくなってきた
埋め
1000ならDX11対応のQuadroFX発売
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。