【C++】 DirectX初心者質問スレ Part34 【C】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
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/
0002デフォルトの名無しさん
2011/02/19(土) 07:14:07初スレ建てなので、もし不備が有りましたらすみません orz
0003デフォルトの名無しさん
2011/02/19(土) 15:27:370004デフォルトの名無しさん
2011/02/21(月) 00:32:22.94Visual C# 2010 から SlimDX を利用しています。
画像を表示するためにDirect3D9でテクスチャ表示をしようと思っているのですがどうしたら良いのか教えていただけないでしょうか?
DirectInputを利用したキーボード入力、Direct3D9を利用した背景色の設定は出来ました。
0005デフォルトの名無しさん
2011/02/21(月) 00:44:35.64http://hibari.2ch.net/test/read.cgi/gamedev/1264902081/
0006はじめまして。
2011/02/21(月) 00:55:36.87error LNK2001: 外部シンボル "_IID_IDirectInput8W" は未解決です。
というエラーが出ます。
追加のライブラリ、追加のインクルードを行い、追加の依存ファイルも書きました。
しかし同じエラーになります。
#define INITGUIDと書くと、
fatal error LNK1120: 外部参照 2 が未解決です。
が
fatal error LNK1120: 外部参照 1 が未解決です。
に減りました。
どこが間違っているのでしょうか。。。
0007デフォルトの名無しさん
2011/02/21(月) 01:19:16.730008はじめまして。
2011/02/21(月) 01:26:29.19dinput8.lib
dxguid.lib
comctl32.lib
としています。
追加のライブラリディレクトリは
C:\Program Files %28x86%29\
Microsoft DirectX SDK %28June 2010%29\Lib\x64
を指定しています。
0009デフォルトの名無しさん
2011/02/21(月) 01:31:04.88誘導ありがとうございます
0010はじめまして。
2011/02/21(月) 01:31:33.33Microsoft DirectX SDK %28June 2010%29\Lib\x86
と\x86のように変更したら通りました。
まさかここだったとは。。。
7さん、ありがとうございました。
0011デフォルトの名無しさん
2011/02/21(月) 03:40:04.65キャラクターの着せ替え(メッシュの入替え)が上手く行きません。
現状、LPD3DXFRAME に受け取ったモデルから、FirstChild、Sibling(ボーン)を辿り、1つだけメッシュコンテナのポインタを入替えてます。
そして以下の様な事が起きています。
「モーションは再生されず、原点にポツンと描画されます。(これは当然なのでしょうね。)」
「2ボーンにウェイトがあるメッシュは、1ボーン分だけ形状が保持され、あとの形状は崩れています。」
「どこかで入替えを行ったメッシュは、入れ替え前のメッシュが描画される事は一切有りません。(これも当然?)」
まずこの入替え方自体、メッシュはほとんど複数ボーンに関わっているから、かなり不適切な気が。
状況的には、強引に全ボーンのマトリクスを追って取って付けてすればなんとかなりそうな気もしますが・・
何かやり方が間違っているような、正しい入替え方が有るのではという気がしてなりません;
何でも構いませんのでご指摘やご助言を頂けますと幸いです orz
0012デフォルトの名無しさん
2011/02/21(月) 08:40:55.51頂点ごとボーンに対応したウェイトデータがあるわけだけど
その辺もボーンとメッシュの関連ができているデータでやってるの?
んなことできんだろーか?
メッシュだけ入れ替えって可能なんだろか?
着せ替えって違うモデルのボーンにアニメーションを
対応させるみたいな対応になった気がすっけど
的なつぶやき
001311
2011/02/21(月) 16:22:07.27ご助言ありがとうございます。ほかで頂いたご助言を私が間違って解釈し記憶していた様です。
何となくやり方が想像できました。どう組めば無駄な処理が減るか考えつつ色々試そうと思います。ありがとうございました。
0014デフォルトの名無しさん
2011/02/22(火) 06:35:53.04縮退三角形での最適化って、すごく効果低かったりするん・・・?
0015デフォルトの名無しさん
2011/02/22(火) 09:19:38.12TRIANGLELISTで統一だろ普通
特に2Dとなれば、頂点数もたかがしてれてるし
0016デフォルトの名無しさん
2011/02/22(火) 09:35:27.090017デフォルトの名無しさん
2011/02/22(火) 10:29:00.36頂点数多くても相性最悪じゃね?
0018デフォルトの名無しさん
2011/02/24(木) 04:19:07.58画面がリサイズされたときに、このテクスチャも画面サイズに合わせて拡大縮小させたいんですが、どうやれば実現できるでしょうか?
0019デフォルトの名無しさん
2011/02/24(木) 08:09:19.62002018
2011/02/25(金) 01:56:23.570021デフォルトの名無しさん
2011/02/25(金) 02:09:51.430022デフォルトの名無しさん
2011/02/25(金) 10:01:06.76フリップ処理って内部でやってるんでしょうか?それともダブルバッファリングをするには特別な設定が必要なんでしょうか?
レンダリングの箇所(OnD3D9FrameRender)では、IDirect3DDevice9::Present()をコールしなくても描画されます。
0023デフォルトの名無しさん
2011/02/25(金) 12:24:07.73画面が一回非アクティブになると、再度アクティブになった後も入力を受け付けてくれません。
デバイスからの入力に依存しないものは反映されているので、フリーズしたわけでもありません。
毎ループAcquire()を実行するようにしてみたり、
デバイスのポインタがNULLになったらDirectInputから作り直すようにしてみたりしましたが、変化がありません。
ネットで調べてみると、ウィンドウのアクティブ・非アクティブの際にAcquire()とUnacquire()を実行してるようなんですが、
同じ事をしてみようとすると、
関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&IDirectInputDevice8W::Acquire' を使用してください
などとエラーが出て実行できません。
とりあえず非アクティブから復帰しても入力を受け付けるようにしたいんですが、どうすればいいのでしょうか?
0024デフォルトの名無しさん
2011/02/25(金) 15:01:18.03SDKのサンプルでもそうなるの?
サンプルとそっくりに書いてみれば?
0025デフォルトの名無しさん
2011/02/25(金) 18:42:30.820026デフォルトの名無しさん
2011/02/25(金) 18:43:52.18いや、そんなことはないはずだが
0027デフォルトの名無しさん
2011/02/25(金) 18:54:14.89Col = P1;
if( ( Z1 ) < Limit &&
( Z2 ) < Limit &&
( Z3 ) < Limit &&
( Z4 ) < Limit )
Col = 0.0f;
おかしいところ無いよね?どちらか1つ消すとエラーが出ない。
0028デフォルトの名無しさん
2011/02/25(金) 19:04:06.41Colに2回突っ込んでるから駄目とかそーゆーのじゃねーの?
0029デフォルトの名無しさん
2011/02/25(金) 19:06:38.20Col = P1;
Col = 0.0f;
return Col;
これは問題ないでしょ?大丈夫だと思うけど
0030デフォルトの名無しさん
2011/02/25(金) 19:08:15.69いや、気のせいかもしんないw
0031デフォルトの名無しさん
2011/02/25(金) 19:43:29.560032デフォルトの名無しさん
2011/02/25(金) 22:45:59.55DXUTMainLoopでよんでるっぽい
0033デフォルトの名無しさん
2011/02/26(土) 01:10:38.91ビデオカードによって使えるif文の数や回せるforループの数が違うなんてよくあるはなし
0034デフォルトの名無しさん
2011/02/26(土) 01:12:47.03色々と捻って試しているのですが、和音(と言うより、単純に複数の音)を重ねて鳴らす事が出来ません。
単純に1つづつ鳴らす分には、問題が無いのですが、
例えばAキーを押すとラ、Bキーを押すとシが鳴る状態(それぞれ1秒間発音)で、
ポンポンと(1秒以内に続けて)キーを叩くと、2音が重なるはずの所が重ならず、
「プー プポプポプポ ポー」 のようにグリッチしたように発音されます。
XAudio2単独で複数音を 重ねて 鳴らす(またはBGMに重ねて効果音を鳴らす)のは、無理なのでしょうか
003534
2011/02/26(土) 01:17:35.461.シングルスレッド(つまり同一スレッド上で)、それぞれ2つのソースボイスを作成し、
キー押下のタイミングで、それぞれを SubmitSourceBuffer & Start
2.マルチスレッドで、それぞれそのスレッド上で CreateSourceVoice した物を、
それぞれのスレッド上で SubmitSourceBuffer & Start
ちなみにどちらも COMの初期化は CoInitializeEx( NULL, COINIT_MULTITHREADED) で行い、
XAudio2Create はメインスレッドで行っています。 またどちらのケースでもサブミックスボイスは 使用/不使用を試していますが
どちらも上手くいきません。
0036デフォルトの名無しさん
2011/02/27(日) 10:45:48.98これのうまく動くサンプルか何か下さい...
003736
2011/02/27(日) 10:47:55.350038デフォルトの名無しさん
2011/02/27(日) 11:14:04.29003936
2011/02/27(日) 11:25:49.25SDKサンプルのCreateDeviceを基に、GDIを使って描画する方法のサンプルを下さい
http://codepad.org/P9nEZq6A
004036
2011/02/27(日) 14:57:51.92http://codepad.org/c48haCtU
スレ汚しすみませんですた、ありがとうございました
0041デフォルトの名無しさん
2011/02/27(日) 22:03:03.58バックバッファ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、… と多くあった場合、ひどいことになってしまいます。
スクリーン合成やオーバーレイ合成が、そんな特殊なこととは思えないので、
もっと手軽な方法があると思うのですがなかなか見つからず…。何か方法はないでしょうか?
0042デフォルトの名無しさん
2011/02/27(日) 22:27:12.070043デフォルトの名無しさん
2011/02/27(日) 22:29:35.59表示される画像の表示おかしくて、主にスジが入るんですが
これってグラボが壊れてるって認識でいいんでしょうか。
あとttp://sky.geocities.jp/mayqueensite/DirectShow_VCerror.html
こんな表示出るんですけど、治そうと思って、手当り次第にランタイム入れたいんですけど
C++.NETのラインタイムってMSのサイトでどれ落とせばいいんですか?
0044デフォルトの名無しさん
2011/02/27(日) 22:40:53.120045デフォルトの名無しさん
2011/02/28(月) 00:27:39.39それは自作ソフトの話なのか、ただDirectX9.0c使ってるソフト使うとバグるのか。
前者なら書き込む板間違ってる。
0046デフォルトの名無しさん
2011/02/28(月) 10:25:51.62前者じゃなくて間違ってるのは後者だろw
0047デフォルトの名無しさん
2011/02/28(月) 15:04:48.910048デフォルトの名無しさん
2011/02/28(月) 15:12:37.87対象が平面なら角度だせばよくね?
0049デフォルトの名無しさん
2011/02/28(月) 15:35:04.100050デフォルトの名無しさん
2011/02/28(月) 15:51:11.070051デフォルトの名無しさん
2011/02/28(月) 15:54:03.55「atan2」とそれっぽいキーワード入れてググレよ
角度でやんねーとダメだろ
時計の9時の方向へ向いてるベクトルを3時の方に回転させたいときとか
角度じゃないとどーにもならんっしょ?
0052デフォルトの名無しさん
2011/02/28(月) 17:44:16.750053デフォルトの名無しさん
2011/02/28(月) 18:08:56.98白・黒・青の3色(境界に中間色が多数有り)のテクスチャを貼ったモデルを、
青の部分だけを、黄、赤にしたり明暗を変えて、白・黒の部分はできるだけ保護したく思っています。
現在はメッシュの頂点色をいじってカラーリングしており、これでは白色の保護が無理な様で・・。
どうすれば白色を保護してカラーリングできるでしょうか・・?
005447
2011/02/28(月) 19:05:29.16XZ平面上ではY軸回転で向けれるのですが、もう一つの軸(X軸orZ軸)回転で向きを変えようとすると
デタラメな方向に行ってしまいます。
0055デフォルトの名無しさん
2011/02/28(月) 19:43:31.40方法1・予め色変更済みのテクスチャを用意しておき切り替える
方法2・テクスチャのBITMAPを取り出して加工する
方法3・ピクセルシェーダのタイミングで画素のRGBからHSVを求めて
HueやVolumeを変えて再びRGBにしたものを適用
ぱっと思いつくのはこのくらい
0056デフォルトの名無しさん
2011/02/28(月) 21:13:37.91とりあえず球面線形補間
http://marupeke296.com/DXG_No57_SheareLinearInterWithoutQu.html
0057デフォルトの名無しさん
2011/02/28(月) 21:51:30.86当然可能だし、シングルスレッドで十分なことが可能。
XAudio2自体マルチスレッドをできるだけユーザに意識させない作りなのだから
シングルでやるがよろし
初期化コード類晒したほうがいいと思われ
005853
2011/02/28(月) 22:02:07.93ありがとうございます。テクスチャも加工回数を最小にすればきっと実用的なんですね。
そしてピクセルシェーダで触る事も出来るんですね。HLSLの勉強が進んだら実現したく思います。
ご助言ありがとうございました。
0059デフォルトの名無しさん
2011/02/28(月) 23:12:25.70>新たなバッファCを準備し、AとBの2つをシェーダの入力とするしかないのでしょうか?
これはそのとおり、バッファCを用意するしかない。
>その場合、例えばAの大きさが 800×600、Bの大きさが 10×10 程度でも、
>書き込まないといけないピクセル数は 800×600 になってしまい時間がかかります。
これは違う。
たとえバッファAとバッファCが広大でも、
バッファBを覆うだけの、十分小さいポリゴン片で描画してやれば
そういう無駄は出ない。
0060デフォルトの名無しさん
2011/03/01(火) 14:35:21.25入力:2つの軸と角度
出力:回転マトリックス
したいのは上述通りです。
0061デフォルトの名無しさん
2011/03/01(火) 18:58:49.330062デフォルトの名無しさん
2011/03/01(火) 22:27:33.680063デフォルトの名無しさん
2011/03/01(火) 23:21:29.100064デフォルトの名無しさん
2011/03/02(水) 00:27:52.44値が空白になっていて見れません。PIXでは見れないのでしょうか?
(環境:Core2Duo, Q35Express, WinXP SP3, DX9(Jun2010))
006541
2011/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、…となるとやはりやばいことになりそうです。
うーん何か思い違いをしてるでしょうか…
0066デフォルトの名無しさん
2011/03/02(水) 22:39:56.691000x1000のテクスチャを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が複数ある場合は、相応の工夫が必要。
0067デフォルトの名無しさん
2011/03/02(水) 22:45:00.25よく考えてみたら、俺が間違ってるわ。
やっぱCへコピーが必要そうだな。
何かうまい方法はないかな?
0068デフォルトの名無しさん
2011/03/03(木) 00:45:25.23本当にコピーなのかただのレンダリングなのかはっきりさせてほしい
0069デフォルトの名無しさん
2011/03/05(土) 03:47:38.27文字量が増えるほどにアフォみたいに重くなる
d3dxfontは重くてつかいものにならいとのことなので
テクスチャをレンダーターゲットにして
あらかじめ文字をテクスチャ化して表示するのを試したら
確かに早くはなった。
しかしこれだと、定型文字はよいとして
チャットなどのリアルタイムに変化する文字には対応できなくて困った
DIBを使う?と高速に文字描画できる云々ってのを
過去ログで見つけはしたが、サンプルのリンクが切れてて参考になりませんですた
よさげなサンプルがあるサイトはございませんか?
0070デフォルトの名無しさん
2011/03/05(土) 04:07:01.22ttp://marupeke296.com/DXGSmp_No5_Font.html
GetGlyphOutline使えばよろし
0071デフォルトの名無しさん
2011/03/05(土) 09:16:18.15普通にGDI関数でビットマップ領域に描画させてって話じゃね
TextOutか何かで
007269
2011/03/05(土) 14:25:21.76このサイトちら見したけど
テクスチャをレンダーステートにして文字を書いておくのと
基本構想は変わらないんじゃ?
チャットみたいにどんな文字が使用されるかわからない場合でも速度でるのかな?
どのくらい速度出るのか検証中
>>71
デバイスコンテキスト取得して
オンメモリのビットマップに普通に文字描画するまでは
やったことがあるんでイメージできるんだけど
それをテクスチャに変換して張り付けるまでの工程がさっぱりわからん
d3dxfontよりは明らかに早いらしいけど
動作するサンプルがほしいお
0073デフォルトの名無しさん
2011/03/05(土) 14:30:29.02必要となったときに1度だけ作ってあとはそれを使いまわせばいい
aが必要となったら一度だけaのピクセルデータを取っておいて(テクスチャに書いて)
使いまわせばいい
0074デフォルトの名無しさん
2011/03/05(土) 14:33:43.58新しく作成される文字は1フレで1文字程度なんだからテクスチャ作るコストはたいしたことないな
マップチップの原理で遅くなってるだろうからさらに1行ごとにテクスチャにしちゃうとかして
DrawPrimitiveの回数を減らしてみたらいいんじゃね?
0075デフォルトの名無しさん
2011/03/05(土) 15:59:07.43やっぱりそんな感じですか。
表示したい文字がプールしたテクスチャ内にあるか調べるとか
結構めんどくさそうですな。
>>74
一旦テクスチャつくるほど早くなくても
d3dxfontより早ければいいんですけどね〜
あいかわらず動くサンプルがみつかんね
入力された文字を行ごとにテクスチャ化してプールしておいたとしても、
今、入力している文字とかリアルタイムで値がかわるFPSの表示とか
考えれば考えるほどまんどくさ
とりあえず半角英数字のビットマップフォントだけでも用意して誤魔化すか〜
楽したいだけなのにどんどん苦労する方向に向かってんなw
0076デフォルトの名無しさん
2011/03/05(土) 15:59:58.70考えてみたらまじでウラヤマシス。
0077デフォルトの名無しさん
2011/03/05(土) 16:56:35.23>>70のヤツって動くんじゃないの?
動くみたいに書いてあるけど
0078デフォルトの名無しさん
2011/03/05(土) 16:58:11.84ごちゃごちゃいいわけばっかりしてやらないだけじゃん
0079デフォルトの名無しさん
2011/03/05(土) 17:15:50.45>表示したい文字がプールしたテクスチャ内にあるか調べるとか
そんなもんstd::mapにでも登録しておけば一発やろが!
0080デフォルトの名無しさん
2011/03/05(土) 17:54:33.75>>79
低性能PCだとテクスチャ作成時間がバカにならないので結局やめた
STLのこと忘れてた ありがとう
>>78
ね
こ
だ
い
す
き
0081デフォルトの名無しさん
2011/03/05(土) 17:56:28.510082デフォルトの名無しさん
2011/03/05(土) 18:30:08.880083デフォルトの名無しさん
2011/03/05(土) 18:38:51.53Unreal EngineとかIrrlicht EngineとかOgreとか
0084デフォルトの名無しさん
2011/03/05(土) 19:14:43.430085デフォルトの名無しさん
2011/03/05(土) 19:22:51.71とりあえずチュートリアルでもやってみては?
英語でもドキュメント英語は簡単な場合多いし
0086デフォルトの名無しさん
2011/03/05(土) 19:42:11.09今まではメッシュが1つで、それへレイを飛ばすだけで済んでいました。
しかし「上を歩いたり、中をくぐり抜けられるメッシュ」を複数配置、撤去したりしたく思っています。
(リアルタイムではなく読み込みを挟むごとに切り替える程度です。)
こうした場合、やはり全てのメッシュを1つに纏めるべきなのでしょうか?
他に良い方法が有ったりするでしょうか。
0087デフォルトの名無しさん
2011/03/05(土) 19:55:15.70てかそのアルゴリズムで問題ないなら
008886
2011/03/05(土) 22:11:54.15確かに。
中心距離が一定以内になった物だけレイを飛ばしたりすれば、そこそこの負担増で処理できそうですね。
ありがとうございました。
0089デフォルトの名無しさん
2011/03/06(日) 02:13:06.14ライティングやテクスチャを有効にして10万ポリゴンの球体を
毎フレーム1回のDrawPrimitiveで描画してみたところ
フレームレートが60FPSを若干下回って50FPS程度
更に多くの50万ポリゴンを描画しようとすると10FPSを下回りました。
(どちらも頂点数はポリゴン数*3でトライアングルリストで描画)
実行環境はGeforce8600GT搭載グラボを使用してるPCなのですが
勉強不足なのでプログラムに問題があって遅くなってるのか否か分からず困ってます。
正直思っていたより遅くて疑問なのですが、実際これだけのポリゴン数描画しようとしたらこのくらい描画負荷が掛かるものなのでしょうか?
0090デフォルトの名無しさん
2011/03/06(日) 02:27:11.60そのもうちょっと後の世代だから数字自体は妥当なきはするけどね。
ところで、10万ポリゴンあったら何ができるか把握してるか?
1万ポリゴンのキャラが10体でるんだぜ?imasのきゃら5人くらいを1画面にだせるんだぜ。
エロゲで使われるようなやつでも3体は出るから会話とか成立しうるし。
で、まず、メタセコイアあたりで1万ポリゴンのオブジェクト作ってみろよ。
どれだけの表現を詰め込めるか思い知るが良いさ。
0091デフォルトの名無しさん
2011/03/06(日) 03:26:13.410092デフォルトの名無しさん
2011/03/06(日) 07:52:36.43>正直思っていたより遅くて
名前が一人歩きしてるせいで、過度な期待と思い込みをしてる人はよくいる
0093デフォルトの名無しさん
2011/03/06(日) 09:20:42.11フィルレートに足を引っ張られて頂点処理能力は余りまくりだから
頂点数だけで比較するのは意味無い
描画を全くさせないで頂点演算だけGPUにやらせてみなよ
スペック通りの数字がでるから
009489
2011/03/06(日) 11:34:35.68ソフトウェア頂点処理してました・・・
デバイス作成にハードウェア頂点処理を指定したら
50万ポリの描画も余裕で60FPSに収まりました
>>90,92,93 も貴重なご意見ありがとうございました
0095デフォルトの名無しさん
2011/03/07(月) 00:41:12.84どうすればいいのでしょうか?
ググっても全然ないです
0096デフォルトの名無しさん
2011/03/07(月) 01:01:18.840097デフォルトの名無しさん
2011/03/07(月) 01:07:52.080098デフォルトの名無しさん
2011/03/07(月) 01:11:17.12MSDNに「DirectX のバージョン番号を直接取得する方法はない」って書いてる。
間違ってたらゴメンネ。
なんでプログラム内部からバージョン知りたいん?
0099デフォルトの名無しさん
2011/03/07(月) 01:11:25.790100デフォルトの名無しさん
2011/03/07(月) 01:19:24.14よく覚えてねえや
0101デフォルトの名無しさん
2011/03/07(月) 01:25:26.270102デフォルトの名無しさん
2011/03/07(月) 01:29:30.670103デフォルトの名無しさん
2011/03/07(月) 04:43:19.20このページのサンプルを実行してみると、
「'str' : 定義されていない識別子です」というエラーを吐きます。
visual studio 2008を使ってるのですが、リンカか何かの問題なのでしょうか。
0104デフォルトの名無しさん
2011/03/07(月) 07:52:54.74多分だけど、
#include <xstring>
を追加すれば行ける気がする
std::wstring は Windowsだと xstring っていうヘッダにあるってか DicrectX関係ないこれ
0105デフォルトの名無しさん
2011/03/07(月) 10:04:28.740106103
2011/03/07(月) 19:44:31.60>ってか DicrectX関係ないこれ
すみません。自分も書き込んでから気がつきました
あと、xstringを追加しても機能してくれませんでした。
0107デフォルトの名無しさん
2011/03/07(月) 19:46:17.45vcのxなんちゃらは全部internal headerだぞ
0108デフォルトの名無しさん
2011/03/07(月) 21:11:28.05試しにそのサイトにあった d3ddebugfont.h をDLして試してみたけど、
普通に通るんだが。 もちろん アーカイブされてたヘッダだけだと当然
windows.h やDirectX関係のヘッダがincludeされてないので足したけど
0109デフォルトの名無しさん
2011/03/08(火) 00:15:23.88きれいな影を作るいいアイデアはありますか?
0110デフォルトの名無しさん
2011/03/08(火) 01:04:31.18方法1:カスケードシャドウマップを使う
方法2:できるだけ狭い範囲での深度テクスチャを作成する
方法3:別な影生成方法に切り替える(シャドウボリュームとか
方法4:ソフトシャドウに挑戦する(影をぼかす
方法5:あきらめる
方法6:描画自体をレンダリングエンジンライブラリを使ってそこでいい方法を探す
とかがパッと考え付くところかなぁ
ジャギが出るのは深度バッファシャドウの欠点だから仕方が無い
0111デフォルトの名無しさん
2011/03/08(火) 02:22:40.740112103
2011/03/08(火) 04:19:45.47なんか散々悩んだあげく、std::wstring strという形にしたらそれだけで通りました。
Visual Studioの仕様が問題だったのかもしれません。
0113デフォルトの名無しさん
2011/03/08(火) 05:38:25.850114デフォルトの名無しさん
2011/03/08(火) 09:18:40.000115デフォルトの名無しさん
2011/03/08(火) 09:32:48.78全然VSの固有仕様とかじゃないです
他にも言われてるけどDirectX以前の話なので、ちょっと真面目に基礎的な実験やテストコードでも書くべき
0116デフォルトの名無しさん
2011/03/08(火) 10:23:03.04char と wchar_tの違いをしっかり理解するんだ
Directxなどまだ早い
0117デフォルトの名無しさん
2011/03/08(火) 12:10:41.85using namespace std;
とか書かれてるわけで(その是非はとりあえずおいとく)
それなのにstdを明示しないとコンパイル通らないってのはおかしくないか?
0118デフォルトの名無しさん
2011/03/08(火) 12:22:22.22using namespace はなるだけ使わず、あるいは使うとしても
翻訳単位の中で影響が小さくなるように書くのが普通
そのサンプルはヘッダに全部書いちゃってさらに pragma once まで書いちゃって
さらにusingまでしちゃってるからあんまり良い内容じゃないよね
よくわかった上で使うか適宜修正しないと、特に言語初心者当たりがハマる
0119デフォルトの名無しさん
2011/03/08(火) 12:43:10.83まで話が及ぶと完全にスレ違いになるからその辺で。
わかんない人は入門書読み直すか、言語スレへ
0120デフォルトの名無しさん
2011/03/08(火) 13:06:01.210121デフォルトの名無しさん
2011/03/08(火) 13:09:54.23すげぇw
0122デフォルトの名無しさん
2011/03/08(火) 19:08:24.100123デフォルトの名無しさん
2011/03/08(火) 21:50:11.680124デフォルトの名無しさん
2011/03/08(火) 21:53:04.090125デフォルトの名無しさん
2011/03/08(火) 22:39:27.340126デフォルトの名無しさん
2011/03/08(火) 22:47:04.050127デフォルトの名無しさん
2011/03/08(火) 22:49:32.960128デフォルトの名無しさん
2011/03/08(火) 22:50:31.930129デフォルトの名無しさん
2011/03/08(火) 22:53:41.740130デフォルトの名無しさん
2011/03/08(火) 23:15:12.410131デフォルトの名無しさん
2011/03/09(水) 01:18:32.860132デフォルトの名無しさん
2011/03/09(水) 01:44:57.530133デフォルトの名無しさん
2011/03/09(水) 10:01:22.61うまくいかない・・・視点を動かすとなぜか影の角度も動いてしまう・・・
0134デフォルトの名無しさん
2011/03/09(水) 13:09:07.010135デフォルトの名無しさん
2011/03/09(水) 13:20:42.36D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEXを指定すると、以下のエラーが発生します
Test.exe の 0x00000000 でハンドルされていない例外が発生しました: 0xC0000005: Access violation
FEATURE_LEVELを10_0で作成した場合や、KEYEDMUTEXのフラグを指定しない場合はエラーになりません
リファレンスなどを見ても、機能レベルによって作成できないなどの表記を見つけることが出来ず
仕様なのか使い方の問題なのか分からず困っています。何が問題なのでしょうか?
やりたいことは、DX10に対応していないビデオカードによる、D3D11とD2Dのサーフェイス共有です
よろしくお願いします。
0136デフォルトの名無しさん
2011/03/09(水) 13:36:12.360137デフォルトの名無しさん
2011/03/09(水) 13:53:19.340138デフォルトの名無しさん
2011/03/09(水) 14:11:51.71デバッグランタイムでわかりやすい警告出してきたはずだから見てみて
それとlevel9_xだと共有テクスチャの動作が怪しくてうまく使えた試しがない
パフォーマンスが許容できるならロックして描画終わるのを待つ方式をお勧めするよ
0139138
2011/03/09(水) 14:14:36.26o 共有テクスチャのIDXGIKeyedMutex
0140デフォルトの名無しさん
2011/03/09(水) 17:11:23.14確かにKeyedMutexで無い共有であれば成功するようですが、同期が取れずに表示がおかしくなります
ロックして描画を待つと言うのはどうやるのでしょうか。普通のMutexで同期は取れないですよね?
0141デフォルトの名無しさん
2011/03/09(水) 19:06:22.49http://archive.msdn.microsoft.com/D3D9ExDXGISharedSurf
片方のデバイスで描画が終わっていることさえわかればなんでもいいのよ
このサンプルは見通し悪いけどシングルスレッドの場合だけ見ると
LockRect or Mapでサーフェイスへの描画完了を待機してるだけ
そもそもD3D9(Ex)との共有ではIDXGIKeyedMutexが使えないわ
キーパラメータなんて付けて死ぬほどデッドロック起こしやすいわで
ちょっと仕様決めたやつに問い詰めたいくらい
Out-Processでの同期ぐらいにしか出番無いんじゃねえかな
0142デフォルトの名無しさん
2011/03/09(水) 21:45:58.30CreateDeviceをビルドして実行して、
作成されたウィンドウにマウスカーソルを乗せたままにしておくと、ビジー状態のマウスカーソルから元に戻らない
DXUTのEmptyProjectの方ではしっかり元に戻ったんだが
CreateDeviceのやり方とEmptyProjectのDXUTでは何が違うんだ?
0143デフォルトの名無しさん
2011/03/09(水) 21:54:53.650144デフォルトの名無しさん
2011/03/09(水) 22:03:05.380145デフォルトの名無しさん
2011/03/09(水) 23:01:37.550147デフォルトの名無しさん
2011/03/10(木) 05:17:04.420148デフォルトの名無しさん
2011/03/10(木) 09:28:02.76Wバッファを使う。
ttp://msdn.microsoft.com/ja-jp/library/bb219616(v=VS.85).aspx
詳しくはD3DZB_USEWあたりでググるがよし。
0149デフォルトの名無しさん
2011/03/10(木) 12:52:48.00具体的にありがとうございます!
サンプルは余計なこと色々してて分かりにくいですが、なんとなく理解出来ました。こういうことですよね?
・USAGE_DEFAULTを共有するけどこいつは直接ロックできない
・USAGE_DEFAULTからUSAGE_STAGINGにコピー後、STAGING側をREADロックすることで結果的にDEFAULTへの描画を待機
・STAGINGは同期用にのみ使用し、コピーされたデータやロックしたデータ事態に意味は無い
サンプルではバッファを複数回してるようですが、これはREADロック時に描画完了待機して非効率なため、
実際には数フレーム前に書かれたデータを取得するようになってる?
0150デフォルトの名無しさん
2011/03/10(木) 23:06:39.00表情変えるのはテクスチャだけですか?
それとも最近なら口にボーンとか仕込んでやるんですか?
0151デフォルトの名無しさん
2011/03/11(金) 01:05:17.22ゲ作成板でどうぞ
0152デフォルトの名無しさん
2011/03/11(金) 02:04:50.48http://www.yaldex.com/game-programming/0131020099_ch15lev1sec8.html
0153デフォルトの名無しさん
2011/03/12(土) 13:46:13.55ボーンを仕込む
0154デフォルトの名無しさん
2011/03/12(土) 13:53:48.11ローポリかハイポリかリアル系かデフォ系かで話がぜんぜん違う
初心者は顔のテクスチャ切り替えから入るといいかもな
0155デフォルトの名無しさん
2011/03/12(土) 14:31:45.84ここム板だからあえて聞くけど、ボーンて呼ばれる物の処理イメージは浮かんでるかい?
それが前提にあれば上で言ってる奴の話も見えてくるぜ
どれの目的で、どんな内容ならどこまでやれそうか、とか
0156デフォルトの名無しさん
2011/03/13(日) 08:27:35.330157デフォルトの名無しさん
2011/03/13(日) 09:01:22.67出来上がったメッシュう情報から必要なものを抜くだけでいいじゃない
0158デフォルトの名無しさん
2011/03/13(日) 13:16:45.78独自フォーマットなんだけど(・ω・)
0159デフォルトの名無しさん
2011/03/13(日) 13:30:13.72↑他人の知識は真面目にコピーしますが、自分で考える能力はありません
何から何まで人から教えてもらいます。の意味
0160デフォルトの名無しさん
2011/03/13(日) 13:35:15.12相手にしたくないタイプだなw
0161デフォルトの名無しさん
2011/03/13(日) 14:27:23.22Xファイルをそのまま使うのとどこが違うんだ?
0162デフォルトの名無しさん
2011/03/13(日) 16:22:14.970163デフォルトの名無しさん
2011/03/13(日) 16:47:04.00中で扱ってるデータにしろ処理にしろ、意味わかってないから聞いてんじゃね
"独自の"フォーマットなんて、それこそ自分の都合で取っておきたい内容を
書いて読むだけなんだから、参考サイトもへったくれも無いよな
俺も自分の都合でファイル書き出してそれ読んで、とかテストコード用にしてるのあるけど
まさに言葉どおりの事しかしてない。 てか誰でもそうだろ。 独自の=自分の都合の フォーマットなんだから
そんな訳で >>158 に同意
0164デフォルトの名無しさん
2011/03/13(日) 16:50:31.84それがわからないってんなら、3DCGの基礎からやり直し
あるいはファイル保存の方法がわからないってんなら
言語の基礎からやり直し
0165156
2011/03/13(日) 17:53:03.07読み込んだXファイルから個別に情報を引き出せるんですね!
今まで読み込んだ物をそのまま拡大・回転・移動しかしてませんでした。
ちょっとその辺を調べてみます。
0166デフォルトの名無しさん
2011/03/13(日) 18:11:27.24情報の取り出し云々より「自分がやろうとしてることに、データの何の情報が必要なのか」が
判ってなければそっちから勉強することをオススメする。
0167デフォルトの名無しさん
2011/03/13(日) 19:29:57.29いつもモデルデータの話がでるとモデリングソフトを触れって言う人かい?
0168デフォルトの名無しさん
2011/03/13(日) 19:32:18.910169デフォルトの名無しさん
2011/03/13(日) 19:51:46.41とりあえず今のところはシンプルに正方形の箱を作って、
任意軸三つの相対位置に頂点を置いて、姿勢を自由に制御する事が目標ですね。
インデックスバッファを手打ちで作ったら、どうも上手い具合に面が張れなかったのと、
後々複雑なモデルを作る上でモデリングソフトに頼る必要があるので、
早い段階でXファイルから独自フォーマットのモデルデータを作って利用しようとしています。
ただ調べているうちにXファイル形式だとマルチテクスチャなど、
対応していないものもあるらしい事がわかったので、
独自フォーマットの方は最終的にモデリングソフトから直接はき出せるようにしたいです。
0170デフォルトの名無しさん
2011/03/13(日) 21:28:47.89少なくとも独自形式の話では2回しか発言してないけどw
それに>>166で言ったことが理解できないなら3Dでマトモにゲームなんて作れないし、
モデリングソフト触れとかはなんの関係も無い話なんだけど。何を一人で興奮してるの?
>>169
手打ちデータで上手いこと箱だせないならちゃんと出せるまで理解しないとあとで苦しくなるよーたぶん。
もしその部分のコードとかあるなら貼って相談してみるとか。
>独自フォーマットの方は最終的にモデリングソフトから直接はき出せるようにしたいです。
ってなるとモデラーのプラグインの開発とかの話になっちゃうから、初めは基本何かのモデルデータを
パーサー通して独自形式にすればいいと思う。俺はXSIの.xsi形式から必要なデータだけ取り出して独自形式にしてるし。
読み込み→変換して吐き出し、はどの道独自形式なら自分でパーサー書く必要があるけど・・・。
0171デフォルトの名無しさん
2011/03/13(日) 21:49:02.680172デフォルトの名無しさん
2011/03/14(月) 01:17:26.00取り込み側はC++で普通にって連携をしているのです
0173デフォルトの名無しさん
2011/03/14(月) 02:18:25.92みたところ,適当なプリミティブ描画関数が見当たらないのですが,
どのように描くべきでしょうか?
ラインリストで楕円ぽく線分を並べるような方法しかないでしょうか?
0174デフォルトの名無しさん
2011/03/14(月) 02:58:10.60線分並べて近似
0175デフォルトの名無しさん
2011/03/14(月) 07:54:50.450176デフォルトの名無しさん
2011/03/14(月) 14:15:04.65カメラの端のほうが伸びるから重ね合わせは難しいな
0177デフォルトの名無しさん
2011/03/14(月) 15:37:38.180178デフォルトの名無しさん
2011/03/14(月) 20:34:11.36日本人の方でないようですが,
Ellipse関数がGDIだけど使えるよ,ってことでしょうか?
>>175
3Dに慣れていないので,具体的な方法がわかりません...
デバッグ表示ですし,
とりあえず,慣れるまではGDI関数で実装してみます.
0179デフォルトの名無しさん
2011/03/14(月) 20:53:14.32>日本人の方でないようですが,
>Ellipse関数がGDIだけど使えるよ,ってことでしょうか?
テクスチャ等のbitmapを対象としたGDI関数の Ellipse ならあるけど、
それはプリミティブ描画関数とやらじゃないから、画像として描画じゃなく
頂点並べてやりたいなら、CubeやSphereのような三次元プリミティブメッシュデータのような物を
欲しているなら、頂点並べて線分引いて円に近似した図形描けって事じゃね
わかんないなら素直に聞けよw
0180デフォルトの名無しさん
2011/03/14(月) 22:20:12.64何のデバッグ表示をしたいのかわかんないからなんとも言えん。
文字列出したいだけならID3DXFontでいい。スプライトならID3DXSpriteでいいんじゃね?
0181デフォルトの名無しさん
2011/03/14(月) 22:56:12.492Dゲームつくってて当たり判定のデバックとかで円を表示したいとかそんなとこじゃないの?
○かいた画像用意して拡大縮小変形してキャラと同じように描画しろよ
なんかいろいろ言っても聞く耳もたなさそうだし
0182デフォルトの名無しさん
2011/03/17(木) 16:12:40.69例えば、
SDK付属コマンドラインプログラムを、
GUIで使うツールを自分で作った場合、
そのSDK付属ツールは再配布可能ですか?
0183デフォルトの名無しさん
2011/03/17(木) 16:15:19.810184デフォルトの名無しさん
2011/03/17(木) 16:29:44.56デスヨネー
0185デフォルトの名無しさん
2011/03/17(木) 16:39:00.95「このフォルダに使うSDK付属ツールを自分でダウンロードしていれておいてね」
といった形は大丈夫ですか?
0186デフォルトの名無しさん
2011/03/17(木) 17:33:42.880187デフォルトの名無しさん
2011/03/17(木) 18:04:50.82ありがとうございます
0188デフォルトの名無しさん
2011/03/21(月) 17:12:54.45今自分用のライブラリを作っているのですが
Direct3Dの一部でDirectShowの動画を描画するようにするには如何したらよいのでしょうか?
Direct3Dがあまり詳しくなくいくつか調べたのですが、あまり情報を引き出す事が出来ず少し悩んでいます
よろしかったらおしえていただけないでしょうか?
0189デフォルトの名無しさん
2011/03/21(月) 17:15:33.07Direct3DのBeginSceneからEndSceneの間にテクスチャのように処理群を挟んで描画
などをできるようにしたいのですが
0190デフォルトの名無しさん
2011/03/21(月) 17:33:54.290191デフォルトの名無しさん
2011/03/21(月) 18:55:35.900192デフォルトの名無しさん
2011/03/21(月) 19:09:43.42DirectXからPlatformSDKに格上げになった。
0193デフォルトの名無しさん
2011/03/21(月) 22:08:54.99VMR9とかでぐぐったんさい
0194デフォルトの名無しさん
2011/03/23(水) 08:39:05.73CreateDeviceで自分のウィンドウハンドルを指定してデバイスを作らないといけないわけなんだけど
キャプチャするためのデバイスで描画しないからウィンドウハンドルが要らない
ライブラリ化してるから無駄な引数のやり取りをなるべく無くしたいんだけど
ウィンドウ無しでCreateDeviceって出来るんですかね?
試しに0にしてみたらWindow7ではいけて、XPでは失敗しました
たぶんWindows7は画面がすでにDirectXだからなのかと思ってますが
どうすればいいか分かりますか?
0195デフォルトの名無しさん
2011/03/23(水) 08:42:27.530196デフォルトの名無しさん
2011/03/23(水) 08:51:23.07それらの識別子として HWND を使っているので、画面に描画するしないに関わらず
どっちかって言うと一番最初に渡しておきたいパラメタじゃね
どうしても嫌ならデスクトップのHWND取り出して渡せばおk
0197デフォルトの名無しさん
2011/03/23(水) 08:56:40.56HWNDをキーにしてそのデバイスのコンテキスト(DC)が引っ張れて
そのDCからそのデバイスの、例えば画素は何ビット構成かとか情報が引ける訳だから
画面に描画しなくても普通に必要
0198デフォルトの名無しさん
2011/03/24(木) 05:14:07.14自分のPCにグラボは入っていないので3Dが利用できないのは構わないのですが、Drawが利用できない原因がわかりません。
DirectXの診断ツールで、DirectDrawのテストでは正常に機能しています。
どうすればDirectDrawのアクセラレータを利用することができますか?よろしくお願いします。
0199デフォルトの名無しさん
2011/03/24(木) 06:06:16.89SDK(June2010)の中にあったダイアログボックスにコントローラの状態が表示されるサンプルは正常に動きました。
でも自作のプログラム(ダイアログボックスは使用しない)に組み込もうとずっと奮闘してるのですが、どうも上手くいきません。
「前田稔の超初心者のプログラミング入門」というサイトにある「Direct Inputのプログラム」→「コントローラを使う」で
紹介されていたプログラムも、ソースを少しもいじらずに起動できましたが、やはり動きません。
原因が思い当たる人はいないでしょうか?
0200デフォルトの名無しさん
2011/03/24(木) 06:51:46.84ジョイスティック自体が壊れている可能性とか。
あとコンパイラーによってはSetDataFormat()関数で指定する奴を
自前で用意しなきゃいけない場合もあるらしい。
まぁ、その場合はエラー出るだろうけど。
0201199
2011/03/24(木) 07:05:36.13JoyAdapterなどのジョイパッドのボタンにキーボードのキーを割り当てるソフトが使用可能なので、ジョイスティックはおそらく壊れてません。
XBOX360コントローラとPS2(変換アダプタ経由)コントローラの二つを使用していますが、どちらもダメでした。
SetDataFormatを行うときもエラーはでていません。
0202デフォルトの名無しさん
2011/03/24(木) 08:29:28.20どう動かなくて、どう上手くいかないのか
エラーの状態とか、何が必要な値を返さないとか その辺詳細
0203デフォルトの名無しさん
2011/03/24(木) 08:41:08.71両方を1行ずつデバック実行させればどこでおかしくなってるのかすぐ分かりそうなもんだが
0204デフォルトの名無しさん
2011/03/24(木) 08:45:19.36思い当たるも何もそんなのエスパーじゃないとわからねーよ
0205199
2011/03/24(木) 08:52:10.06ジョイパッドで何か入力しても何も起きません。
GetDeviceStateしたときに返される値がSUCCEEDEDだった場合に、ジョイパッドの状態(DIJOYSTATE2の構造体)を参照するようにしているのですが、
一応GetDeviceStateは成功しているらしく、ジョイパッドの状態を参照するところまではいっているようです。
ですが、実際にジョイパッドを操作しても内部の値は変化していない(0のまま変わらない)ようです。
0206199
2011/03/24(木) 09:06:00.15確かに僕のプログラムは糞ですが、他の人が公開しているようなサンプルも全く動かないんです。
ようするに、一般的な描画系のウインドウを表示するプログラムでうまくいったものはありません。
SDKのサンプルは、ダイアログボックスのみが出てきて、に入力の値が表示されるというものだったので、そのまま利用できないかいろいろ試してみたのですが…
他の人のプログラムにあるように、WinMainのメッセージループ内から、状態の値を参照する関数を呼び出したりもしたのですが、結局同じ結果でした。
プログラムが原因なのか、また別の問題なのかもわからない状態で。
詳しい説明が全然できてないのがわかっています。でも、もしかしたら同じような状況を経験した人がいるかもしれないと思ってここで尋ねました。
もうちょいがんばってみます。
0207199
2011/03/24(木) 11:31:53.03迷惑をおかけしてほんとに申し訳ない。
0208デフォルトの名無しさん
2011/03/25(金) 13:16:19.66基本は素のDirect3DのAPI使って、デバイス依存する可能性が高そうな
テクスチャ作成処理とかD3DXCreateTextureを利用してたりするんだけど
D3DXとかDXUTって本格的なゲーム開発でも有効?
(DXUTはまだ触ったことないけど参考までに)
0209デフォルトの名無しさん
2011/03/25(金) 17:10:04.020210デフォルトの名無しさん
2011/03/25(金) 20:20:15.43「ぼくはまちがってないのにうごかない」みたいなことになるから
最初はD3DXなりDXUT使っとけ
イランところに壁を作らないで済む
0211デフォルトの名無しさん
2011/03/25(金) 20:24:43.93壁って大事
0212デフォルトの名無しさん
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
0213デフォルトの名無しさん
2011/03/26(土) 01:09:55.060214デフォルトの名無しさん
2011/03/26(土) 13:22:43.14ウインドウモードで描画を行う際、ウインドウを左側に寄せて画面外に一部をはみ出させると、描画位置が意図せずずれてしまいます。
例えば画面左側半分を赤。右半分を青くしたとします。
この時にウインドウの左半分を、左画面外に出すと、ウインドウの中身が「赤く」なります。
どうやら描画座標が、ウインドウが画面からはみ出た分だけ右にズレるようです。
この現象は、初期化の際
D3DPRESENT_PARAMETERSのBackBufferWidth, BackBufferHeightに0を入れる。
もしくはウインドウのサイズとまったく同じ値を入れると起きないようです。
バックバッファのサイズを好きな値にしつつ、この「画面外に出すとずれる」現象を回避するにはどうしたらいいでしょうか?
よろしくお願いします。
0215デフォルトの名無しさん
2011/03/26(土) 14:51:14.52ウィンドウのクライアント領域とバックバッファのサイズが異なると発生する問題
ウィンドウサイズの変更などに対応する場合はサイズ変更が発生する度にデバイスのリセットが必要
IDirect3DDevice9::Reset を調べると助けになるかも。
0216デフォルトの名無しさん
2011/03/26(土) 20:41:30.23前回呼び出しからの経過時間でしょうか?
0217デフォルトの名無しさん
2011/03/26(土) 22:21:16.45前回呼び出しからの経過時間
ただしタイマー(CDXUTTimer)がストップ状態であればその間の経過時間は測られない
また、パフォーマンスカウンターがサポートされていなければ-1.0を返す。
DXUTのソース見た感じだとそう読めました。
0218デフォルトの名無しさん
2011/03/27(日) 00:43:20.67ありがとうございます
0219デフォルトの名無しさん
2011/03/27(日) 06:09:08.89SDK付属のやつは難しい
0220デフォルトの名無しさん
2011/03/27(日) 08:52:50.30片方のデバイスを通して作ったテクスチャを、
もう片方のデバイスで使う(レンダリングする)とかは
可能ですか??
片方のデバイスでNowLoading画面を出しながら、
別スレッドでもう片方のデバイスでテクスチャのロードとかを
したいのです。
0221デフォルトの名無しさん
2011/03/27(日) 09:05:15.470222デフォルトの名無しさん
2011/03/27(日) 09:48:06.25・ローディングとDirectxは厳密には関係ない
0223デフォルトの名無しさん
2011/03/27(日) 10:24:31.82描画とロードが別スレッドで同時に発生するよね?
もちろんマルチスレッド可能に設定すればいいけど、
マニュアルにはパフォーマンスが落ちるとか書いてあるし。
どうすればいい?
0224デフォルトの名無しさん
2011/03/27(日) 10:40:36.77なぜなら1フレームにバイト数指定してちょっとづつ読めばいいから
プログラミング初心者ならこっちをオススメする。
スレッドを使うならば、ロードスレッドはずっとロード、
メインはそれにお願いキューでも作ってお願いする。
出来上がったら受け取る。受け取ったらCreate〜FileInMemory系で
「メインスレッドで」作成する
D3DCREATE_MULTITHREADEDフラグあたり使えばDirectx9でもあれこれできるかもしれないが、
オススメはしない
きちんと排他制御が使いこなせない限りマルチスレッドなど使うべきではない
0225デフォルトの名無しさん
2011/03/27(日) 10:43:51.83自分のゲームで問題になるかどうか結論出してからまたいらっしゃい
0226デフォルトの名無しさん
2011/03/27(日) 10:58:06.16なるほど、やっぱりそういう沼くさいやり方になる訳ですね。
Create〜FileInMemory系は使ったことないので、色々試してみます。
ありがとうございました。
0227デフォルトの名無しさん
2011/03/27(日) 17:38:08.50ステンシルシャドウ?
0228デフォルトの名無しさん
2011/03/27(日) 18:10:14.96フルスクリーンだと使えないのが難点
0230デフォルトの名無しさん
2011/03/27(日) 20:13:56.75http://msdn.microsoft.com/ja-jp/library/bb172527%28v=vs.85%29.aspx
ここによると
---
1 つのスレッドで D3D API を呼び出しつつ、別のスレッドでウィンドウメッセージを処理する場合、デバイスの作成時はこのフラグを使用する必要があります。
---
とある。
大抵のゲームプログラムはメッセージスレッドと別に、ゲームスレッドを作るだろうから(だよな?)
オススメどうのの前に、大抵このフラグは使わなければいけないことになるのでは?
0231デフォルトの名無しさん
2011/03/27(日) 20:15:47.70D3DCREATE_MULTITHREADED
のことね
0232214
2011/03/27(日) 20:28:24.32ありがとうございます。
・ウインドウサイズは可変
・バックバッファサイズはユーザーが決める。描画速度に直結するので多少汚くても小さめにした人がいるので
ということで、必ずしもウインドウとバックバッファのサイズを一致させることができないのですが、
ズレ現象自体を回避する方法は無いでしょうか?
(Resetは、ウインドウサイズが変わったらResetかけてバックバッファをウインドウサイズと同じにしちゃえってことですよね?)
0233デフォルトの名無しさん
2011/03/27(日) 20:35:09.58必要だと思うなら使えばいいだけだが
0234デフォルトの名無しさん
2011/03/27(日) 20:59:46.14お前のゲームはウインドウを移動させるとゲーム処理が止まるのか
0235デフォルトの名無しさん
2011/03/27(日) 21:04:58.45たかだかそれだけのためにスレッドを生成するのか
0236デフォルトの名無しさん
2011/03/27(日) 21:35:50.55え?うん。通信対戦とかだと致命的だしね
0237デフォルトの名無しさん
2011/03/27(日) 21:40:54.47むしろ何も考えずに作った俺のアプリはとまんないんだけどw
0238デフォルトの名無しさん
2011/03/27(日) 21:54:32.39メッセージスレッドと分けるだけで必要になるって事実にびっくりしろよ
俺はびっくりした
0239デフォルトの名無しさん
2011/03/27(日) 22:00:12.38直接起こす or APIに起こさせるの違いはおいといても
0240デフォルトの名無しさん
2011/03/27(日) 22:16:07.63何が目的?
0241デフォルトの名無しさん
2011/03/27(日) 22:21:18.04表示には所詮反映されないわけで素直にコマ落ちさせたほうがまだ納得できる
0242デフォルトの名無しさん
2011/03/27(日) 22:21:51.71格ゲーとか作った事あればわかるかもしれないが、必須
0243デフォルトの名無しさん
2011/03/27(日) 22:22:05.270244デフォルトの名無しさん
2011/03/27(日) 22:22:46.75意味あるだろ
0245デフォルトの名無しさん
2011/03/27(日) 22:25:47.43多分思い描いてる処理とか、作ろうと思う内容の違いかもしれないけど、
逆に描画他でコマ落ちしている時、入力を受け付けなかったらプレイヤーは違和感感じると思うぜ
0246デフォルトの名無しさん
2011/03/27(日) 22:28:59.28・画面にフィードバックが無い間に、入力でパラメータが変わったらおかしい
意味ある派の頭に浮かんでいる処理の様子
・入力が直接画面にフィードバックするロジックじゃなくて、入力が一旦キューに溜められて
それを評価してパラメタに反映する。 パラメタへの反映はゲームループ内で行われる
→ 先行入力の基本処理
こういう事だと思われ
0247デフォルトの名無しさん
2011/03/27(日) 22:29:41.75例えば次のフレームまでに→←→→・・・って10回入力があったときは
どれが採用されんの?っていうかどう処理するつもりなの?
0248デフォルトの名無しさん
2011/03/27(日) 22:30:23.42うーんなるほど。内容にもよるのかな
0249デフォルトの名無しさん
2011/03/27(日) 22:31:59.61そうとうコマ落ちしてるもんでも作らない限り
格ゲー作ってる会社で働いてたことあったけど入力をキューに貯めるなんてことしてなかった
0250デフォルトの名無しさん
2011/03/27(日) 22:37:45.98それが入力された前回からの差分タイムと、入力された内容をセットで記録して
FIFOで取得していくのさ。 例えば波動拳のコマンドがあったとき、必要な入力が ↓\→ の3ストロークだとして、
実際には 「必要な3入力が一定時間以内にあれば良い」(人の手はいい加減だから、余計な入力がある事も考慮する) だった時、
過去に遡って合計時間がその一定時間以内になるキー入力がそれらだったら、「これは波動拳が入力された」 と見なすロジック。
以前思いついて実装したら、かなり綺麗に反応した。 もちろんそれだけじゃなくても、違和感消えるぜ
てか、やってみればすぐわかるぜ
>>249
普通はライブラリ側で処理するように書くから見なかったんじゃね
0251デフォルトの名無しさん
2011/03/27(日) 22:40:23.29ゲーム作ろうぜ!みたいなブログしか見てない人や
リアルタイム処理の実装をコアライブラリから書かない人なんかには
ピンと来ないと思われ
あと FIFOキューじゃなくて、FILOスタックじゃね
0252デフォルトの名無しさん
2011/03/27(日) 22:41:47.00PCのゲームでコマ落ちってなんの冗談だよ
フレームスキップが基本だろ…
通信対戦どうする気なんだよ。ヘボマシンの対戦相手が処理落ちすると、こっちもひっぱられて処理落ちするんか?w
0253デフォルトの名無しさん
2011/03/27(日) 22:43:23.340254デフォルトの名無しさん
2011/03/27(日) 22:45:07.51可変フレームレート描画が基本な時代に
0255デフォルトの名無しさん
2011/03/27(日) 22:49:23.85簡単なゲームや、「つかいかたにゅうもん」 みたいなサイトだと
初心者がついてこれなくなる=主旨がズレていくから、説明されないけど
0256デフォルトの名無しさん
2011/03/27(日) 22:50:48.15いや、さすがに1秒で60回近くも更新されてるんだから違和感なんてぜってーねーよ
だいたいどんな超人だよ
まあ、それはおいておいて2DRPGだとして主人公はどっちに進むんだ?
ってことを俺は聞きたいんだ
0257デフォルトの名無しさん
2011/03/27(日) 22:51:56.69いやキュー。スタックにしてどうする
てか過去制限のあるFIFOのリングキュー
0258デフォルトの名無しさん
2011/03/27(日) 22:55:58.44というのはまたおかしな考え?その時に時間だって記録しておけるはずだし
0259デフォルトの名無しさん
2011/03/27(日) 22:56:10.83D3DCREATE_MULTITHREADEDを使う必要があるのか?ってことなんだが
それ以外の2DRPGがどうのだのはスレ違い。そろそろ自重しろ
0260デフォルトの名無しさん
2011/03/27(日) 22:57:25.86とにかく頭で考えないで実装してみなよ
たった1/60秒だろ?思い込みは危険だぜ
RPGでもなんでも、評価そのものは単に入力した順にされるだけだって
0261デフォルトの名無しさん
2011/03/27(日) 22:57:33.13そんなん指定してみりゃいいじゃん
0262デフォルトの名無しさん
2011/03/27(日) 23:00:10.25もしかして、話わかってない?
次のフレームまでに方向キーが色々押されたと
でも操作キャラが移動する方向は仮に4方向だとしてそのうち1方向しか選べないよな?
って状態だよ?
>>259
硬いこというな
DirectXのみのことだけしか話しちゃいけないってわけじゃなくて
ある程度そこから派生事項もあるからこそ盛り上がる掲示板だろ
0263デフォルトの名無しさん
2011/03/27(日) 23:00:40.78こういった話は通じないと思います
あとここはAPIのスレであってロジックのスレじゃないです
0264デフォルトの名無しさん
2011/03/27(日) 23:03:19.31いやむしろ話わかってないか?
キュー [↑→↓] こういう状態だとして、それは入力を溜めるスレッドの仕事で
評価する側はFIFOで先頭から必要に応じて、空になるまで取り出すだけだっての
先行入力って言えばわかるかい?
>>263
そうだったスマン
0265デフォルトの名無しさん
2011/03/27(日) 23:04:37.12キー入力をスレッド化するのは、描画が処理落ちしてスキップされても、常に同じ感覚で波動拳を出すためだ。
入力をキューに貯めるってやつは、キー入力スレッド側の入力を貯めておいて
メインスレッド(描画もする)側で1フレ分ずつ処理して入力スレッドに追いつかせるって意味だ。
入力キューが溜まっていたら、その間は描画はせずに、入力キューに基づいて高速処理するんだよ。
入力キューは、通常1秒間に60個の入力が貯まる
0266デフォルトの名無しさん
2011/03/27(日) 23:05:58.18単にマイライブラリとして書いておけばいいだけなので、
理解出来ない人や不要な人は別にやらなくてもいいんだぜ
0267デフォルトの名無しさん
2011/03/27(日) 23:07:27.00通常じゃなくて、1秒間に60個の入力が貯まる実装なら貯まる、が正解
通常、じゃない
0268デフォルトの名無しさん
2011/03/27(日) 23:07:43.07うっそ、すっげ複雑じゃん
↑↓→←なんて入ってたらどっち進んでいいのかわかんねーよw
トリガも取りにくくね?
どうせ必要なのは最期のだけだろ?w
0269デフォルトの名無しさん
2011/03/27(日) 23:11:48.64一応世の中のゲームはFPS60入力が「通常」でな…。
>>268
次のフレームは上、その次のフレームは下、次は右、次は左。
描画に4フレかかったせいで、入力が4つ貯まってる状況なだけじゃんそれ
0270デフォルトの名無しさん
2011/03/27(日) 23:12:29.20>入力キューが溜まっていたら、その間は描画はせずに、入力キューに基づいて高速処理するんだよ。
その入力キューを溜める仕事の話が上の別スレッドの話
勝手に誰か溜めてくれるのかい? てかキー入力ならOSが溜めてくれるけど
>>268
なんでこれでフクザツなんだよ。
>↑↓→←なんて入ってたらどっち進んでいいのかわかんねーよw
だから先頭から順に処理するだけだっての・・・
人がいち、にい、さんと数えながら入力するのと、固有処理は同じことだよ
理解できないなら別にいいから、人に説明させといて単芝生やすなksg
0272デフォルトの名無しさん
2011/03/27(日) 23:14:21.86いや、描画は1秒60回更新だとして
キー入力を1フレ1回じゃなくて反応した分キューに詰め込むって言ってるんだろ?
だから、次フレまでにたくさんのキー入力が入るって話してんじゃねぇの?
だから次のフレームは最期に押されたキーである←にいく・・・って俺は思ってるんだけど
0274デフォルトの名無しさん
2011/03/27(日) 23:16:38.68ええ?処理すんの?
例えばドラクエなFC版の3とか4とか想像してくれ(あんまりかわんねーけど)
↑いっても↓いっても→でも←でも1歩1歩同じスピードで進むよな?
キー全部処理するってことありえねーだろ?
0275デフォルトの名無しさん
2011/03/27(日) 23:17:38.20仕様が違う
0276265
2011/03/27(日) 23:18:29.35・キー入力は別スレッド派
描画が処理落ちした(例えば1回の描画に唐突に1秒かかってしまった!)としても、
入力スレッドは安定して動いているので、60個の入力が貯まる。
メインスレッド(←描画も行ってる)は、60個の入力を順番に処理して、遅れてしまった分を取り戻す。
(たいていこの間は描画がスキップされ、いわゆるフレームスキップ状態になる)
・キー入力は描画スレッドと同一でいいだろ派
描画が処理落ちするとゲームがスローになる
別にSTGとかならわりとある実装
0279デフォルトの名無しさん
2011/03/27(日) 23:26:09.95えー、スレッド派だせぇじゃーん
絶対、変な動きするよー
0280265
2011/03/27(日) 23:28:56.11だせえかどうかはともかく、格闘ゲームとかはこの実装がポピュラーだよ。
描画の負荷とまったく関係なく、常に同じ速度でゲームが進むんだから、一番優れてると思うけど?
「変な動き」とやらは絶対しないでしょ。描画の負荷が乱れても、ゲーム速度は一切変化しないんだから
0281デフォルトの名無しさん
2011/03/27(日) 23:31:17.70嘘吐くなよw
俺、一応、格ゲー作ってる会社いたけどキー入力のキューなんて作ってなかったもん
マジで描画スレッドといっしょだったよ
0282270
2011/03/27(日) 23:32:16.96↓こういう事。変な動きなんかする訳ないだろ
http://codepad.org/wiqqcXin
って、DirectXのスレで申し訳ないが
>>278
そうなのか
0283デフォルトの名無しさん
2011/03/27(日) 23:32:47.61コマンド入力を受け付けなくちゃいけない格ゲーを同列にかたっちゃいかんな
後者の場合はコマンドを評価するためのバッファが必要で
且つ、フレーム速度によって入力の難易度が変わってはいけない
あとは分かるよね?
0284デフォルトの名無しさん
2011/03/27(日) 23:33:15.561秒に60個のキー入力がたまる設計でもいいが、ダサイ設計だなと思う
0285270
2011/03/27(日) 23:33:46.54ヒント: >>282 のコードで言うと、mainから下の部分しか担当してなかったら、
取得される値がキューから来てるのかそうでないのか、見かけ上わからないから
0286デフォルトの名無しさん
2011/03/27(日) 23:34:18.44それってコンシューマなんじゃないの?
フレーム速度が保証されてる環境ならキューは作らずに済ます場合がある
0287265
2011/03/27(日) 23:35:57.37それ、アーケードかコンシューマの話でしょ
動作環境が定格じゃなかったり、通信対戦絡んだりしてるなら絶対フレームスキップ方式のはずだよ
0288270
2011/03/27(日) 23:36:28.910289デフォルトの名無しさん
2011/03/27(日) 23:36:49.81まあ、そうかもな
どんだけ違いがあるか知らんけど
無駄なことやってると思うけどな
DirectXのチュートリアルで十分だぞ
あれといっしょの仕様で30万本近く売ってるから
0290デフォルトの名無しさん
2011/03/27(日) 23:37:52.520291265
2011/03/27(日) 23:38:55.912chスレで「キーバッファ式がだせえ」とか「30万本近く売ってるから」とか書き込むわけないわなw
そもそも、キーバッファ式だせえ言ったら、Windowsのメッセージキューシステム全否定じゃねーかw
0292デフォルトの名無しさん
2011/03/27(日) 23:39:23.820293デフォルトの名無しさん
2011/03/27(日) 23:41:33.16そんな大層なことしてると思ってるのか?w
ぶっちゃけるとSDKのコードをそのまま貼った、組んですらいない
多分10分ぐらいでなんの疑問も持たずに終わらせました
これが現場のリアルな話ですw
0294265
2011/03/27(日) 23:41:45.56描画を別スレッドにする可能性はあるな…
だが、キーバッファ式よりよっぽどだせえし、描画に必要な情報を全部コピーする必要があるから、速度ガタ落ちだよなw
0295デフォルトの名無しさん
2011/03/27(日) 23:42:09.98描画が追いつかなくても、WM_KEYDOWN とか勝手に OS のメッセージキューに溜まっていってるじゃん
メッセージ処理(全ての入力を受け取れる) → フレーム処理(全ての入力を使う) → 描画
これで問題ないことない?何か勘違いしてる?
0296265
2011/03/27(日) 23:42:19.40ム板はマジ強制IDにして欲しいわ…
0297デフォルトの名無しさん
2011/03/27(日) 23:42:21.561秒に60個て言うことは、→押した状態が数個もたまるんだろw ダサイ意外ないなw
0298265
2011/03/27(日) 23:43:55.86描画に1秒がかかったら(爆発エフェクトが超重なったとか、そういう瞬間的なものでな)
1秒分の入力がメッセージキューにたまるんだぞ?
WM_KEYDOWNには「いつ」押されたかの情報は入ってないから、1秒の前半に押されたのか、後半に押されたのかすらわからん
0299デフォルトの名無しさん
2011/03/27(日) 23:44:03.800300デフォルトの名無しさん
2011/03/27(日) 23:45:16.460301270
2011/03/27(日) 23:46:39.40>描画が追いつかなくても、WM_KEYDOWN とか勝手に OS のメッセージキューに溜まっていってるじゃん
だから、それ、キューに、溜まって、いってるじゃん
>>239 を参照
0302265
2011/03/27(日) 23:46:55.52瞬間的なものって書いてあるのに、なんで常時になってんだよ
0303デフォルトの名無しさん
2011/03/27(日) 23:48:15.09お前、自分に技術が無くて理解できないから意地になってるだろw
0304デフォルトの名無しさん
2011/03/27(日) 23:48:33.870305デフォルトの名無しさん
2011/03/27(日) 23:48:53.56だから、棒立ちになるのを回避するために 60/1の設計を選んだ、それがダサイい
0307デフォルトの名無しさん
2011/03/27(日) 23:50:34.140308デフォルトの名無しさん
2011/03/27(日) 23:52:03.470309デフォルトの名無しさん
2011/03/27(日) 23:52:13.80問題にならないもの(1人用ゲーム)もあれば、問題になるもの(通信対戦)もある
好きに選択してろよ
0310デフォルトの名無しさん
2011/03/27(日) 23:53:12.45さっきからあえてスルーしてたけど
通信云々はまったく関係ないと思うんだよねw
0311265
2011/03/27(日) 23:53:59.34理想論的には、どの環境でも処理落ちしないに限るけどさ
処理落ちした場合どうすんの?
入力キュー分けておけば、処理落ちする環境でも定格通りのスピードでゲーム進行できるんだから、
使わない手はないだろ
0312デフォルトの名無しさん
2011/03/27(日) 23:54:57.44他の誰かと同期をとるゲームで、描画の処理落ちで入力まで処理落ちしたらゲームにならねーだろ
いや、低スペックでやるのが悪いって切り捨てるなら、それでもいいけどさ
0313デフォルトの名無しさん
2011/03/27(日) 23:54:58.68別にどうもしない
いいPC買ってね
0314デフォルトの名無しさん
2011/03/27(日) 23:56:40.71>>306
キー入力を別スレッドにするかどうかは、「その時の要求仕様により」としか答えられないが。
「1秒にキー入力が60個キューに」は例えば「→」押しっぱなしで、それが60個たまるという意味なのか?
まずこれ答えてくれ。
0315270
2011/03/27(日) 23:57:41.50何で感情的な反対とか出るのかわからん
とりあえずキー入力の件は、上のコード見せた時点で伝わったらしく、
意味不明な反応が無くなって良かった
0316265
2011/03/27(日) 23:58:32.85プログラマとしてあまりにダサくて閉口するわ
>>314
その通りだよ。大抵入力は32bitもあれば十分だから、unsigned intのdequeだな
ボタン押して無くても「押してない」っていう情報が貯まるよ
0317デフォルトの名無しさん
2011/03/27(日) 23:59:35.12推奨環境出してるのに低スペックでやるのが悪いんじゃん
そんなもんサポートするのに燃やした工数誰が金出すの?
ま、プロの実装なんてこんなもんよw
いい意味でも悪い意味でも金になんないことはしないのが商売なんだよきっとw
0318デフォルトの名無しさん
2011/03/28(月) 00:00:29.54やっぱりか、他の方法は思いつかなかったのか?
0319265
2011/03/28(月) 00:01:35.955分でできる実装をしない理由もないし、カプコンのMTフレームワークとかもフレームスキップ式だっつーの…
可変フレームレートなめんな
0320270
2011/03/28(月) 00:02:49.86ちなみに俺は上のcodepadのコードでは端折ってるが、
状態とタイムの記録をしていく格好なので、同じ情報が続く場合は溜めない
0321デフォルトの名無しさん
2011/03/28(月) 00:03:27.160323デフォルトの名無しさん
2011/03/28(月) 00:13:06.01春休みだからか
0324270
2011/03/28(月) 00:13:11.35ケチるというか・・・ 格ゲな処理イメージで申し訳ないだけど
状態変遷を追うのがうざったいからさ。
[nn.mm: 上ON] [nn.mm: 右ON] [nn.mm: 上OFF] [nn.mm: 下ON] [nn.mm:右OFF]
とかなら追いやすいけど、これが
[上ON] [上ON] [上ON] [上ON] [上ON] [上ON] (中略) [右ON] [右ON] [右ON] (後略)
とかだとウザすぎるのさ、ってだけ
0325265
2011/03/28(月) 00:17:42.46なるほどね
格闘ゲームでの、技コマンド解析とは相性良さそうだね
と、ロジックの話はこんなところでいいよな
馬鹿に教えようと思ったら、釣りだったのは残念だが、
釣りに見せかけて情報を引き出したかった初心者プログラマだったと思おう
別にム板は素直に聞けば応えてくれる連中ばっかなんだけどなー…
0326270
2011/03/28(月) 00:19:49.24これだったらマジで金品要求するわ
0327デフォルトの名無しさん
2011/03/28(月) 00:22:55.10上で盛り上がってますが私のプログラムもそういえばドラッグ中動かない仕様だな〜
と思いながら読んでましたが理解できる部分半分、よく分からない部分も多々。
そんな訳で皆様のお話についていけるような知識を得たいのですが
DirectX(主にゲームプログラミング)におけるマルチスレッドの利用について
参考になるサイトや書籍を知ってたら教えて下さい、お願いしますm(_ _ )m
0328デフォルトの名無しさん
2011/03/28(月) 00:25:45.46入力スレッド でぐぐったら、ちょうどよさげなサイトヒットしたよ
0329デフォルトの名無しさん
2011/03/28(月) 00:28:06.43ゲームプログラミングに限らない話になるから、マルチスレッドについては
それ単独で処理勉強してくれ
このスレ的に言えば、どの関数やクラスを利用する時気をつけなければならないか、って話になると思う
それ以外は本来スレチ
0330デフォルトの名無しさん
2011/03/28(月) 00:38:00.22が出ます。しかし自分で調べてフォルダへのパスはちゃんと入力したのです
(証拠画像)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
を入れました
なにかインクルードできない原因がありますか?
0331デフォルトの名無しさん
2011/03/28(月) 00:42:21.50実はかなり前の話でいまはもうとっくに辞めてるんだけどねw
0332デフォルトの名無しさん
2011/03/28(月) 01:06:36.15よくわからんけど
リンカーの追加の依存ファイルの項目の設定はいけてんのか?
(まあ、出てるエラーが違うかなぁ・・・)
0333デフォルトの名無しさん
2011/03/28(月) 01:24:55.041>TRACKER : error TRK0005:
というエラーが ありました、これが原因かもしれません少し調べてきます。
上の情報だけではエラーは無いと思うのです、いくら調べてもミスは見つからないからです。
0334デフォルトの名無しさん
2011/03/28(月) 01:46:13.87SDKをインストールしたときに環境変数DXSDK_DIRが設定されてるはずなのに
なんでフルパスでいれてるんだろう?不便じゃないのか?
0335デフォルトの名無しさん
2011/03/29(火) 19:55:27.12ID3DXEffectオブジェクトを持ったクラスを作り、そのクラスの実体を作って行くと、5つ作ったところで5つ目のクラスのID3DXEffectオブジェクトで「ヒープが壊れている」とエラーが出ます。
そのクラスオブジェクトを作る順番を入れ替えても5つ目でエラーになるので、用意したメモリ領域以上に実体を入れようとしているのが原因ではと思っています。
でもクラスオブジェクトを作るごとにメモリ領域は新しく用意されるはずですよね?どうしてでしょうか。
0336デフォルトの名無しさん
2011/03/29(火) 21:12:41.71話はそれからだ。原因の絞込みはデバッグの基本だぞ
0337デフォルトの名無しさん
2011/03/29(火) 21:30:47.57ID3DXEffectを使わずにアプリを正常終了させて、Debug出力にリークが無いか調べてみ
0338デフォルトの名無しさん
2011/03/29(火) 22:26:02.24特にGUIのDCまわり、お前、解放する必要あんのかどうすんのか言えよ
0339デフォルトの名無しさん
2011/03/29(火) 23:06:58.17開放しなくてもとりあえずシーンとしてるのが意地悪いよな
0340デフォルトの名無しさん
2011/03/29(火) 23:14:30.00mallocで確保したのを二重にfreeで解放してた
ってパターンも多い
0341335
2011/03/30(水) 14:13:46.02頂点定義関係カラーを消したら直った
0342デフォルトの名無しさん
2011/03/31(木) 18:02:42.48何なんですか?どんな環境でプログラミングするんですか?
0343デフォルトの名無しさん
2011/03/31(木) 18:16:54.22もっと幼稚な感じで説明されたほうがわかりやすいかも
0344デフォルトの名無しさん
2011/03/31(木) 18:20:58.87標準的にはVisual C++
0345デフォルトの名無しさん
2011/03/31(木) 18:24:00.81環境。
コンパイラとかエディターとかターミナルなど。
後DirectXライブラリは皆さん使ってますか?
0346デフォルトの名無しさん
2011/03/31(木) 18:33:26.47自分は一般的な3Dゲームのようなものを作っていますので、Visual C++でウィンドウズAPIを使ってアプリケーションをつくっています。
ライブラリは公式のDirectXSDKのもので、誰かが自作したようなライブラリは使っていません。
0347デフォルトの名無しさん
2011/03/31(木) 18:42:24.68最近になってDXUTナシで作ることに挑戦し始めたが。
でも初心者なら適当なCD付きの本を買って環境作ったほうがいいんじゃね。
0348デフォルトの名無しさん
2011/03/31(木) 18:47:01.21ありがとうございます。
初心者はDirectXそのものを自在に扱うのは限りなく不可能に近いと思ってます。
0349デフォルトの名無しさん
2011/03/31(木) 18:57:26.70「○×つくろー」ってサイトに初歩的なことから書いてあるからわかりやすい
0350デフォルトの名無しさん
2011/03/31(木) 22:05:45.96>初心者はDirectXそのものを自在に扱うのは限りなく不可能に近いと思ってます。
それ以前に言語自体、またDirectX以前にwin32自体意味を理解して
自分が思ったコードを書けないと話にならない。DirectXは良くも悪くもただのライブラリです
0351デフォルトの名無しさん
2011/03/31(木) 22:23:11.15レベルじゃないときつい。DirectXは。
0352デフォルトの名無しさん
2011/03/31(木) 22:36:53.42その上で例えばいくつかの手段を考えて、その中から例えば
DirectX を選択して描画や入力を任せてみる、みたいな順序だから
>>348 の言う 「初心者」 って言葉の中に、「プログラミング自体の」 とか、まして 「言語自体の」 とか
「Windows上で動くプログラミング自体の」 みたいな意味合いが含まれてたら、不可能で当たり前
0353デフォルトの名無しさん
2011/03/31(木) 23:01:17.000354デフォルトの名無しさん
2011/03/31(木) 23:12:27.230355デフォルトの名無しさん
2011/04/01(金) 00:00:31.990356デフォルトの名無しさん
2011/04/01(金) 01:59:28.67グリッドはなんとかできたんですが球はどうしたらよいでしょうか・・・
0357デフォルトの名無しさん
2011/04/01(金) 02:03:01.630358デフォルトの名無しさん
2011/04/01(金) 04:44:04.98ExpressEditionでも商用利用可能。
0359デフォルトの名無しさん
2011/04/01(金) 08:13:57.940360デフォルトの名無しさん
2011/04/01(金) 08:24:02.30間違ってたらすいません・・・
0361デフォルトの名無しさん
2011/04/01(金) 09:16:14.85流石にこれは釣りとか冗談だよね
0362デフォルトの名無しさん
2011/04/01(金) 11:01:45.80釣り針でっかいから食いついとくけど、君はDirectXやWin32APIの勉強の前に言語の勉強が必要で、
さらに言語の勉強の前に用語の勉強から始めないといけない。
あと無駄に改行するな。
0363デフォルトの名無しさん
2011/04/01(金) 12:53:12.72デバッグ用描画だったら適当にsin cos使って頂点を一回りすれば
それなりに見えね?
モデリングソフトが出力する頂点をベタ打ちしたり、
D3DXCreateSphereとかつかってメッシュ描画しちゃうのでもいいが
レンダリングステートで線の三角系描画設定できるし
0364デフォルトの名無しさん
2011/04/01(金) 15:24:55.35イメージとしては
DirectXもWin32APIもマイクロソフト関連のAPIであることは間違いないでしょ?
0365デフォルトの名無しさん
2011/04/01(金) 16:24:57.26ありがとうやってみます
0366デフォルトの名無しさん
2011/04/01(金) 16:36:13.26(インデクス付き頂点ブレンドって時代遅れなのね、ソフトウェア処理では動いたけど)
ふと、ゲームの動作環境で「グラフィック:GeForce○○以上推奨」とか書かれるけど
それって、速度的なパフォーマンスやサポートするシェーダバージョン以外にも
この世代のGPUはこの機能が使えるから〜とか、そういった知識も必要なのかと思ったのですが
グラフィックカードによりけりな部分の知識を学べる良いサイトや書籍があれば教えて欲しいです。
0367デフォルトの名無しさん
2011/04/01(金) 19:39:43.580368デフォルトの名無しさん
2011/04/01(金) 20:20:09.30こんにちわんとこんばんわにとありがとうさぎの括りがいっしょでしょっていってるようにきこえる。
WinAPIはWinodwsの基本的な部分を開発するAPI。
DirectXはWindwsの上のレイヤーであるマルチメディア部分を開発するAPI
レイヤー的にイコールになることは無いよ。
0369デフォルトの名無しさん
2011/04/01(金) 21:02:07.680370デフォルトの名無しさん
2011/04/01(金) 21:06:59.90俺もあまり詳しくないから違ってたらすいません
3D処理とかの行列変換出来るか否かでハードウェアT&Lに依存するんじゃないだろうか
でもこれに対応してないって10年以上前の化石PCとかだよね・・・
グラボの性能で○○以上って書いてあるのは、単純に同時に描画するポリゴン数とかテクスチャ数?
から換算してるんじゃないだろうか
書籍やサイトについては分からないです、すいません
0371デフォルトの名無しさん
2011/04/01(金) 21:18:26.760372デフォルトの名無しさん
2011/04/01(金) 21:53:53.47基本C言語でOKですか?
DirectXはC++のほうが相性良かったりしますか?
0373デフォルトの名無しさん
2011/04/01(金) 21:57:52.25グローバル変数の地獄に落ちない器量があるならどっちでもいいよ。
0374デフォルトの名無しさん
2011/04/01(金) 22:00:11.94器量が無い人向けはC?
0375デフォルトの名無しさん
2011/04/01(金) 22:09:46.08覚えることは多いけどC++。
変数、関数、クラスと基本構文ができればいける。目安としては、1クラス1機能。
粒度は自分に合わせるといいよ。
0376デフォルトの名無しさん
2011/04/01(金) 22:14:22.250377デフォルトの名無しさん
2011/04/01(金) 22:17:53.51非転置行列てなんぞ。
転置行列は判るが。ワールドマトリクスとか転置せずにつかえよってことなだけ?
0378デフォルトの名無しさん
2011/04/01(金) 22:44:25.55ポインタはとある地点を指しててそれのアクセス方法を提供するだけなんだけど、わからない人にはほんとにわからないらしい。
0379デフォルトの名無しさん
2011/04/01(金) 22:45:20.160380デフォルトの名無しさん
2011/04/01(金) 22:54:12.060381デフォルトの名無しさん
2011/04/01(金) 23:28:14.86多分だけどHLSLでなくアセンブラ使う場合は転置する必要があったけど
HLSLで扱う場合はその必要がなくなったから「非転置」って言い方してるんじゃないかな?
丁度シェーダ本のアセンブラ部分読んでて、シェーダに行列渡す時はDirectX側とシェーダ側で
行列の扱いが異なるから転置が必要、みたいな記述があったんで
SetMatrix使えば勝手に転置してくれるって感じなのかな?
間違ってたら誰か訂正よろ。
0382デフォルトの名無しさん
2011/04/01(金) 23:59:02.57むしろそんなの可能性もあったのかw<アセンブラで転置の必要あったかも
サンプル見てもカメラからとってきたのをそのまま使ってるから転置しない行列ってことでいいんだろうけど
とりあえずそれで納得しとく。ありがとう
0383デフォルトの名無しさん
2011/04/02(土) 00:45:04.79ポインタ=アドレスだと勘違いしてる奴だと思う
0384デフォルトの名無しさん
2011/04/02(土) 04:17:48.370385デフォルトの名無しさん
2011/04/02(土) 08:16:00.08ん? 違うのかい? c#とか? ハンドル?
0386デフォルトの名無しさん
2011/04/02(土) 08:25:21.30×アドレス
○アドレスを格納する変数
って意味だろ
0387デフォルトの名無しさん
2011/04/02(土) 08:34:22.55*の数と&をテキトーに合わせておく・・・程度に考えてるやつのがうまく理解する
0388デフォルトの名無しさん
2011/04/02(土) 08:41:22.760389デフォルトの名無しさん
2011/04/02(土) 08:44:48.56仕組みなんて時間がたてば勝手に理解するだろ
問題はとりあえず組めること
0390デフォルトの名無しさん
2011/04/02(土) 11:37:15.78イメージで理解できたら、だいたい理屈と整合性取れてるんだよな。
理屈ばかり追い求めたら頭がパンクする。しかも下手したら俺論理的
で頭良いやべーwwwってなるからな。
そんな俺はDirectXとWindowsAPIの区別もつかない初心者。
0391デフォルトの名無しさん
2011/04/02(土) 16:34:49.72多機種の DirectX 使わない人にとっては Win32 API と同じに見えるのでいいと思うよ。
OpenGL がもしも Win32 でしか使われなかったら 境目が無くなると思うし。
0392デフォルトの名無しさん
2011/04/02(土) 17:30:02.71未変換の頂点で構成した面では完全に貼れるのに・・・
0393デフォルトの名無しさん
2011/04/02(土) 17:45:21.53これはおれもそうだと思う。
さすがに数だけって訳にはいかないけど、最初は深く考えすぎても
だめ。最初はとりあえず動くように書ければ、経験重ねて自然に
覚えれたって感じだったな。
>>392
完全に貼るってどういうこと?
DirectXだと座標を-0.5fしないと合わないとかはあるけど。
0394デフォルトの名無しさん
2011/04/02(土) 17:54:46.407は最新のDirectXですか?
後ActiveXはDirectXと同じようなもの?
0395デフォルトの名無しさん
2011/04/02(土) 18:36:23.92MSのOSさぽーと期限が切れたOSのDXは更新されない。
DX7は最新ではありません。Win7のDXは11で今のとこ最新。
ActiveXはCOM利用形態のひとつ。
たとえばIEに外から機能追加したりするときにActiveXを使う。
0396デフォルトの名無しさん
2011/04/02(土) 18:39:40.260397デフォルトの名無しさん
2011/04/02(土) 21:04:02.86たとえばn個のソースボイスを同時にStartしたときに、x個しか音が出ないとか
0398デフォルトの名無しさん
2011/04/02(土) 23:41:04.090399デフォルトの名無しさん
2011/04/02(土) 23:45:45.57シェーダーは2.0です
0400デフォルトの名無しさん
2011/04/03(日) 00:01:07.31作れます
0401デフォルトの名無しさん
2011/04/03(日) 00:10:50.65浮動小数点型定数レジスタは
ここを見る限り、最低4Dベクトル*256個
これはD3DCAPS9.MaxVertexShaderConstと等しくなると書いてある
http://msdn.microsoft.com/ja-jp/library/bb172961%28v=VS.85%29.aspx
0402デフォルトの名無しさん
2011/04/04(月) 10:05:55.650403デフォルトの名無しさん
2011/04/04(月) 12:47:57.58VC++6.0&DirectX SDK9.0(Oct2004)使ってるよ^^v
0404デフォルトの名無しさん
2011/04/05(火) 02:08:17.910405デフォルトの名無しさん
2011/04/05(火) 14:02:24.24日本語ドキュメントがあるらしいAug2009のSDKを入れようと思ってるのですが
古い環境を残しておく利点って何かあるでしょうか?
>>403 みたいなのだと古い環境で動くアプリケーションも作れるとか?
0406デフォルトの名無しさん
2011/04/05(火) 14:25:17.830407デフォルトの名無しさん
2011/04/05(火) 14:43:32.920408デフォルトの名無しさん
2011/04/05(火) 17:13:03.890409デフォルトの名無しさん
2011/04/05(火) 22:13:50.64新しいSDKにするとDirectMusicが使えないとかじゃないかな
Microsoft DirectX SDK (February 2007) を最後に消えたんだと思う
俺はVS2010 と SDK2007 使ってる
>>408
Microsoft DirectX SDK (June 2010)
じゃないのかな?違ったらすいまそん
初めはVS2010 と SDK2010 使ってて入門書見ながら楽しんでたら
dmusui.h(スペル適当)がありません、どっかのサイトからゲットしたら今度は○○.hがありません、それもいれたら
今度は意味不明なエラー
じゃ別の手段と思いググったら「PlayMusic( ) を使いましょう」 う〜ん、これなんか違う・・・・・
結局SDK2007入れて解決させてしまった
そして今さっきこのスレでXAudio2の存在を知って憂鬱になっているところです
0410デフォルトの名無しさん
2011/04/05(火) 22:27:35.06DirectMusicが消えたのはNovember 2007
( ttp://www.microsoft.com/downloads/en/details.aspx?FamilyID=529f03be-1339-48c4-bd5a-8506e5acf571 )
PlayMusicなんてAPIはないしXAudio2はDirectMusicの代わりになるような物でもない
0411デフォルトの名無しさん
2011/04/05(火) 22:51:38.11さらに言えば、XBOX(XNA)用が主目的で、Windows用は追随統合されただけ
0412デフォルトの名無しさん
2011/04/05(火) 22:59:06.35規格難民が出るのはいただけない
0413デフォルトの名無しさん
2011/04/05(火) 22:59:16.07DxLibはどこかの個人が作った、初心者向けの砂糖で包んだラッパーライブラリ
0414デフォルトの名無しさん
2011/04/05(火) 23:51:26.51またたくさんの嘘を付いてしまいましたすいません
>>413
それだそれ、ゲームプログラミングやってみたくてあちこち手だして
DXライブラリ の方と記憶がごっちゃになっていたようだ、すいません
でもXAudio2ってのがXBOX用でDirectMusicの変わりにならないとすると
最新のDirectX SDK で音鳴らす時どうしたらええの?
dmusici.h dmplugin.h 追加して 「うまくいかね!」
って諦めないで頑張ってあっちゃこっちゃいじってDirectMusicを使い続けるのがセオリーなの?
DirectSound ってのはSDK (June 2010)にあってそっちを使うのが普通?
何が言いたいかと言いますと
これから勉強してやっていくにあたって音を鳴らすのにどれを使っていくのが無難?
0415デフォルトの名無しさん
2011/04/06(水) 00:13:34.53だからDirectSoundか、XAudio2。
ただしXAudio2については、ググっても日本語の記事はSDKのサンプル以上の情報はほぼ無い
= (入門者が書いた入門記事 = HelloWorld状態の記事) くらいしか無いので、
SDKのSample頼みか、あるいは眉にツバつけながらMSDN追うか、あるいは海外の記事を追いかける必要アリ
0416デフォルトの名無しさん
2011/04/06(水) 00:14:48.48単純にBGMならDirectSoundかXAudioでストリーミング
0417デフォルトの名無しさん
2011/04/06(水) 00:31:43.41どうもです
単純にBGM流すのと効果音程度なのでDirectSoundにします
SDKまた最新に差し替えてDirectMusicからDirectSoundにソース変更してみます!
0418デフォルトの名無しさん
2011/04/06(水) 01:36:00.200419デフォルトの名無しさん
2011/04/06(水) 14:46:00.50これは.xの標準仕様?
モデリングの段階では2つのメッシュがきっちり角で合わさってるのに、directxでレンダーすると微妙にずれてる
0420デフォルトの名無しさん
2011/04/06(水) 15:03:59.51自分が書いた内容と、Blenderのx形式expoterの中身を、もう一度よーーーく見直してから、
速やかにBlenderスレに移動するといいと思う
※ワールドに出すとって何?重心や大きさによってリサイズって何が?
モデリングの段階できっちり合わさってるってのは、Blender以外で確認したのか?
Expoter は DirectX の物じゃないだろ って事
0421デフォルトの名無しさん
2011/04/06(水) 15:13:24.65自分の場合、blenderから自前の独自形式で吐き出したメッシュは、
DirectX でも OpenGL でも正常に表示されます
ついで言うと、メタセコでモデリングした内容を、自前のインポータでBlenderに取り込んで
それを xfileで再エクスポートしても正常に表示されます。 これらの話は、DirectXと無関係です
スレチです
0422デフォルトの名無しさん
2011/04/06(水) 17:02:33.070423デフォルトの名無しさん
2011/04/06(水) 18:13:07.22一回の処理がどの程度を言うのか分からないけど、
カメラが動く度に逆行列の計算とワールド変換が必要なのでは?
ごく最近勉強した。参考になればどうぞ↓ 間違ってたらごめん。
// ビュー行列の逆行列
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);
0424デフォルトの名無しさん
2011/04/06(水) 18:17:14.310425デフォルトの名無しさん
2011/04/07(木) 08:55:47.86「一回の処理」の定義がよく分からんが、
1クロックでって事ならそういうSSE命令が出来るのを待つしかないんじゃないか?
計算式をあまり使わずにって事ならカメラ行列の逆行列が使えたような気がする。
0426デフォルトの名無しさん
2011/04/07(木) 08:56:29.680427419
2011/04/07(木) 12:25:47.39でも、directx(自作のスキンメッシュクラス、サイズも同じ)で並べて描画すると、微妙に大きさが違うのです。
なにか仕様があるのではないかと思っています。
0428419
2011/04/07(木) 12:48:15.79お騒がせしました
0429デフォルトの名無しさん
2011/04/07(木) 16:50:00.300430デフォルトの名無しさん
2011/04/07(木) 16:57:38.71当たり判定等の処理も入れられたのですが、キャラそのものを動かす(アクションする?)にはどうしたらいいのでしょうか?
剣を振りまわしたり等の事です
自分なりに調べてみたら「ボーン化」という作業が必要なのは分かりましたが
そっから先がさっぱり分かりません
どこか参考になるサイトありませんでしょうか?
0431デフォルトの名無しさん
2011/04/07(木) 17:09:38.27まるぺけは必読だ!!
ttp://marupeke296.com/GameMain.html
0432デフォルトの名無しさん
2011/04/07(木) 18:53:15.60このレベルだとその回答じゃわけわからんと思う
>>430
「スキンメッシュ」で調べてみるといいよ。ちなみに普通ボーン化なんて言わない。
DirectXのSDKサンプルにもSkinnedMeshというのがあるので参考に。
>>431が出してくれてるサイトにもxファイルのスキニングについて書いてるよ。
0433デフォルトの名無しさん
2011/04/07(木) 19:27:48.86有難う御座います
なるほどスキンメッシュって言うんですね、サンプル見て勉強してみます
0434デフォルトの名無しさん
2011/04/08(金) 00:14:20.09丸パクすると詰むぞ
0435デフォルトの名無しさん
2011/04/08(金) 00:35:24.29サンプルコピペ→エラー→1から見直し→勉強になる
というパターンが多いな
でもたまに根本的な部分がわからなくて詰むから基本はそのうちやりたいな
COM集成体とクォータニオンは最初から理解するのに大きく足止めされた
0436デフォルトの名無しさん
2011/04/08(金) 00:41:52.62座標系が回転していく動作とか理解してないと、とてもじゃないけどキャラクターアニメーションなんて作れない
特に頂点座標と、その座標が置かれている系と、回転軸がどこを中心にどう回転してるのかとか、
そしてそれらが再帰的に回転を繰り返してて、結局グローバル座標系におかれた頂点は今どこにいるべきか、とか
確かに丸パクだと詰むな。挙動自体追えなくなる。ちょっと詰んだ瞬間に、全部逆戻りで予想以上に足止めされる
下手するとそのまま頓挫
0437デフォルトの名無しさん
2011/04/08(金) 01:59:13.750438デフォルトの名無しさん
2011/04/08(金) 08:42:14.57目的の整理が出来ていないと。 どうしたいか、の部分
0439デフォルトの名無しさん
2011/04/08(金) 11:22:56.942.まとめたtxtを見ながら自分の環境に処理を追加していく
3.とりあえず動かしてみるとどっかで失敗しているようで落ちる
4.まとめたtxtを読み返すがtxtでまとめてある処理はきちんと組み込まれている
5.txtにまとめた俺が間違っていると気づき、とりあえずサンプルを丸パクする
6.当然動く訳だが何も理解出来ていないので意味が無い
7.凹む ← 今ココ
0440デフォルトの名無しさん
2011/04/08(金) 16:43:18.360441デフォルトの名無しさん
2011/04/08(金) 18:49:55.20遠いものも近いものもサイズだけは一定にさせたいのです。
0442デフォルトの名無しさん
2011/04/08(金) 20:57:47.28素直に正射影使えば・・・・・
そういう意味でなければパースペクティブがどういう風になっているのか調べて。
きっと希望にそうものがなんにせよ出来ないと思うけど。
0443デフォルトの名無しさん
2011/04/09(土) 00:08:53.19射影行列ではじめて遠近感が出る
で、>>442が言うように正射影で射影行列作ればいい
0444デフォルトの名無しさん
2011/04/09(土) 15:52:58.99X軸もZ軸も左右のクリックも反応するのに、Y軸だけ反応しないってのは、
何がおかしいんでしょうか。
0445デフォルトの名無しさん
2011/04/09(土) 17:24:45.92現状は、カリングをオフにして
device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, 3, 0, 1);
で三角形までは描画できるのですが、
device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, 4, 0, 2);
にしても三角形のままになってしまいます。
0446デフォルトの名無しさん
2011/04/09(土) 18:09:36.96自分で何も調べず、情報も一切出さずに他人に丸投げして解決しようと考える
お前の頭がおかしい
0447デフォルトの名無しさん
2011/04/09(土) 18:10:45.55頂点インデックスの内容も書いて
0448デフォルトの名無しさん
2011/04/09(土) 18:22:37.15なぜわざわざ突っかかるw
0449デフォルトの名無しさん
2011/04/09(土) 18:22:50.70DrawIndexedPrimitives は C# だなぁ・・・
0450445
2011/04/09(土) 18:28:32.11indices[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を使っています。
0451デフォルトの名無しさん
2011/04/09(土) 18:44:32.80何故 primitiveType(arg1)が TriangleList で primitiveCount(arg6) が 2 で numVertics(arg4) が 4 なの?
0452445
2011/04/09(土) 18:56:08.15それで、試しに1個の四角形を描こうと思って、頂点数4つと面が2つを引数にいれています。
0453451
2011/04/09(土) 19:04:13.225年前のC++の記憶で悪いけど TriangleList で2つの三角形を描くなら numVertics は
(三角形の頂点数)3 * (三角形の数)2 で 6 だったはず。
0455デフォルトの名無しさん
2011/04/09(土) 20:32:45.410456デフォルトの名無しさん
2011/04/09(土) 20:36:12.23元も子も無いんだがジョイパッド以外のマウスやキーボードはWinapiで出来るから、
DirectInputは非推奨だぞ
GetCursorPosとかScreenToClientとか使ったほうがいいらしいし、
おまけに簡単だ
0457デフォルトの名無しさん
2011/04/09(土) 20:43:37.120458デフォルトの名無しさん
2011/04/10(日) 06:02:30.36画面の枠にぴったり合わせた描画って可能なんでしょうか?
もしかしてカメラ位置とかは気合いで合わせないとならない?
0459デフォルトの名無しさん
2011/04/10(日) 09:18:21.49んなわけない。
3D描画でも、カメラの視野角とアスペクト比でほぼ正確にわかる。
「視錐台」でぐぐれ。
0460デフォルトの名無しさん
2011/04/10(日) 09:30:34.320461デフォルトの名無しさん
2011/04/10(日) 11:09:53.293Dも混ぜたいならプロジェクションを正射影行列でやる
0462デフォルトの名無しさん
2011/04/10(日) 15:22:33.48アンチエイリアスが可能なのはバックバッファだけだと聞きました
実際にやってみると、確かにレンダリング結果がおかしくなります
しかし、最近のゲームでは遅延レンダリングを行っているにもかかわらずアンチエイリアスが有効なゲームがあります(Crysis2とか)
どうやってアンチエイリアスをかけているのか分かりますか
0463デフォルトの名無しさん
2011/04/10(日) 15:34:19.400464デフォルトの名無しさん
2011/04/10(日) 17:56:09.27バックバッファの4倍の面積のテクスチャ上にレンダリングして、
バックバッファに戻すときにフィルタかけるとか
0465デフォルトの名無しさん
2011/04/10(日) 19:04:21.660466デフォルトの名無しさん
2011/04/10(日) 21:59:25.14発生しているって事でしょうか?
1つだけ出ているのですがどこの呼び出しで作られたスレッドか特定出来なくて困ってます・・
0467デフォルトの名無しさん
2011/04/10(日) 22:08:36.84・・・特定自体しんどいだろうけどな
0468デフォルトの名無しさん
2011/04/10(日) 22:22:40.810469デフォルトの名無しさん
2011/04/10(日) 22:41:57.10あとウォッチ。 せめてデバッガの機能使おうぜ
0470デフォルトの名無しさん
2011/04/10(日) 22:56:45.83俺が建てたスレッドが正常終了でTRUEを返してるだけだ気にするな
0471デフォルトの名無しさん
2011/04/11(月) 14:45:11.38,. ‐'' ̄ "' -、 ,. ‐'' ̄ "'' -、
/ ヽ/ ヽ
l l l つ
l l l つ
,. ‐'' ̄ "'' 、 ,,. --‐┴─-- 、 / ̄ "'' -、 つ
/ ,.-‐''"´ \ _/ ヽ
l / ヽ l
l / > l l
ヽ l (_人__ノ < ヽ /
,,>‐‐| ´´ | / / , , ,. ‐'' ̄ "' -、/___
/ l ヽ_{ i , '" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ `ヽ
l ` 、 ヽ ゝ ________
l ,. ‐'' ̄ "' -、 ,. ‐'' ̄ "'' -、 / ヽ\
l, / ヽ / ヽ, / ノ フヽ
ヽ、,, l l l,,_〈 ーく く く ノ
"'''l l ! \/ ̄i ̄
ヽ /ヽ / ゝ ⊥___,. --
ヽ,___,,,/ ヽ,,___,,,/
/ |
/ |
0472デフォルトの名無しさん
2011/04/11(月) 15:02:18.16GeForce 9300 GSのPCでdevice->SetViewPort()を
呼び出したタイミングエラーが出ているようで困っています。
通常こんな所でエラーが出た経験がなくて戸惑っているのですが、
ひょっとして、MinZ/MaxZは0.0〜1.0の範囲じゃないといけないのでしょうか?
0473デフォルトの名無しさん
2011/04/11(月) 16:14:24.081.D3DDeviceを内包するクラスの宣言がポインタだ
2.DirectXバージョンを間違ってdefineしている
3.SetViewportに渡しているのがD3DVIEWPORT以外だ
4.関数の大文字小文字を間違えている
とりあえず俺がミスった時はだいたいこの辺が原因だった。
0474デフォルトの名無しさん
2011/04/11(月) 16:23:37.92どうもありがとうございます。
実際にはSlimDX越しにアクセスしているので
いずれとも違ってそうです。
0475472
2011/04/11(月) 16:25:01.85D3DERR_INVALIDCALL エラーが発生しています。
DirectXのAPI内でのエラーです。
0476デフォルトの名無しさん
2011/04/11(月) 17:01:32.12>実際にはSlimDX越しにアクセスしているので
じゃあSlimDXスレへどうぞ。いやマジで
0477デフォルトの名無しさん
2011/04/11(月) 17:09:57.030478デフォルトの名無しさん
2011/04/11(月) 17:51:18.260479デフォルトの名無しさん
2011/04/11(月) 18:04:04.550480デフォルトの名無しさん
2011/04/11(月) 22:51:45.18で調べる
0481デフォルトの名無しさん
2011/04/11(月) 22:59:06.41>>479はプログラマから足を洗え
>>480も普通に間違ってる
で、次の方どうぞ〜
0482デフォルトの名無しさん
2011/04/11(月) 23:03:31.91テクスチャフォーマットも調べられないクズが長居すんじゃねーよ
0483デフォルトの名無しさん
2011/04/11(月) 23:14:35.950484デフォルトの名無しさん
2011/04/11(月) 23:15:05.82お前も答えろよ
0485デフォルトの名無しさん
2011/04/11(月) 23:18:56.62IDirect3D9::CheckDeviceFormat
このあたりだろう。不親切なやつばっかだな。たいした手間でもないだろうに
0486デフォルトの名無しさん
2011/04/11(月) 23:21:38.490487デフォルトの名無しさん
2011/04/11(月) 23:24:05.44間違ったことを教えるよりはマシだな
0488デフォルトの名無しさん
2011/04/12(火) 00:20:19.99あれ、一括してCapsだから間違ってはいないと思うがな
間違いって確定でいいのかね?
0489デフォルトの名無しさん
2011/04/12(火) 00:54:12.77事後報告もできない根っからの糞ばっかだからこの程度でいい
結局、>>477だってもうこねぇだろ?できたんだかどーだか知らないけど
0490デフォルトの名無しさん
2011/04/12(火) 02:57:14.320491デフォルトの名無しさん
2011/04/12(火) 07:02:00.54俺はどっちでもいいなw
>>477の死亡確認なんてw
0492472
2011/04/12(火) 10:07:08.02あっちは過疎ってるので、SlimDX固有の話くらいしかできません。
質問するまえにSlimDX中の該当箇所のC++ソースコードに目を通して、
SlimDX側には問題なかろうという判断はしています。
この問題はDirectX9/ハードウェアの組み合わせによって発生する問題と考えています。
最初の質問から追加する件として、
・ATI Mobility Radeon HD 3470
でも発生を確認しました。
ただしこちらはドライバのバージョンが2008年と古いため、
ドライバの更新をお願いしようとしているところです。
なお、
・Intel GME 950
・ATI RADEON 4850
・GeForce 9600 GT
およびそれ以降では同様の不具合は確認されていません。
0493デフォルトの名無しさん
2011/04/12(火) 10:10:46.290494デフォルトの名無しさん
2011/04/12(火) 12:34:14.280495デフォルトの名無しさん
2011/04/12(火) 21:03:00.000496デフォルトの名無しさん
2011/04/12(火) 21:09:14.800497デフォルトの名無しさん
2011/04/12(火) 21:16:13.89サンクス
Frapsでした
0498デフォルトの名無しさん
2011/04/13(水) 00:30:22.440499デフォルトの名無しさん
2011/04/13(水) 00:32:10.960500デフォルトの名無しさん
2011/04/13(水) 00:36:39.740501デフォルトの名無しさん
2011/04/13(水) 00:39:01.80そんなことね?
0502デフォルトの名無しさん
2011/04/13(水) 00:40:12.990503デフォルトの名無しさん
2011/04/13(水) 00:44:07.930504デフォルトの名無しさん
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;
0505デフォルトの名無しさん
2011/04/13(水) 00:45:55.770506デフォルトの名無しさん
2011/04/13(水) 00:46:13.73自分でシェーダ組んでるなら書いたとおりじゃね?
固定シェーダならライト側のスペキュラーは使われてるかどうか調べる必要あんじゃね?
0507デフォルトの名無しさん
2011/04/13(水) 00:48:10.17OpenGLのライトにはspecularカラーの設定あるよ。その時設定されているmaterialの
specularカラーに上乗せされる = 光沢がある時、それが見える
0508デフォルトの名無しさん
2011/04/13(水) 00:50:09.710509デフォルトの名無しさん
2011/04/13(水) 00:51:24.74ビューポートがウィンドウからはみ出した場合、
環境によって補正されて歪んだり、何も表示されなかったりしたことがある
エラーが出た覚えはないけど、そのあたりはどうかな
というかエラーってどんなエラーよ
0510デフォルトの名無しさん
2011/04/13(水) 00:52:03.42マテリアルに設定したスペキュラの色とライトに設定したスペキュラの色を合成する感じでおk?
そして、スペキュラはハイライトの部分だけに反映される設定か
0511デフォルトの名無しさん
2011/04/13(水) 00:52:37.03DirectXはライトのスペキュラが使われて、マテリアルのスペキュラは指定しないと使われない感じ?
なんでライトのスペキュラなんだろな?
ライトのスペキュラなんてなくしてライトの色とマテリアルのスペキュラ自動で使うようにしたったら誰も疑問持たない気がすんだけどな
0512デフォルトの名無しさん
2011/04/13(水) 00:56:43.190513デフォルトの名無しさん
2011/04/13(水) 01:06:47.430514472
2011/04/13(水) 01:23:35.94475でも書いたんですが、
D3DERR_INVALIDCALL エラーが発生しています。
RADEON9800やGeForce7600GS当たりでも普通に動くコードなのに、
なんで今頃エラーが発生するようになったのか検討がつかないんですよね。
参ったな……。
0515デフォルトの名無しさん
2011/04/13(水) 01:44:04.54+ ____ +
+ /⌒ ⌒\ +
ニダ━━━/ \ / \━━━━!!!!
+ /:::::: ________ ::::::\ +
< \ トェェェイ / >
+ \ `'´ / +
_|\∧∧∧∧MMMMM∧∧∧∧/|_
> <
_/_ / ノ /_ ──┐ヽ| |ヽ ム ヒ | |
_/_ / --+-- / ̄ / / | ̄| ̄ 月 ヒ | |
/ /__| ノ _ノ \ / | ノ \ ノ L_い o o
0516デフォルトの名無しさん
2011/04/13(水) 07:18:14.25どこにそんなこと書いてあるんだ?
出来ないやつの思考ってやっぱりわからない
0517デフォルトの名無しさん
2011/04/13(水) 10:11:00.490518デフォルトの名無しさん
2011/04/13(水) 12:39:15.840519デフォルトの名無しさん
2011/04/13(水) 13:06:15.55透過色を含むものは後ろから順番に描画しなければいけなかったはず。
http://marupeke296.com/DXG_No17_ZBufferAndAplhaBlending.html
0520デフォルトの名無しさん
2011/04/13(水) 13:48:21.630522デフォルトの名無しさん
2011/04/13(水) 17:06:00.85奥行きがあんまりないのっぺりしたパーティクルだったら複数の板ポリを
順番気にせず描けばいい。
気になるようだったらパーティクル内でもソートする、みたいな感じ。
0523デフォルトの名無しさん
2011/04/13(水) 21:36:25.66DXデバッグランタイムのログは?
SlimDXでもDebugViewってツールで見れるから
確認してみろクソハゲ
0524デフォルトの名無しさん
2011/04/13(水) 22:28:01.260525デフォルトの名無しさん
2011/04/16(土) 15:13:40.590526デフォルトの名無しさん
2011/04/16(土) 16:50:11.950527デフォルトの名無しさん
2011/04/16(土) 16:53:05.360528デフォルトの名無しさん
2011/04/17(日) 23:35:55.20D3DXCreateTextureFromFileInMemoryだと正常に動作するものが、前者だとメモリリークするのだが・・・
俺がどっかでアクセス違反してる可能性もあるが、なにか知っている人いたら情報ください。
使ってるけど普通に動くよって人がいたら、俺のミスです。
DirectX 9.0c SDK (December 2006)を使ってます。
0529デフォルトの名無しさん
2011/04/17(日) 23:55:24.77下記のサイトを参考にしています。
http://mitsunagistudio.aki.gs/tips/d2d-d3d11-sharing
ここのサンプルではD2D側で描画したテクスチャを
D3D側にCopyResourceでスクリーンに丸ごとコピーしているのですが、
ドラクエのメニューウィンドウのように
D3D上の一テクスチャとして利用するのはどうしたらいいのでしょうか?
他サイトやMSDNのヘルプをいろいろ見てみましたが
具体的な実装方法が見当たりませんでした。
0530デフォルトの名無しさん
2011/04/18(月) 00:28:37.550531デフォルトの名無しさん
2011/04/18(月) 01:08:55.260532デフォルトの名無しさん
2011/04/18(月) 01:54:16.070533デフォルトの名無しさん
2011/04/18(月) 03:38:56.79賛同。
0534デフォルトの名無しさん
2011/04/18(月) 06:20:33.920535デフォルトの名無しさん
2011/04/18(月) 07:30:39.97D3D9世代なら、DeferredShadingを使う。
0536デフォルトの名無しさん
2011/04/18(月) 10:04:17.719割9分自分のバグだとおもわれ
DXのメモリリークはDirectxControlPanelのところのデバッグ設定を使えば
簡単に分かる場合があるからやったことなければ試してみるべし
AllocIDを調べてみてブレークさせてみればおk
あとはpoolとか間違ってないかとかチェックしてみては
0537デフォルトの名無しさん
2011/04/18(月) 16:17:03.19nVidiaやIntelのGAだと問題が無いのですが、
GeForce系だと横に縮み、左右が黒くなります。
このときのウインドウのサイズは問題ないのですが、
描画される部分だけ横に縮みます。
何か回避策はあるのでしょうか。
0538デフォルトの名無しさん
2011/04/18(月) 16:22:37.39自分で書いた物でも、世間のソフトでも。
それ、ハード周りが原因じゃなくて、何か忘れてるかバグがあるなじゃないの?
0539デフォルトの名無しさん
2011/04/18(月) 17:43:20.64当たってるかどうかは分からんが、
NVIDIA系でだけ挙動がおかしい例として、
Zバッファの取り扱いがあるな。
Zバッファの解像度よりもフレームバッファの解像度のほうが大きくなると、
NVIDIAでだけ挙動がおかしくなる。
フルスクリーンからウィンドウモードにしたら、
普通はフレームバッファのサイズも変わるでしょ。
0540デフォルトの名無しさん
2011/04/18(月) 18:02:11.880542537
2011/04/19(火) 16:56:55.38ありがとうございます。
GeForceはデバッグ中に何回かDirectX系のバグを出すと、
挙動がおかしくなるみたいです。
バグへの耐性が低いみたいです。
0543デフォルトの名無しさん
2011/04/19(火) 23:44:00.970544537
2011/04/20(水) 02:48:24.650545デフォルトの名無しさん
2011/04/20(水) 03:17:17.31最高にバカすぎて涙が出るな
0547537
2011/04/20(水) 03:34:07.02asm,C/C++,C#,JAVAを使えますので、そんなイージーミスは起こしません。
0548537
2011/04/20(水) 03:53:17.650549デフォルトの名無しさん
2011/04/20(水) 04:22:34.06ドライバ作ったことがあろうが多数の言語が使えようが人が書いてる限りバグは出る。
どんだけ自信過剰なんだよおまえ。
OS作った?コンパイラ作った?だからなんだよ、だったらお前はいつも一切バグがでねーのか?w
バグらせたらおかしくなるのはメモリやらVRAMやらにゴミがのこっておかしくなってんじゃないのか。
バグチェックしてるときに表示がおかしくなってOS再起動したらコード変更一切せずに(表示は)元にもどったなんてこともあるし。
0550デフォルトの名無しさん
2011/04/20(水) 05:34:51.88ママ明日朝起こしてうるさいねえ。
0551デフォルトの名無しさん
2011/04/20(水) 08:01:34.540552デフォルトの名無しさん
2011/04/20(水) 09:40:32.08むしろそこまでの人が初心者スレなんて場違い
nVidiaにでも問い合わせたらいいんじゃ
0553デフォルトの名無しさん
2011/04/20(水) 10:26:03.09ただしアホじゃない限り、その課程で他人に聞く前に自分のミスを発見するけどね。
0554デフォルトの名無しさん
2011/04/20(水) 10:27:45.390555デフォルトの名無しさん
2011/04/20(水) 10:29:46.340556デフォルトの名無しさん
2011/04/20(水) 11:02:16.530557デフォルトの名無しさん
2011/04/20(水) 11:26:41.110558デフォルトの名無しさん
2011/04/20(水) 13:28:32.18しょぼいDOSぐらいなら割とすぐに作れたな。
0559デフォルトの名無しさん
2011/04/20(水) 15:22:19.53むしろ不具合をいかに退治するかのノウハウが経験だろ?
0560デフォルトの名無しさん
2011/04/20(水) 16:07:35.82本当はバグがないプログラムを作る事に時間をかけるべきなのに
そういう目に見えない努力は評価してもらえないもんね。
0561デフォルトの名無しさん
2011/04/20(水) 18:15:52.21メルトダウンした後の対策が全くされていない今の状態が最高だと。
0562537
2011/04/20(水) 18:25:07.03以下は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
0563デフォルトの名無しさん
2011/04/20(水) 18:28:59.990564537
2011/04/20(水) 18:48:55.50#unstr local0
goto local0
local1:
#elseif (localt==13) ; switch
#popnum localcase
#substrsp 1
#define local0 "case_{localn}_{localcase}"
#unstr local0
local0:
local1:
0565デフォルトの名無しさん
2011/04/20(水) 18:50:23.990566537
2011/04/20(水) 18:54:38.14#popnum localcase
#define local0 "if_{localn}_{localcase}"
#unstr local0
local0:
local1:
#else
#error end文の対応が異常です
#endif
#endm
0567デフォルトの名無しさん
2011/04/20(水) 18:58:41.860568537
2011/04/20(水) 19:00:06.49#define local0 "b_{localn}"
#unstr local0
goto local0
local1:
#elseif (localt==11) ; do
#elseif (localt==14) ; if
#popnum localcase
#define local0 "if_{localn}_{localcase}"
#unstr local0
local0:
local1:
#else
#error end文の対応が異常です
#endif
#endm
0569デフォルトの名無しさん
2011/04/20(水) 19:01:10.020570537
2011/04/20(水) 19:04:46.04後はGDIで3Dのミドルウエアも作ったこともあるから、そっちのソースも一部見せようか?
0571デフォルトの名無しさん
2011/04/20(水) 19:06:57.76ありふれてるので結構です
0572デフォルトの名無しさん
2011/04/20(水) 19:47:00.75お前のソース自慢はどうでもいいからとっとと消えてくんねーかなぁ、スレチだから。
0573デフォルトの名無しさん
2011/04/20(水) 20:30:23.56が言語訓練のために書き込んだものです。
このスレッドに多大なご迷惑をおかけしたことを
お詫び申し上げます。
霊長類研究所
0574デフォルトの名無しさん
2011/04/20(水) 20:45:52.220575デフォルトの名無しさん
2011/04/20(水) 23:44:24.590576デフォルトの名無しさん
2011/04/20(水) 23:52:26.72突然この板のIDが表示されたら面白いのに
0577デフォルトの名無しさん
2011/04/20(水) 23:54:04.240578デフォルトの名無しさん
2011/04/21(木) 00:40:31.740579デフォルトの名無しさん
2011/04/21(木) 00:44:51.97でも普通の3Dゲーの場合無理にまとめちゃうと
送らなくていいデータも全部シェーダ側に投げちゃうことになったり・・・
まあ、ケースバイケースで
0580デフォルトの名無しさん
2011/04/21(木) 00:49:24.12ありがとうございます
0581デフォルトの名無しさん
2011/04/21(木) 01:26:56.510582デフォルトの名無しさん
2011/04/21(木) 01:32:52.61そしたら回避のしようがないなー
0583デフォルトの名無しさん
2011/04/21(木) 01:59:56.560584デフォルトの名無しさん
2011/04/21(木) 02:09:04.39{(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
じゃね?
0585デフォルトの名無しさん
2011/04/21(木) 08:18:45.07ありがとうございます!
x,y,zは後から与えられる座標値ですよね。
法線でfloat3つ使って、残り1つでどうやってx1,y1,z1を表すのでしょうか?
0586デフォルトの名無しさん
2011/04/21(木) 08:41:02.280587デフォルトの名無しさん
2011/04/21(木) 10:09:02.05天才チンパンジーアイちゃんを生で見たのは初めてだわ
0588デフォルトの名無しさん
2011/04/21(木) 10:12:01.97法線と平面を成す点(三頂点の中から任意)があれば平面の方程式は求まる、おしまい
スレチだからなんか教科書でも見れ
0590583
2011/04/21(木) 20:14:31.65D3DXPLANE構造体は法線だけで、平面の位置は構造体とは別で保持してるってことで合ってますか?
まだw(d)の使われ方が分かってないのでもうちょっと調べてみます。
スレチすません、ありがとうございました><
0591デフォルトの名無しさん
2011/04/21(木) 20:36:52.210592デフォルトの名無しさん
2011/04/21(木) 22:49:53.31いや、dがあるから平面の向きだけでなく位置も決まってくるはず。
0593デフォルトの名無しさん
2011/04/21(木) 22:52:22.72Zバッファをテクスチャとして使用してデプス値を取り出す
(シャドウマップではなく、遅延シェーディング等で使う)方法は
ないんでしょうか?
Radeonだと、DF24/DF16で取れるようですが、
Nvidiaではカラーバッファの方に出力するしかないでしょうか…
0594デフォルトの名無しさん
2011/04/21(木) 22:55:06.03Zバッファだってフレームバッファの一種なんだから、
ロックしたらメインメモリにコピー出来るんじゃないの?
試してないのでごめんだけど。
0595593
2011/04/21(木) 23:09:19.80レスありがとうございます。
一応、速度が重要なアプリケーションでの使用を考えていますので、
ロックしてメインメモリにコピーするのは避けたいところです。
今ちょっと試してみたら、APIがDirectX9でNvidiaのカードでも、
カード自体がDirectX10に対応していれば、INTZフォーマットは
作れるみたいですね。
このフォーマットもデプスが取れるので、これが作成できれば
いけそうなんですが、今試した環境がVistaなので、XP環境だと同じカードでもINTZに
対応しないのかもしれませんが…
0596デフォルトの名無しさん
2011/04/21(木) 23:17:27.71ハード側の対応に依存するような話なら、
dxinfoのサイトで調べるといいよ。
主だったハードウェアの診断結果は大抵載ってるから。
0598デフォルトの名無しさん
2011/04/22(金) 21:37:56.291秒で1000回レンダリングしたら1000ですよね
0.5秒で500回レンダリングしても1000ですよね
0599デフォルトの名無しさん
2011/04/22(金) 21:38:30.470600デフォルトの名無しさん
2011/04/22(金) 21:46:29.500601デフォルトの名無しさん
2011/04/22(金) 21:53:35.13経過時間(秒)までのレンダリング回数/経過時間(秒)
でした
0602デフォルトの名無しさん
2011/04/22(金) 21:59:44.040603デフォルトの名無しさん
2011/04/23(土) 05:26:31.82キャラクタを暗くするのは
頂点のRGBAの調整でできるのですが
白く光らせるにはどうしたらいいでしょうか?
0604デフォルトの名無しさん
2011/04/23(土) 05:27:27.48ttp://www7.plala.or.jp/kfb/program/framerate.html
0605デフォルトの名無しさん
2011/04/23(土) 07:23:59.39DirectXにスプライトなど無い
0606デフォルトの名無しさん
2011/04/23(土) 09:21:09.680607デフォルトの名無しさん
2011/04/23(土) 11:17:41.08ID3DXSpriteでは不可
加算合成でポリゴンを描画する→光ったように見える
0608デフォルトの名無しさん
2011/04/23(土) 13:45:31.480609デフォルトの名無しさん
2011/04/23(土) 13:54:21.900611デフォルトの名無しさん
2011/04/23(土) 14:35:16.51ポリゴンでスプライトっぽく描画する方法のことです
加算だと白っぽくなるだけで
背景黒いと白にならないです
パレットやシェーダー使わないで
なんとかならんですかね
ライトでごまかすしかないんかな
0612デフォルトの名無しさん
2011/04/23(土) 14:43:35.29平面もしくは方向の構築に必要な情報
スムーシングをかけるのならその情報と周囲の角度
>>611
加算合成
0613デフォルトの名無しさん
2011/04/23(土) 14:47:12.48src,dst両方暗いと255行かないじゃないすか
0614デフォルトの名無しさん
2011/04/23(土) 15:04:05.88D3DXMatrixRotationYawPitchRollを使って回転を行っているのですが、
YawとPitchはラジアン角を入れ思ったように縦横グルグル回ってくれるのですが、
Rollが思ったように(=Rollが回るとYaw、Pitchも傾く)なってくれません。
(いわゆる戦闘機ゲーの左右操作のローリングするような挙動を作りたいのです;)
値を入れてもそうならないという事はそれが仕様で私が何か勘違いしてると思うのですが・・
どなたかご助言頂けませんでしょうか・・orz
0615デフォルトの名無しさん
2011/04/23(土) 15:05:23.12複数重ねたり、加算用のイメージを作ればいいだけの話。
0616デフォルトの名無しさん
2011/04/23(土) 15:07:16.92ドキュメントを読め
順番が書いてあるだろう
0617614
2011/04/23(土) 15:07:25.01Rollによる傾きは別途計算しないと駄目ですね・・;
多分自己解決できると思います、お騒がせしました;
0618デフォルトの名無しさん
2011/04/23(土) 16:34:10.11何で面倒な方法を使おうとするのかさっぱり分からん。
0619デフォルトの名無しさん
2011/04/23(土) 16:43:02.26ドラゴンボールのキントン雲やりたいなら
1つの行列だけでやるのはかなり困難だと思う
XZ平面の姿勢行列を制御する行列Aとバンクを制御する行列Bを2つ作って
描画時(描画時じゃなくてもいいけど)に合成して1つにして使えばいいと思う
Aの行列の上にBの行列が乗る形で合成したらうまくいくんじゃないだろーか?
0620デフォルトの名無しさん
2011/04/23(土) 17:00:04.64ヨー・ピッチ・ロールとか、X軸・Y軸・Z軸だけでやろうとすると
ジンバルロック(←要ぐぐり)が起こる。
任意軸の回転を使えば解決。
>>618
初心者はそこが分からないから質問に来ているんだよ。
0621デフォルトの名無しさん
2011/04/23(土) 17:01:27.290622デフォルトの名無しさん
2011/04/23(土) 17:42:12.02それくらい誰でもわかるわ
でもそれじゃ処理重くなったりリソース増えるわ
0623デフォルトの名無しさん
2011/04/23(土) 18:10:40.16普通に自前で頂点を指定しているのなら、テクスチャのαだけ使って、
頂点カラーなりで調整すればいいだけの話なんだから。
0624デフォルトの名無しさん
2011/04/23(土) 18:19:29.53詳しく教えてください
・頂点カラー255x4にしても、テクスチャの色が普通に出るだけで
・加算や乗算合成にしても、下地との合計が255未満なら白くならないし
・色のみ指定でテクスチャ参照しないとアルファの部分が抜かれず
・テクスチャのαだけ使うのは白色マスクで出来るかもしれないけど
白とテクスチャ色の中間の色ができない
ぬう
0625デフォルトの名無しさん
2011/04/23(土) 18:20:40.70まさか1枚描画するたびにID3DXSprite::Begin,End呼んでるんじゃないよな?
0626デフォルトの名無しさん
2011/04/23(土) 18:32:55.14つーか加算言っても、加算する色が0だったら何枚重ねても黒いまま
そんなんだったらマルチテクスチャとか使うわ
パレットって便利やね
0627デフォルトの名無しさん
2011/04/23(土) 18:37:12.62まずはドキュメントを読んで、どのステートがソースの色を決定するかと、ブレンディングモードを確認しろ。
単純にソースの色をどこから持ってくるのか、持ってきた色をどう計算するのか設定するだけなんだから。
それだけ分かればホワイトアウトなんて簡単に出来る。
0628デフォルトの名無しさん
2011/04/23(土) 18:41:04.800629デフォルトの名無しさん
2011/04/23(土) 18:49:21.270630デフォルトの名無しさん
2011/04/23(土) 18:54:40.690631デフォルトの名無しさん
2011/04/23(土) 21:03:11.98マスクありホワイトできねー
0632デフォルトの名無しさん
2011/04/24(日) 05:21:20.290633デフォルトの名無しさん
2011/04/24(日) 06:34:02.21適当にオブジェクト作って動かした方が早い
0634デフォルトの名無しさん
2011/04/24(日) 06:35:51.56ググれば10秒もかからない事を何言ってるの?
http://msdn.microsoft.com/ja-jp/library/aa515833.aspx
0635デフォルトの名無しさん
2011/04/24(日) 12:28:15.640636デフォルトの名無しさん
2011/04/24(日) 12:33:41.50楕円の公式ってあったじゃん?
0637デフォルトの名無しさん
2011/04/24(日) 12:35:46.11ほんっっっっっとにくだらないことを質問するアフォがいるな
脳みそ性能悪いなら何も作れないだろ
死んでろバーカ
0638デフォルトの名無しさん
2011/04/24(日) 12:48:05.700639デフォルトの名無しさん
2011/04/24(日) 12:49:08.280640デフォルトの名無しさん
2011/04/24(日) 14:28:25.83(丶/ ヘ
|| (゚Д゚) |/) <他己解決しました
\>◎(○)◎/8/
(\_ノ/⌒/⌒/⌒oイ_ノ|
`\_丿o|8|8|し|ノ
(_ノ\_)_)_ノ
0641デフォルトの名無しさん
2011/04/24(日) 14:37:27.450642デフォルトの名無しさん
2011/04/25(月) 17:10:48.67というのも、描かせるモデルがフレーム毎に変化させようと思ってるんですが、
頂点数が100の時もあれば、200の時もあるので、それを実現させようとしたら
作成&開放しかないのかなと思ったのです。
0643デフォルトの名無しさん
2011/04/25(月) 17:13:31.490644642
2011/04/25(月) 17:28:26.24やっぱり、予め多めにとって、それを上回らないくらいで使い回すのが主流なんですか。
一応、メモリを節約しようと思って作成と開放を考えてみたのですが、何か負担があるかなと思ったので。
0645デフォルトの名無しさん
2011/04/25(月) 17:39:59.39結局メモリの動的割り当てってことだから
毎フレnewしてるようなもん
0646デフォルトの名無しさん
2011/04/25(月) 17:40:12.80どちらかというと特殊ケース。
モデルが変化するってことはCPU→GPU間の頂点情報の
転送が起こるので、かなり遅くなる。
DrawPrimitiveUpみたいに。
GPUは、GPU側のメモリにある頂点バッファをいっきに描画するときに
パフォーマンスが出る設計になってる。
昔実験したら、30倍くらいの速度差があった。
頂点シェーダで間に合う処理ならば、GPU側でモデルデータを
変更できるのでかなり速くなるはず。
0647デフォルトの名無しさん
2011/04/26(火) 00:40:48.91これと同じようにバッファ使ったほうがいい?
DrawPrimiticeUpでやってるけど
0648デフォルトの名無しさん
2011/04/26(火) 00:43:39.090649デフォルトの名無しさん
2011/04/26(火) 00:51:04.62RotationYawPitchRollをいじればいいと思ったのですが画像がくずれちゃって
0650デフォルトの名無しさん
2011/04/26(火) 01:17:00.750651デフォルトの名無しさん
2011/04/26(火) 01:44:00.01>>648
ポリラインのやり方等によっては台形になったりして形状そのものが
変化するパターンもある。
そんなに頂点数多くなければDrawPrimitiveUpでいいと思う。
あくまで大量に頂点情報を転送する場合がネックなのであって、
GPU内部のレンダリング的には同じだから。
ただ、出来るだけ全部のビームの頂点を一箇所にまとめて
一度のDrawPrimitiveUpで描くこと。
0652デフォルトの名無しさん
2011/04/26(火) 01:47:43.99>変化するパターンもある。
それ変化するパターンもある、んじゃなくて考えて計算してないだけ
0653デフォルトの名無しさん
2011/04/26(火) 01:57:36.06やっぱり手軽な方法は真っ白な画像のアルファ値を上げてく方法でいいですか
0654デフォルトの名無しさん
2011/04/26(火) 02:17:19.24まあ楽なんだけどね
0655デフォルトの名無しさん
2011/04/26(火) 07:50:25.93できました
ありがとうございます
0656デフォルトの名無しさん
2011/04/26(火) 13:01:39.14http://marupeke296.com/DXG_CreateBorad.html
ここで、DirectXのデフォルトだと反時計回りのポリゴンは描写して
その裏つまり時計回りの方を描写しないとなっていますが
他のサイトだと、デフォルトは時計回りで描写となっています
調べてみると、時計回りを表として描写するのがデフォルトのようですが
マルペケのサンプルプログラムだと、反時計回りで頂点を指定しているにも
関わらずちゃんとポリゴンが描写されています
これはどういうことなんでしょうか?
0657デフォルトの名無しさん
2011/04/26(火) 13:11:13.060658デフォルトの名無しさん
2011/04/26(火) 13:31:56.63すいません、カメラとはどの部分ですか?
他のサイトのサンプルと見比べても、頂点の指定順が
時計回りか反時計回りかの差しかないように思います
でも、反時計回りでも表示されているのはおかしくて・・・
どこか見落としてるんでしょうけれど、さっぱりわかりません
0659デフォルトの名無しさん
2011/04/26(火) 13:42:19.36→ じゃあ裏側から見たら逆周りじゃないのか
→ 3次元空間では、どこから何を見るが決定して初めて目の前にそれが現れるから、その前提次第
→ その前提の事を、カメラと言う
あと、"裏"側を表示しない=カリングの指定なども
この辺のイメージが掴めない場合、多分この先何も出来ないと思うので、三次元処理の基礎をもう一度
0660デフォルトの名無しさん
2011/04/26(火) 16:52:19.44つまるところレンダリングターゲット上で時計回りが描画される
ここがあやふやだったのでは?
y+が下なら上の時と比べると逆になる
0661デフォルトの名無しさん
2011/04/28(木) 11:53:29.36やりたいことはOpenCVで求めた変数をDirectX側に渡したいだけなのですが
OpenCVはコンソールアプリケーションでDirectXはWin32APiでないと起動できないので同時に動かせず困ってます。
ご教授よろしくお願いします。
0662デフォルトの名無しさん
2011/04/28(木) 12:19:06.700663デフォルトの名無しさん
2011/04/28(木) 13:03:14.070664デフォルトの名無しさん
2011/04/28(木) 13:18:56.39何が困っているのかさっぱり分からない。
0665デフォルトの名無しさん
2011/04/28(木) 13:33:01.381つにまとめたんですがエラーはでないんですがDirectX側のウィンドは作成されるのですが
OpenCV側のウィンドが作成されずプログラムが動いてないんです。
0666デフォルトの名無しさん
2011/04/28(木) 13:35:53.030667デフォルトの名無しさん
2011/04/28(木) 13:39:18.88未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartupみたいなエラーがでてきました
0668デフォルトの名無しさん
2011/04/28(木) 13:44:16.830669デフォルトの名無しさん
2011/04/28(木) 13:49:53.280670デフォルトの名無しさん
2011/04/28(木) 13:52:13.710671デフォルトの名無しさん
2011/04/28(木) 14:18:13.91それからWindowsプログラムを基礎からきちんとやれ
0672デフォルトの名無しさん
2011/04/28(木) 14:54:03.290673デフォルトの名無しさん
2011/04/28(木) 15:24:01.090674デフォルトの名無しさん
2011/04/28(木) 21:48:38.380675デフォルトの名無しさん
2011/04/28(木) 21:54:47.11APIで出せる
0676デフォルトの名無しさん
2011/04/28(木) 23:07:34.130677デフォルトの名無しさん
2011/04/29(金) 00:03:44.54入力はキーボードとジョイパッドと多くても合計2個しか使わないけど
0678デフォルトの名無しさん
2011/04/29(金) 00:32:36.80ジョイパッドのみDirectInput
それ以外はWinAPI推奨
0679デフォルトの名無しさん
2011/04/29(金) 01:45:14.810680デフォルトの名無しさん
2011/04/29(金) 08:11:11.410681デフォルトの名無しさん
2011/04/29(金) 08:41:06.46理由は?
0682デフォルトの名無しさん
2011/04/29(金) 09:10:03.98取れないけど、他は普通のAPIでいけるからでしょ
0683デフォルトの名無しさん
2011/04/29(金) 09:57:33.730684デフォルトの名無しさん
2011/04/29(金) 12:23:09.80あとxboxのコントローラー使うんなら代わりにXInput使ってくれみたいな
0685デフォルトの名無しさん
2011/04/29(金) 12:33:57.16それだけじゃなく、例えばキーボードの入力の張替えなんかでカスタマイズしても、
DirectInputだとそれをバイパスして元のキー入力しか受け付けなくなってしまうから。
0686デフォルトの名無しさん
2011/04/29(金) 12:35:12.57それだけでマウスやキーボードの入力が取れなくなる
0687デフォルトの名無しさん
2011/04/29(金) 14:58:03.700688デフォルトの名無しさん
2011/04/30(土) 03:19:15.21PCが起動しなくなりました・・・
起動後、ユーザにログインすると画面真っ黒になって、なんともなりません。
ctrl+alt+delでログオフはできるんですが、普通に操作できません。
シャットダウンもできません。
どこかで同じことに出会った人いますか。
0689デフォルトの名無しさん
2011/04/30(土) 03:42:38.010690デフォルトの名無しさん
2011/04/30(土) 03:51:27.12とりあえず、Windowsの復元だね。
開発者ならそれくらいは準備してるはず。
0691デフォルトの名無しさん
2011/04/30(土) 03:55:48.75新しいユーザーつくってみてそっちで通常起動するとかさ。
0692デフォルトの名無しさん
2011/04/30(土) 04:57:45.29Supported Operating Systems:
Windows Server 2003;
Windows Server 2003 Service Pack 1;
Windows Server 2003, Datacenter x64 Edition;
Windows Server 2003, Enterprise x64 Edition;
Windows Server 2003, Standard x64 Edition;
Windows Small Business Server 2003;
Windows XP;
Windows XP 64-bit;
Windows XP Home Edition;
Windows XP Home Edition N;
Windows XP Media Center Edition;
Windows XP Professional Edition;
Windows XP Professional N;
Windows XP Service Pack 1;
Windows XP Service Pack 2;
Windows XP Starter Edition;
Windows XP Tablet PC Edition
0693デフォルトの名無しさん
2011/04/30(土) 05:00:26.880694デフォルトの名無しさん
2011/04/30(土) 12:54:06.180695デフォルトの名無しさん
2011/04/30(土) 12:54:51.750696デフォルトの名無しさん
2011/04/30(土) 12:57:48.070697688
2011/04/30(土) 13:49:54.31復元は問題なくできるんだけども、開発ができない…
インストール後、再起動さえしなければ続行できるんですがw
> 691
セーフモードだと起動するけど、テストができない…
コンパイルまでならSDK展開するだけでできるんですが、
テストができないとなんとも…
どうもSDKで入るデバック系のdllがおかしい??
通常に起動する状態からSDKだけ入れてみても再現性100%で起動しません
> 692、696
サポートしていないこともわかりつつ、一方でSDKいれても関係ないだろうと
思ってましたがやはりだめぽなんですな。
既知の問題かなぁーと思って解決策がないかたずねてみたんですが…
あきらめてVirtualBoxでしょうか…
0698688
2011/04/30(土) 14:03:05.092005 Decインストール後、最新版のSDK 2010 juneをもう一度入れたら
起動もでき、テストもできますた。ありがとうございますた。
0699デフォルトの名無しさん
2011/04/30(土) 14:11:33.41Decインストール って何? 多分アンインストールの気がする。
0700デフォルトの名無しさん
2011/04/30(土) 14:12:46.610701デフォルトの名無しさん
2011/04/30(土) 16:23:17.63ワロタ。変なとこに噛み付こうとする前にお前にはやることがある。
0702デフォルトの名無しさん
2011/04/30(土) 16:58:58.83それ、juneが動いてるだけでdecのほうはまったく動いてないんじゃ?
0704デフォルトの名無しさん
2011/04/30(土) 22:22:00.14昔あったDirectDrawはもう無いらしく
最新版SDKでも覚えることは大して変わらない?
0705デフォルトの名無しさん
2011/04/30(土) 22:25:20.55DrawPrimitiveでスクリーン座標の描画方法を調べれば幸せになれる
仕様は大分変わってるように感じると思うけど
昔よりちょっぱやで半透明や加算半透明、回転、拡縮なんでもござれでいいよ
0706デフォルトの名無しさん
2011/04/30(土) 22:25:25.750707デフォルトの名無しさん
2011/04/30(土) 22:26:40.32普通にやるよかある程度ましなのがGDI+かな?
0708デフォルトの名無しさん
2011/04/30(土) 22:29:33.31あとGDI+ は機能が+なのであって、速度の話関係ないんじゃない?
0709デフォルトの名無しさん
2011/04/30(土) 22:30:14.203D扱うなら問題外だが
0710704
2011/04/30(土) 22:30:56.66AlphaBlendはバグってるって聞いたけど
DirectDrawのあの糞長ったらしい初期化処理みたいなのは今でも健在なの?
0711デフォルトの名無しさん
2011/04/30(土) 22:36:07.12知ったか乙
0712デフォルトの名無しさん
2011/04/30(土) 22:37:47.020713デフォルトの名無しさん
2011/04/30(土) 22:45:30.18ちょっとは自分で調べるとかしないの?w
0714デフォルトの名無しさん
2011/04/30(土) 23:19:50.82ただ、後発のGDI+でアルファブレンド使うと透過処理はCPU通すから
めちゃ遅だったね。
0715デフォルトの名無しさん
2011/04/30(土) 23:56:33.41>>707だけどGDI+で回転とかやると自分でやるよか超早くね?
アルファブレンドも結構使える速度が出てた気がするけどな
ハードの機能使ってると勝手に思い込んでたけどあんまり早くなかったんだな
0716デフォルトの名無しさん
2011/04/30(土) 23:56:40.420717デフォルトの名無しさん
2011/05/01(日) 00:00:48.96俺がアセンブラ書くよりは数倍早い気がした
0718デフォルトの名無しさん
2011/05/01(日) 00:05:56.48ただし対応してるカードorドライバが少ないって話を昔見た
0719デフォルトの名無しさん
2011/05/01(日) 00:09:12.59やれる事って、sinテーブル用意する事と、あとは間接アドレシングしてるような部分を
若干レジスタだけでやりくりするように書くだけじゃね。
0720デフォルトの名無しさん
2011/05/01(日) 00:15:56.94でも、GDIのBitBltでもハードウェアアクセラレーションかからなくて
激重だったPCもあったからなぁ。
0721デフォルトの名無しさん
2011/05/01(日) 01:04:18.19男は黙ってOpenGL
0722デフォルトの名無しさん
2011/05/01(日) 01:24:55.43俺も黙ってOpenGL好きだけど、頼むからスレタイのアルファベット読んでくれ
D から始まる所だ。頼む
0723デフォルトの名無しさん
2011/05/01(日) 03:17:14.490724デフォルトの名無しさん
2011/05/01(日) 09:10:02.02回転のアセンブラってsinテーブルなんて使わないだろ
0725デフォルトの名無しさん
2011/05/01(日) 13:15:31.780726デフォルトの名無しさん
2011/05/01(日) 21:02:28.69そんなの書くロジック次第だろ。バカなの?
0727デフォルトの名無しさん
2011/05/01(日) 22:54:16.910728デフォルトの名無しさん
2011/05/02(月) 07:29:47.57知ったか乙
0729デフォルトの名無しさん
2011/05/02(月) 07:39:53.640730デフォルトの名無しさん
2011/05/02(月) 12:52:06.530731デフォルトの名無しさん
2011/05/02(月) 13:24:23.83ブブーつかいませんー
0732デフォルトの名無しさん
2011/05/02(月) 13:30:53.28ブブー使わないとは限りません^^
0733デフォルトの名無しさん
2011/05/02(月) 15:49:39.960734デフォルトの名無しさん
2011/05/02(月) 17:17:28.07絶対つかいませんーw
よほど頭のおかしい人しか使いませんーw
0735デフォルトの名無しさん
2011/05/02(月) 17:21:03.23絶対使わないとは限りませんーww
他人は自分と同じコードを必ず書くとか思い込んでるキチガイしか、そんな事言いませんーw
0736デフォルトの名無しさん
2011/05/02(月) 17:24:04.26>>734 お前どこかのサイトで見た内容を丸暗記してて、それしか方法無いって思い込んでるんだろ
>>735 お前もバカにいつまでも粘着してんなよ
ス レ タ イ を 百 回 読 ん で ど っ か い け
0737デフォルトの名無しさん
2011/05/02(月) 17:24:17.990738デフォルトの名無しさん
2011/05/02(月) 18:03:37.32だったらどこに使うのか言ってみなさいよ低脳君w
0739デフォルトの名無しさん
2011/05/02(月) 19:34:55.540740デフォルトの名無しさん
2011/05/02(月) 19:42:18.19かあさんは黙っててくれないか
いま大事な話をしているんだよ(cv:えなり)
0741デフォルトの名無しさん
2011/05/02(月) 19:58:45.66むしろ絶対に使わないと言い切る根拠を書きなさいよ
他人がいないと何も出来ない知ったか君w
0742デフォルトの名無しさん
2011/05/02(月) 20:58:22.22atanテーブル作って8分割して使うより
atan2呼んだほうが早くてびびった
0743デフォルトの名無しさん
2011/05/02(月) 21:17:04.940744デフォルトの名無しさん
2011/05/02(月) 21:37:22.78マジレスすると
sin項の計算が1ドットの回転処理にたどり着く前に値が決定してるので
テーブルは必要ない
0745デフォルトの名無しさん
2011/05/02(月) 21:40:55.06各頂点座標に対しては行列の一次変換をかけるだけだから。
0746デフォルトの名無しさん
2011/05/02(月) 21:41:10.850747デフォルトの名無しさん
2011/05/02(月) 22:43:53.79>>719
の流れに対して、突然 >>724 が現れて >>726 の返事になり、
そこで 「そうだな、>>744-745 のような処理を想定してる前提なら、いらないな」 の一言が出ないまま、
「いりますー」 「いりませんー」 のガキみたいな応酬
結末は、どっちもちゃんと前提を出せよと。 そして ス レ タ イ を 200回読めよ と
0748デフォルトの名無しさん
2011/05/03(火) 00:38:03.47おちつけ
つ(cv:えなり)
これ、お前のだろ?
0749デフォルトの名無しさん
2011/05/03(火) 02:59:00.800750デフォルトの名無しさん
2011/05/03(火) 08:03:24.080751デフォルトの名無しさん
2011/05/03(火) 10:52:13.27その辺に転がっている、Xファイルを持って来て
サンプルプログラムを変えて表示させたいのだが?
ファイル名を変えて表示できる?
換えるのならどの辺かえれば良い?
お願いしますwww
0752デフォルトの名無しさん
2011/05/03(火) 10:54:56.750753デフォルトの名無しさん
2011/05/03(火) 11:02:09.450754デフォルトの名無しさん
2011/05/03(火) 11:14:26.750755デフォルトの名無しさん
2011/05/03(火) 18:08:18.83DirectXにXファイルなどない
0756デフォルトの名無しさん
2011/05/03(火) 19:06:02.73そういうのどうでもいいから
>>751
アニメーションついてるやつかそうでないかで変わる。
サンプルがアニメーション付き→アニメーション付きのやつをサンプルのファイルと置き換える
サンプルがアニメーションなし→ry
ただしアニメーション付きXファイルは置き換えだけだとモノによってはうまくいかないと思うよ。
わかってると思うけどアニメーションのサンプルにアニメーションないファイル投げてもうまくいかないし逆もしかり。
0757デフォルトの名無しさん
2011/05/03(火) 19:26:39.180758デフォルトの名無しさん
2011/05/03(火) 20:36:55.11なにこのイラッとくる中途半端な釣りみたいなレス
0759デフォルトの名無しさん
2011/05/03(火) 20:56:24.100760デフォルトの名無しさん
2011/05/03(火) 21:21:53.70ボタン情報がはいるのはわかるのですが
どの変数にどの部分の情報がはいっているのでしょうか?
リファレンスにもあまり載っていないので
0761デフォルトの名無しさん
2011/05/03(火) 21:31:29.59いちいち質問する意味が分からない。
0762デフォルトの名無しさん
2011/05/03(火) 21:54:29.54・・・というかコントローラの番号依存って良くないのに
0763デフォルトの名無しさん
2011/05/03(火) 21:55:28.470764デフォルトの名無しさん
2011/05/04(水) 03:52:02.05hr = DirectInput8Create( _hInst, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**) &this->g_pDInput, NULL );
と初期化したのだが、DIERR_OLDDIRECTINPUTVERSIONとエラーがでるんだが
なにか間違っているところある?
使っているバージョンが古いとか言われているんだがもっと新しいバージョンがあるのか?
0765デフォルトの名無しさん
2011/05/04(水) 03:53:41.26DIRECTINPUT_VERSION を 0x900で定義していた
0766デフォルトの名無しさん
2011/05/04(水) 22:58:33.13ユーザIDみたいなのを利用したいと思うんだよ
IDを振り分ける関数とかあります?
0767766
2011/05/04(水) 22:58:54.090768デフォルトの名無しさん
2011/05/05(木) 02:00:25.59ID?・・・
情報を取得するデバイスのインターフェイスを
プレイヤーとして扱うのじゃだめなの?
0769603
2011/05/05(木) 06:14:39.91お前ら具体的なコード書かないから苦労したわ
0770デフォルトの名無しさん
2011/05/05(木) 06:39:00.07おめでとう!
俺も知りたいので書いてほしい
0771デフォルトの名無しさん
2011/05/05(木) 08:36:53.010772デフォルトの名無しさん
2011/05/05(木) 11:36:55.70マルチパスでのシェーダーの管理ってどのようにしていますか・・・?
現在描画対象となる(DrawPrimitiveを実行している)cppの中で、
複数のエフェクトを読み込み、各々ハンドル取得して、レンダリングターゲットを生成し、
描画時には各シェーダーにパラメーター渡して・・・と、
パスが増えるごとにコードが肥大化してしまい、可読性も著しく落ちています。
レンダリング結果を次の入力として使っているため思い切ったcppの分割も出来ず、
効率の良いシェーダーの管理が思いつきません orz
何かしらヒントを頂けますでしょうか・・・?
よろしくお願いします。
0773デフォルトの名無しさん
2011/05/05(木) 13:20:31.69コードを上手く書くなんて、頭の良さに比例するだろw
0774デフォルトの名無しさん
2011/05/05(木) 13:58:30.19どれだけ経験積んだかだろ
0775デフォルトの名無しさん
2011/05/05(木) 14:37:09.68凄い人はさらにそれを上手くしていくんだろうけど
0776デフォルトの名無しさん
2011/05/05(木) 15:55:48.60を使わずにDirectX9相当の機能のみを使うのなら、Windows XPが動いていた
グラフィックカードでも使えますか? それとも、グラフィックカードが
DirectX11対応でないとダメですか?
何でこんなこと質問するかというと、DirectX9+VC++2008でコンパイル済み
のアプリケーションがWindows 7上で動いたためです。
0777デフォルトの名無しさん
2011/05/05(木) 15:59:19.49DirectX11を使うかDirectX9を使うかで決まる。
0778デフォルトの名無しさん
2011/05/05(木) 16:06:49.13がDirectX11対応でないとダウトでしょうか?
0779デフォルトの名無しさん
2011/05/05(木) 16:20:26.910780デフォルトの名無しさん
2011/05/05(木) 16:27:51.260781デフォルトの名無しさん
2011/05/05(木) 19:48:59.51頂点が1.0の位置と元の位置の2か所に存在してしまいます。
元の位置の頂点は消して1.0の位置にだけ頂点を移動したいのですがどうすればよいのでしょうか?
//頂点の参照処理部分
{
LPDIRECT3DVERTEXBUFFER9 pVB=NULL;
pMesh->GetVertexBuffer(&pVB);
DWORD dwStride=pMesh->GetNumBytesPerVertex();
BYTE *pVertices=NULL;
D3DXVECTOR3* pvVertex=NULL;
if(SUCCEEDED(pVB->Lock(0,0,(VOID**)&pVertices,0)))
{
pVertices+=g_dwIndex*dwStride;
pvVertex=(D3DXVECTOR3*)pVertices;
g_dwIndex = 50;
pvVertex->x = 1.0
pVB->Unlock();
}
SAFE_RELEASE( pVB );
TCHAR sz[100];
sprintf(sz,"%d番目の頂点の座標は%3.1f %3.1f %3.1fです",g_dwIndex,pvVertex->x,pvVertex->y,pvVertex->z);
RenderString(sz,10,10);
}
pDevice->EndScene();
0782デフォルトの名無しさん
2011/05/05(木) 19:53:27.640783デフォルトの名無しさん
2011/05/05(木) 20:19:02.79>g_dwIndex = 50;
の位置が悪いんじゃね?
ってC言語も怪しい状態な予感
0784デフォルトの名無しさん
2011/05/05(木) 20:50:25.06頂点バッファをLockして得られたポインタをD3DXVECTOR3への
ポインタと見なして大丈夫だっけ??
あと、 pvVertex->x だけだと、50番目じゃなくて先頭になっちゃう。
pvVertex[g_dwIndex].x とかになるんじゃないかな?
0785デフォルトの名無しさん
2011/05/05(木) 20:54:12.450786デフォルトの名無しさん
2011/05/05(木) 20:55:24.670787デフォルトの名無しさん
2011/05/05(木) 21:27:31.360788デフォルトの名無しさん
2011/05/05(木) 21:36:16.17ご教授お願いします
ttp://www.rupan.net/uploader/info/1304598908
0789デフォルトの名無しさん
2011/05/05(木) 21:51:00.18自分でやる気がないなら失せろ
0790デフォルトの名無しさん
2011/05/05(木) 22:33:41.90>>783
>>784
>>785
0791デフォルトの名無しさん
2011/05/06(金) 00:14:18.64壁にぶつかりまくりで効率悪いし
やる気なくすよ
0792デフォルトの名無しさん
2011/05/06(金) 06:54:34.28XAudio2を使おうとするとMp3フォーマットを定義している
MMReg.hにて
adpcmcoef_tagとadpcmwaveformat_tagが再定義されるのですが
これを回避する方法はないでしょうか?
仕様上両方のヘッダーを両方取り込まないといけないのですが
0793デフォルトの名無しさん
2011/05/06(金) 07:42:29.43namespaceでは解決できないの?
0794デフォルトの名無しさん
2011/05/06(金) 08:24:02.96同じもののはずなので、新しいものを使う。
違う構造になってたらまた改めて考える。
0795デフォルトの名無しさん
2011/05/06(金) 13:34:25.520796デフォルトの名無しさん
2011/05/06(金) 23:00:06.93boolなの?
0797デフォルトの名無しさん
2011/05/07(土) 21:18:07.00・& 演算子は実質 == 演算子と同じ意味でしょうか?
・また0x80の値に意味がありますか?
(0x70だと単に現在ボタンが押されているではなく
押し続けた・離していた状態から押した瞬間など
状態の違いに分かれているとか)
GetDeviceState(256, buffer);
if ( buffer[ button ] & 0x80 )
{
//buttonが押された
}
0798デフォルトの名無しさん
2011/05/07(土) 21:52:03.420799デフォルトの名無しさん
2011/05/07(土) 21:54:37.65>・& 演算子は実質 == 演算子と同じ意味でしょうか?
全然まったく本当に違うので、>>798 と同意見
DirectX以前の問題ですよ本当に
0800デフォルトの名無しさん
2011/05/07(土) 22:17:10.51==は完全に同じかどうかを確認する演算子。
0801デフォルトの名無しさん
2011/05/08(日) 01:21:57.75なんでこんな判定の仕方になってるんだろ
0802デフォルトの名無しさん
2011/05/08(日) 01:26:53.50条件式は0であるか無いか、だ。 その理由は、この高級アセンブラについての初心者向けスレにでも行ってくれ
0803デフォルトの名無しさん
2011/05/08(日) 01:31:04.23>>798
マジで御願いします。本当にスレチです
0804デフォルトの名無しさん
2011/05/08(日) 01:32:22.85プログラムなれていると>0とか省くのがあるからなぁ
if(変数単体)とかそういう使い方もあるし
確かにその通り動くんだろうが、ぶっちゃけそういう書き方していない
とわかりにくいよな
0805804
2011/05/08(日) 01:38:13.65>>797
つまり 0x80 っていうのは二進数でいうと 1000 0000って訳よ
でそれと入力の結果(Hogeとする)を&演算しているって事は
Hogeの一番上のビットが1か0かって判断をしているわけだ
0x70っていうのは1110000だからその部分を判別してるってことだろ
まぁそれがどうなるかっていうのはしらねぇよ
リファレンスでもなんでも確かめろよ
そもそも演算子すらもまともに使えない奴がDirectXをやったところで
まともに動作すると思えない。
以下>>798と同意見
0806デフォルトの名無しさん
2011/05/08(日) 01:48:56.68元の質問者向けに補足だけしておくと、判別してるって言うか、演算な。計算。
そのビットだけ残す計算。 8bitの範囲で言うなら、128で割ってるのと同じ(=x&0x80)
そしてここは DirectX ライブラリの初心者スレであって、それ以前の初心者スレではないって言う
0807デフォルトの名無しさん
2011/05/08(日) 01:54:54.19誰か教えてくれ!
>そうだね先人のソースをいくつ見たかに比例しそう
どこで見ている?
参考になる所って有りますかね?
0808デフォルトの名無しさん
2011/05/08(日) 02:01:14.06SorceForgeのオープンソースでも
GoogleのCodeSerchででもいくらでも出てくるだろ
いくつか読んでみて自分や今作っているゲームの
フレームワークとかと相性がよさそうなの探し出せカス
こうだっていってお前は納得するのかと、小一時間吉野家で問い詰めるぞ
そういう部分で労を惜むな
0809デフォルトの名無しさん
2011/05/08(日) 02:02:19.70世の中のオープンソースプロジェクト
sourceforge
googlecode
いくらでもあるんじゃね。良い悪いは別にして
0810デフォルトの名無しさん
2011/05/08(日) 07:56:44.83ひでぇヤツらが多いよな
まぁ回答者さんは善意で答えているから気にしている人は居ないと思うけど
0811デフォルトの名無しさん
2011/05/08(日) 09:22:34.840812デフォルトの名無しさん
2011/05/08(日) 11:15:40.46「作りたい」というか「作ったという優越感に浸りたい」じゃないかな。
3Dエンジン作ったんだぜっていいつつサンプルとか人のコードのコピペのせいで仕組みを本人全然理解していないのを時たまみるし。
0813デフォルトの名無しさん
2011/05/08(日) 11:36:27.800814デフォルトの名無しさん
2011/05/08(日) 12:13:09.170815デフォルトの名無しさん
2011/05/08(日) 15:36:59.38ゲーム開発での DirectMusic の使用は非推奨になりました。
DirectPlay は廃止が予定されており、新しいアプリケーションの開発には使用しないことを強くお勧めします。
DirectSoundの使用は非推奨になりました。
ゲーム開発での DirectShow の使用は非推奨になりました。
0816デフォルトの名無しさん
2011/05/08(日) 16:35:29.030817デフォルトの名無しさん
2011/05/08(日) 16:39:42.55DirectX-DLLは常に最新のみで、COMインターフェイスはそのまま継承し続け
古いゲームでも最新バイナリで動作可能!!とかだったんだよな。
例えばトゥームレイダー2でHWT&Lが動作するとか。
おっと、歳がばれるな。
0818デフォルトの名無しさん
2011/05/08(日) 16:45:48.68昔はGPUメーカーがいっぱいあって、グラボは熱かったんだよ。
Geforce256がHWT&Lを引っさげ鳴り物入りでデビューしたが、ベンチ以外モッサリとか
Savage2000がHWT&Lを引っさげ鳴り物入りでデビューしたが、全てにおいてモッサリとか
今も物理演算とかいろいろあるけど、ちょっと難しくなりすぎだよね。
0819デフォルトの名無しさん
2011/05/08(日) 20:20:06.420820デフォルトの名無しさん
2011/05/08(日) 20:23:34.15おっさん今のGPUの方が熱いんだよ
下手なテクニックが必要ない今のほうが組むのは楽
ただしD3D10以降に限る
0821デフォルトの名無しさん
2011/05/08(日) 20:52:00.91>DirectGraphics
どうなのもなにも、そんなものは存在しない
0822初心者
2011/05/08(日) 23:21:53.95解放のところで0xC0000005エラーがでてしまいます。
ポインタのエラーみたいですが原因がわかりません。
DirectXの再インストールしても直りませんでした。
VISTAで、ドライバータイプはDirectX10_1でデバイスが作成されます。
0823初心者
2011/05/08(日) 23:24:04.25あと文字数制限きつい・・
0824デフォルトの名無しさん
2011/05/08(日) 23:30:46.63その切り貼りしただけのソースで何をやっているかはわかってるの?
ポインタのエラーみたいですが、じゃなくてそのポインタはどこの何?
そんだけの話でわかる方なんて、エスパーしかいないってマジで
ソース貼るならここへ → http://codepad.org/
0825初心者
2011/05/08(日) 23:52:50.50動作は流れはなんとか理解できています。
エラーが起こる個所はスマートポインタ使用時はD3D11Deviceの解放時です。
スマートポインタを使わないとSAFE_RELEASE(this ->context);
のところでエラーがでます
ソースは以下になります。
http://codepad.org/EzGY0YtL
よろしくお願いします(._.)
0826初心者
2011/05/08(日) 23:57:41.67D3D11Device → ID3D11Device
申し訳。(._.)
0827初心者
2011/05/09(月) 00:11:47.34何故かswapChainとdeviceとcontextのうち
一番最後に解放しようとしたもので同様のエラーが起きます。
サイトを回ったのですが該当の情報がとんとありませんでした・・
0828デフォルトの名無しさん
2011/05/09(月) 00:19:53.420829デフォルトの名無しさん
2011/05/09(月) 00:34:09.88あぁなんだ。 それ、簡単に言えばスマポだから。
つまり解放順番が意図どおりでないせい、と思う。 よくある話
0830初心者
2011/05/09(月) 00:46:01.54また_tWinMain関数ないで直接このクラスをインスタンス化してるので
別スレッド化はしてませんが、そういう方向での問題な気もします。
C#のガベージさんに頼り切りだったもので・・
DirectXのスレッドの仕組みとCOMの解放順をもうちょっと勉強して出直してきます。
ありがとうございました(._.)
0831デフォルトの名無しさん
2011/05/09(月) 00:52:04.020832デフォルトの名無しさん
2011/05/09(月) 01:03:43.24上がってるソースがエラーが出るソースと違うから混乱してるが
0833デフォルトの名無しさん
2011/05/09(月) 01:53:23.26使用中状態なら終了するなりする。
親子関係がある者については子・・・というか作られた逆順にしないと管理がどこか彼方へ跳んでいってしまう。
0834デフォルトの名無しさん
2011/05/09(月) 01:58:08.91まあ普通そういうふうには作らんけど。
IDirect3DResource9からIDirect3DDevice9を取得できるみたいに。
0835デフォルトの名無しさん
2011/05/09(月) 02:11:12.860836デフォルトの名無しさん
2011/05/09(月) 02:15:07.61CComPtrでコンパイル通らなかった気がするけど、Releaseと=NULLで2回Releaseが呼ばれてんじゃね。
0837デフォルトの名無しさん
2011/05/09(月) 16:38:43.300838デフォルトの名無しさん
2011/05/09(月) 16:39:48.93付く→使うです
0839デフォルトの名無しさん
2011/05/09(月) 16:59:57.68サイコロを想像したとき、頂点は 8 あれば良くて、面数は 6*2 = 12三角面
これを各面ごとにマテリアルを変えて描画するような場面を想像した時、
1つの三角面は頂点3つだから、サイコロ1面で言うなら6頂点づつ指定する必要があるが、
これをインデクス使わないで表現すると、単純にサイコロ1つあたり、6*6 = 36頂点必要なるよな?
同じ8頂点の値がコピーされた36頂点分のデータ。 1頂点あたり三軸座標値だけだったとしても、float が108個。
これは無駄だし、同じ頂点の情報を持つ構造体(カスタムVERTEX)は1つにしておきたいから、
頂点は8個、インデクスを36個とかにする、そういう事。 データの様子をよく観察して、方法を選択すること
0840デフォルトの名無しさん
2011/05/09(月) 17:01:21.39インデクス必要ない
0841デフォルトの名無しさん
2011/05/09(月) 17:03:39.25テクスチャ張るならテクスチャ座標の存在のせいで頂点を共有ないよな?
0842デフォルトの名無しさん
2011/05/09(月) 17:06:55.090843デフォルトの名無しさん
2011/05/09(月) 17:11:43.13面UVと、頂点UVって考え方があるので、
面UVの場合には1つの頂点あたり、UVがnセット必要になる = コピーしたそれぞれの頂点が必要になるが、
頂点UV(カスタムVERTEXに持つような)の場合、それはそういう仕様として使えばいいだけ
>テクスチャ座標の存在のせいで頂点を共有ないよな
このせいで、って言うより、どういう仕様にしたいか次第
>>842
3つてのが数値3つ=三軸の事なら当たり前。ベクトルだから
0844デフォルトの名無しさん
2011/05/09(月) 17:17:13.760845デフォルトの名無しさん
2011/05/09(月) 17:20:53.23別にそういう機能がある訳じゃないので注意な
面UVの例で言うと、例えば Blenderっていう統合3DCGソフトのUV管理がそれ
0846デフォルトの名無しさん
2011/05/09(月) 17:21:06.050847デフォルトの名無しさん
2011/05/09(月) 17:44:10.46むしろ板ポリでこそインデクスバッファ使いまくるよ。
ボタンやプログレスバーなどの挙動も含めて1回で描画したり、
文字画像をテクスチャ化した上で1回で描画したりするときに
アニメーション表示を併用するときはインデクスバッファで調整する。
0848デフォルトの名無しさん
2011/05/10(火) 05:53:49.330849デフォルトの名無しさん
2011/05/10(火) 07:28:55.740850デフォルトの名無しさん
2011/05/10(火) 12:35:21.50これから本格的に10か11で3Dアプリを作りたいのですが
今のところテセレーションやGPUプログラミングなど、11特有の機能を使う予定はないのですが
10と11どちらがお勧めですか?
0851デフォルトの名無しさん
2011/05/10(火) 15:05:53.310852デフォルトの名無しさん
2011/05/10(火) 15:08:46.96D3D10は忘れていいよ。
0853デフォルトの名無しさん
2011/05/10(火) 15:49:07.58何をどう最適化するというのか、説明してもらおうか。
0854850
2011/05/10(火) 16:02:25.78なぜこういう質問をしたかといいますと、以前どこかのスレの誰かが
DirectX9から10になってだいぶシンプルになったのが
11になってまた複雑になってきたとうい様な事を言ったからです。
実際、両方のコードを見比べてみると(まだtyutorial7しか見てないが)
10の方が短いコードですんでいるという事もあったし、資料の少なさもあるので
11で組んで良いか不安になったんですが、DirectX10のコードで買いても
初期化以外はだいたい11で通るのでしょうか?(通るなら、資料の少なさは
気にならないと思います。)
その他互換性以外の部分でDirectX11で失ったものとかはないのでしょうか?
(例えばDirectX9のステートが好きだった人は10で、DirectDrawが好きだった人は
8で喪失を感じたかも知れません)
0855デフォルトの名無しさん
2011/05/10(火) 16:34:26.653次元において
ベクトルの方向を向く
回転マトリックスを作成したいのですがうまくいきません
(例:ミサイル等が進行方向を向く処理)
最初からオブジェクトが向いている方向と方向ベクトルとで
外積を軸に内積の分だけ任意軸回転をしてる方法をとっているのですが
うまくいきません
何か参考になるページなどご存知の方はいらっしゃいますか?
v1 = D3DXVECTOR3( 0.0f, 0.0f, 1.0f );//最初にオブジェクトが向いている向き
v2 = data.GetVec();//方向ベクトル取得
d = D3DXVec3Dot( &v1, &v2 );//内積
D3DXVec3Cross( &cross, &v1, &v2 );//外積
//任意軸で回転
D3DXQuaternionRotationAxis( &q, &(cross), d * D3DX_PI * -0.5f);
// mに最終的な回転ベクトルが入る
D3DXMatrixRotationQuaternion( &m, &q );
0856デフォルトの名無しさん
2011/05/10(火) 16:58:38.46d * D3DX_PI * -0.5fとは何か
0857デフォルトの名無しさん
2011/05/10(火) 17:02:15.75カメラ座標決めるときに使うD3DXMatrixLookAtLH関数使えば出るんじゃないの?
0858855
2011/05/10(火) 17:11:47.43d は float型ですすみません
D3DXQuaternionRotationAxisの第三引数はラジアン単位だそうなので
d( -1〜1) × 3.14... × -0.5f
( -0.5fはdで1がきた場合そのままだと180度回転してしまうので調整用)
>>857
一般的(?)にはそちらを使うのが普通なのでしょうか?
そちらの方法も試してみます。
0859デフォルトの名無しさん
2011/05/10(火) 18:03:03.34頂点だけ考えるならそれでいいけど
サイコロの場合
UV見ると同じ頂点でも違うUV座標なので
インデックスバッファ使うわけにはいかないパターンになるよ
0860デフォルトの名無しさん
2011/05/10(火) 19:29:03.69RotationArc
最小弧クォータニオン
でググる
もしくは冗長だけど
ベクトル間の角度+球面線形補間
0861デフォルトの名無しさん
2011/05/10(火) 20:29:06.21内積で得られたdをそのままD3DXQuaternionRotationAxis()に入れてるけど、
内積だけじゃ角度出ないんじゃないかな?
内積 = |A| * |B| * cosθ
なので、
cosθ = 内積 / (|A| * |B|)
となって、ここから角度(ラジアン単位)を求めるには
アークコサインで変換しなきゃならない。
dの計算方法は
float div = sqrt(v1.x * v1.x + v1.y * v1.y + v1.z * v1.z) * sqrt(v2.x * v2.x + v2.y * v2.y + v2.z * v2.z);
if (div != 0.0f) //ゼロ除算を避ける
{
d = acos((v1.x * v2.x + v1.y * v2.y + v1.z * v2.z) / div);
}
とかになると思う。
0862デフォルトの名無しさん
2011/05/10(火) 21:29:00.18× D3DXQuaternionRotationAxis( &q, &(cross), d * D3DX_PI * -0.5f);
↓
○ D3DXQuaternionRotationAxis( &q, &(cross), acosf(d));
で終わり
0863デフォルトの名無しさん
2011/05/11(水) 03:21:57.21次のどれかで描画するときは重複した無駄な頂点が発生しないため
インデックスバッファを使わない方が効率的ですか?
D3DPT_POINTLIST,
D3DPT_LINESTRIP,
D3DPT_TRIANGLESTRIP
0864デフォルトの名無しさん
2011/05/11(水) 03:30:54.04同じところを通る頂点を使う事はあると思うけどねぇ〜
0865デフォルトの名無しさん
2011/05/11(水) 05:13:39.63ぶっちゃけ水面とかグリッドなやつにしか使わないような
0866デフォルトの名無しさん
2011/05/11(水) 05:18:15.30同じテクスチャという制限とかもあるし
今の時代そんなことやらなくても速度出るし
0867デフォルトの名無しさん
2011/05/11(水) 08:17:59.89追求をやめたらPGじゃない
0868デフォルトの名無しさん
2011/05/11(水) 08:26:10.27まともなボード積んでること前提にするなら変わらなくなってきたけどね
0869デフォルトの名無しさん
2011/05/11(水) 08:51:07.89このご時世にi845やGeForce7600やらのサポートが必要になるんだぜ……。
0871863
2011/05/11(水) 17:12:25.88D3DPT_TRIANGLELISTで個数ごとにポリゴン2つ、インデックス6つ
drawIndexedPrimitive()
D3DPT_TRIANGLESTRIPで見えないポリゴンで繋げて
個数ごとにポリゴン3つ、インデックスなし
drawPrimitive()
どっちがいいかなと思ったんですけど
過去すれだとD3DPT_TRIANGLELISTのほうが良いっぽいですね。
0872デフォルトの名無しさん
2011/05/11(水) 17:34:17.50見えないポリゴンとか重くなるわ
0873デフォルトの名無しさん
2011/05/11(水) 17:56:02.28に分解できるのでしょうか?
目的はカメラのワールド変換行列から、カメラを制御することです。
ビュー行列にワールド変換行列の逆行列を設定すればいいとわかった
のですが、カメラは上記のEyeなどパラメータを保持しており
通常の入力操作でそれらを更新することで制御しています。
ワールド変換行列をもとにビュー行列を直接書き換えたときに、
それらと整合するようにしたいです。
0874デフォルトの名無しさん
2011/05/11(水) 18:11:44.17そんな面倒なことしなくてもカメラの位置、注視点を保存しとけば
いんじゃないの?
やりたいことがいまいち伝わってないから、そう思うのかもしれないけど
0875デフォルトの名無しさん
2011/05/11(水) 18:16:09.69カメラは位置(Eye)や注視点(Focus)などを保存していて、
マウスの入力操作ではそれをいじってビュー行列をつくっているんですが、
それとは別にワールド行列からもカメラを制御できるようにしたいのです。
0876デフォルトの名無しさん
2011/05/11(水) 18:49:54.67俺が知識不足なだけ?
0877デフォルトの名無しさん
2011/05/11(水) 19:03:07.69LG D2342P-PNのモニターを購入して3Dのゲームをしているのですが
DirectX9のゲームをDirectX11でプレイできないのでしょうか?
今DirectX11を使っていて一応3Dでゲームは出来ますがDirectX9
にして下さい。と警告が出て途中で落ちます。
そしてDirectX9をインストールしよとしても
インストールするとできません。ご教授よろしくお願いします。
0878デフォルトの名無しさん
2011/05/11(水) 19:05:28.08死ねばいいよ
0879デフォルトの名無しさん
2011/05/11(水) 19:18:29.69お前みたいなバカに聞いてない死ねやカス!
0880デフォルトの名無しさん
2011/05/11(水) 19:19:27.53小学生かwww
0881デフォルトの名無しさん
2011/05/11(水) 19:20:08.43カメラの位置と回転を、モデルを制御するのと同じように、
SRTのワールド変換行列で制御するってことなんですけど。
俺の言い方がまずいのでしょうか。
0882デフォルトの名無しさん
2011/05/11(水) 19:29:08.861ヶ月前に我慢できずに3Dモニタ買ったんだけど
それHDMI1.4a対応かよ
糞が
死ねばいいよ
つーかスレ違い
0883デフォルトの名無しさん
2011/05/11(水) 19:29:46.76IDirect3DDevice9::SetTransform(D3DTS_VIEW, )
で行列突っ込めば行列で制御できるんじゃないの?
0884デフォルトの名無しさん
2011/05/11(水) 19:44:42.60D3DPT_TRIANGLELISTでインデックス無しが一番いい。
0885デフォルトの名無しさん
2011/05/11(水) 19:49:28.94ここはDirectX「プログラミング」のスレだからスレチな。
あんまり頭悪いと回りに迷惑かけるから気をつけろよw
0886デフォルトの名無しさん
2011/05/11(水) 20:19:48.90>>883
?? 何故IDirect3DDevice9が?
カメラクラスがあります。カメラクラスは注視点などパラメータをもち
マウス入力でパラメータを変更し毎フレームビュー行列をを生成します。
しかし、マウス入力でなくワールド変換行列で直接カメラの位置と回転を
制御したいときがあります。その後もマウス入力で継続して制御するには
ワールド変換行列から生成したビュー行列をパラメータに落とし込まなければ
なりません。どうすれば?
ってことなんですけど、全然通じないのは俺がおかしいのでしょうか?
0887デフォルトの名無しさん
2011/05/11(水) 20:39:26.75本題は、ビュー行列をEye,Focus,Upに戻せないか?ということなので、
「そういうことはできない」「こういう方法ででえきる、あるいは行列の
成分のどこどこと対応している」というふうにお答え頂ければ幸いです。
0888876
2011/05/11(水) 20:42:28.75やっとやりたいことがわかったわ
でも位置と回転を覚えておいてそれを行列操作すればいんでね?
ビュー行列は
移動と回転の情報は普通のワールド変換行列と同じだから
情報は取り出せると思うが。
0889デフォルトの名無しさん
2011/05/11(水) 20:43:07.57作成したときに保存しておけばいいじゃない。
0890デフォルトの名無しさん
2011/05/11(水) 20:48:08.81回転成分で(0, 0, 1.0)を逆方向に回転して得られる方向ベクトルを
カメラ位置に加算して注視点とする。
上方向については(0, 1.0, 0)を回転させる、とかじゃいかんの?
0891デフォルトの名無しさん
2011/05/11(水) 20:48:15.55D3DXMatrixLookAtLH(MATRIX *pOut, VECTOR3 *pEye, VECTOR3 *pAt, VECTOR3 *pUp)
やってること
zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)
行列の中身
xaxis.x yaxis.x zaxis.x 0
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) 1
0892デフォルトの名無しさん
2011/05/11(水) 20:50:51.60ありがとうございます。解決できそうな感じです。
他の方々もありがとうございました。
0893デフォルトの名無しさん
2011/05/12(木) 00:25:06.88ある程度単純な処理はインラインなので.hや.inlで中身砲台
0894デフォルトの名無しさん
2011/05/12(木) 01:16:11.450895初心者
2011/05/12(木) 21:26:22.22D3DXオブジェクトの解放ができなかった問題が半分解決したので
ご報告にあがりました。
デバイスとコンテキストとスワップチェイン解放時に最後に解放しようとするものが
どうしてもアクセス違反になる問題で、
原因はD3D11CreateDevice時のドライバータイプでした。
ビデオカードなしでもFeatureLevelが10_0でちゃんと返ってるし
デバイス作成できてるから
D3D_DRIVER_TYPE_HARDWAREでもいいんかなと思ってたら
無理だったようでした・・・。
ご協力してくださった方々ありがとうございました。
新しいパソコン買いますOTZ
WIn7でOTZ
0896デフォルトの名無しさん
2011/05/12(木) 21:29:56.090897初心者
2011/05/12(木) 21:42:44.91三角形の描画くらいしとけばよかったです;;
0898デフォルトの名無しさん
2011/05/12(木) 23:47:32.33バージョンが上がるたびにIDirect3DDevice9とかバージョンが付いた
型名使うのは辛すぎます
0899デフォルトの名無しさん
2011/05/12(木) 23:54:44.63どのバージョンの処理が呼び出されて欲しいの?って話
てか、typedef するなりマクロ書いたり、自分の用件でオブジェクト化してたりしないの?
0900デフォルトの名無しさん
2011/05/12(木) 23:56:56.75DXも歴史がかなりあって毎回使い勝手変わるから、それは無理だと思う。
せめてD3dBase的なものがあればよかったのかも知れんが、
そういうものがあったとしたら、仕様はそのBaseが策定された時期の仕様引きずってると思うよ。
0901デフォルトの名無しさん
2011/05/13(金) 00:12:56.38OpenGLしか知らないからバージョン毎に型が変わっていくっていうのに驚いた
せめて初期化くらいは共通I/Fのファクトリとかになっていればいいのに
>>900
毎回変わるのか・・・MS-officeみたいだ・・・
あれは解説本出す業者と金で繋がってるとしか思えない
0902デフォルトの名無しさん
2011/05/13(金) 00:28:21.32俺も普段OpenGL使って色々やったりするけど、
シェーダとかARBとかEXT関係の辺りはバージョンによって使える/その時代には無かったとかあるじゃん
それと一緒だって。 ・・・分量が違いすぎるだろって話はあるが
0903デフォルトの名無しさん
2011/05/13(金) 00:41:54.16インストールしてるSDKのバージョンと違ってて
SDKバージョン変更対応する苦行が始まるお!
0904デフォルトの名無しさん
2011/05/13(金) 04:56:29.48DirectXのマイナーバージョン違いは 一応バージョンのdefineあるから
#if で分岐してる
0905デフォルトの名無しさん
2011/05/13(金) 12:49:34.02>本題は、ビュー行列をEye,Focus,Upに戻せないか?ということなので、
これは色々やってみた感じ
不可能である場合が多い気がする
0906デフォルトの名無しさん
2011/05/13(金) 15:33:56.550907デフォルトの名無しさん
2011/05/13(金) 15:39:21.84軸の設定なんて自分で勝手に決めるものなんだから、他人が知っているわけがない。
0908デフォルトの名無しさん
2011/05/13(金) 16:51:01.75行列から回転やスケール、位置への逆変換って不可能だよな?
できるようなページがたまにあったりするけどおかしいよね?
できてないもんね
ちなみに俺は色々やってみた感じどうにも無理と結論づけた
0909デフォルトの名無しさん
2011/05/13(金) 18:11:45.570910デフォルトの名無しさん
2011/05/13(金) 18:17:36.31そういう話してない
たまに逆変換しなきゃいけないような状況においこまれるときがある
ツールとかもそうだし
あとシステムの基盤が行列でしか状態を保持してないとかだと
別に回転、スケール、位置情報を保持しておかないといけなかったりする
別に元に戻したい云々の話してない
あくまでそのときに構成した行列の回転要素が知りたいとかそういうとき
0911デフォルトの名無しさん
2011/05/13(金) 18:19:52.06キャラを3回転させてる途中なのに担当者が超馬鹿で行列しか保持する機構ねーの
基盤作ったやつにおもいっきり馬鹿馬鹿アフォアフォアフォ能無しウンコウンコたくさん書いてメール送ってやったけど
今更、そんなもん挟めない云々いいわけするから強引に推定3回転とかわけのわからない判定作って強引にやったけどねw
0912デフォルトの名無しさん
2011/05/13(金) 18:46:47.420913デフォルトの名無しさん
2011/05/13(金) 20:13:28.31もうそれDirectX関係ないからとっとと消えろ、キモいからw
0914デフォルトの名無しさん
2011/05/13(金) 21:48:40.05こういうことじゃなくて?
// m = translation * rotation * scale (D3DXではm = scale * rotation * translation)
template< typename value_type >
void decompose ( /*[in]*/const matrix< 4, 4, value_type >& m,
/*[out]*/matrix< 3, 3, value_type >& rotation,
/*[out]*/vector< 3, value_type >& scale,
/*[out]*/vector< 3, value_type >& translation)
{
translation = vector< 3, value_type >( m[0][3], m[1][3], m[2][3] );
rotation = matrix< 3, 3, value_type >(m);
scale = rotation.length();
for( uint_t i = 0; i < 3; ++i )
rotation[i] /= scale[i];
}
0915デフォルトの名無しさん
2011/05/13(金) 22:51:32.38そうだけどそれ動かないでしょ?
だってどう考えても理にかなってねーもん
0916デフォルトの名無しさん
2011/05/13(金) 22:52:12.74行列が4×4なら、元に戻らんやろね。
次元縮小の話が無い限り、そんなことはありゃんすめぇー。
0917デフォルトの名無しさん
2011/05/13(金) 23:51:31.80方向ベクトルから回転求めたりして
0918デフォルトの名無しさん
2011/05/14(土) 00:52:57.91大してやってない
以前のDirectXならヘルプに載ってたんだがな・・・
0919デフォルトの名無しさん
2011/05/14(土) 06:27:13.98頂点が多い場合といわれてるけどいまいちわからないですね。
UP系は描画の度に全ての頂点配列を値コピーするかわりにロックの負荷なし。
UP無しは石や樹木のように動かないオブジェクトはビデオメモリに残ってる
データをそのまま描画して、歩いたりしたオブジェクトの頂点に関しては
ロックした後そのオブジェクトの分だけ頂点を値コピーするから
コピーコストは少ない。
だとすると、ずっと動かないオブジェクトはビデオメモリに残しておいて
そのままUPなし()で描画する。一方で常に動いてるようなオブジェクトは
UP()で描画するのが効率的な使い分けとして正しくなりますか?
0920デフォルトの名無しさん
2011/05/14(土) 07:18:38.40効率を気にするならUPなんて一切使わない。
結局GPUは頂点バッファからしか描画できないから、UP系は頂点バッファの確保や
コピーをドライバに任せるだけ。
0921デフォルトの名無しさん
2011/05/14(土) 12:31:28.06つーか動的に頂点を変化させる場合でも、普通ロックなんかしない。
VertexShaderとかあるでしょ。
0922デフォルトの名無しさん
2011/05/14(土) 14:54:44.08pDev->StretchRect(pBackBuffer, NULL, pSurface, NULL, D3DTEXF_NONE);
バックバッファから、テクスチャのサ―フェースへとStreachRectをしようとしています
この際、
・バックバッファがアンチエイリアシングつき
・バックバッファとテクスチャの横縦幅が完全に一致
している時のみ、うまく転送されません。
StreachRectの返り値はS_OKなのですが、実際に画像は転送されていませんでした。
バックバッファのアンチエイリアシングを外したり、テクスチャのサイズを例えばバックバッファの横幅と一致、縦幅は1ドット小さくした場合などは転送されました
MSDNを読んでも「拡大縮小が対応していない転送元と先の組み合わせもある」みたいなことは書かれているのですが、むしろ拡大縮小が無ければ対応が増えるような書き方です
解決の手段を知りたいのですが、何か情報いただければ幸いです
0923デフォルトの名無しさん
2011/05/14(土) 17:21:20.360924デフォルトの名無しさん
2011/05/14(土) 19:28:03.85SDKを導入したいのですが、ソフトウェアによくある「安定するバージョン」というのはあるのでしょうか。
環境はWindowsXP VC2008で、Windows2000以降で動作可能な2Dゲームを想定しています。
高度は機能はまず使わないと思うのですが、動作速度や環境の問題がありましたらご教授願います。
0925デフォルトの名無しさん
2011/05/14(土) 19:40:29.75そもそもWin2000まで対応のDirectXというだけでかなり制限される。
例えばXP SP2以降で利用可能なXAudio2はWin2000では使用できない。
DirectXを使用するアプリケーションは必ず使用している
DirectXのバージョンの再頒布パッケージを添付することになっているが、
エロゲーメーカーを中心として、パッケージの添付自体を嫌がって
D3DXなどのバージョン依存性が高いライブラリを使用せずコアだけで実装する例もある。
質問の「安定するバージョン」だが、そんなものはない。
DirectXは動作を何も保証しないし、同じバージョンのDirectXでも
ハードウェアのドライバによって動き方が全然違うから。
0926デフォルトの名無しさん
2011/05/14(土) 19:58:22.54ありがとうございます。
自分が想定しているのは、AVGで出来るならまず出来るだろう程度のものなので、
代替手段があるのであれば機能性よりも動作環境を優先したいです。
導入するにあたっては、闇雲に新しいバージョンを入れても大丈夫なのでしょうか。
0927デフォルトの名無しさん
2011/05/14(土) 20:27:57.740928デフォルトの名無しさん
2011/05/14(土) 21:11:21.11リアルタイムデフォームする時って、VertexShaderで計算させるのが常識なの?
0929デフォルトの名無しさん
2011/05/14(土) 22:35:16.77でも、CPUでないと出来ない計算とか、CPUで十分間に合う計算とかもある。
0930デフォルトの名無しさん
2011/05/14(土) 23:01:59.19そうなのか・・・
俺は普段モデラソフトみたいな物(処理的な意味でそういう物)とか、
リアルタイムのキャラクタアクションを扱うモジュール(ボーン・デフォームと、ボーンベクトルのslerpによるアクション)
とかを自分で書いて使ったりしてるが、どうも今ひとつ、「あともう若干速い手段無いだろうか」と思ってた
ちょっとVertexShader使ったその辺を調べて追いかけてみる。ありがとう
0931デフォルトの名無しさん
2011/05/14(土) 23:14:12.36情報ありがとうございます。
ただ、他のD3DTEXFを全通り試してみましたが、やはり「まったく同じサイズへの転送」の場合描画されないようです
0932デフォルトの名無しさん
2011/05/14(土) 23:23:10.04そもそもオレはStretchRectは使用しないな。
テクスチャに書き込むならテクスチャをレンダーターゲットに設定して文字通り書きこむ。
描画結果をファイルに書き出したいなら
テクスチャではなくサーフェイスを作ってレンダーターゲットに設定して描画して、それを保存する。
0933デフォルトの名無しさん
2011/05/14(土) 23:33:18.19正三角形だったら(0,0) , (0, 32) , (16, 16)に頂点おいたままにして
そこから頂点シェーダに変数渡して動かすのか!思いつかなかった。
ID3DXEffect *pEffect;
pEffect->SetFloat("x", screen_x / 2);
pEffect->SetFloat("y", screen_y / 2);
0934デフォルトの名無しさん
2011/05/14(土) 23:36:50.50いまいち疑問な俺
頂点数分のデータ転送が行われてるんだからロックしたときと大して変わらんのと違うの〜?
って思うけど使う関数によって時間変わったりもするから脳みそで考えるよりも実測あるのみなんだろうな
0935デフォルトの名無しさん
2011/05/14(土) 23:46:22.25あれ?もしかしたら自分の勘違いかもしれませんが
テクスチャをターゲットにしてしまうと、アンチエイリアシング使えなくないですか?
当方、環境はDirectX9.0cです
アンチエイリアシングを利用して画面を描画して、
今度はそれをテクスチャとして使い、色々画面エフェクトをかけて
実際のディスプレイに表示
ということをやろうとしています
0936デフォルトの名無しさん
2011/05/14(土) 23:46:47.66ストレッチ有りとなしの場合処理を分ける必要があるとして
マルチサンプルの場合も分ける必要がある。
原因は、コピー先かな。
ドキュメントに制限書かれていた気がする。
0937デフォルトの名無しさん
2011/05/15(日) 00:34:25.13D3DXCreateTexture(pDev, w, h, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &pTex);
pTex->GetSurfaceLevel(0, &pSurface);
pDev->GetRenderTarget(0, &pBackBuffer);
pDev->StretchRect(pBackBuffer, NULL, pSurface, NULL, D3DTEXF_NONE);
w,hはバックバッファのそれと同じです
返り値をチェックしましたが、どれもS_OKで失敗した様子はありません
ですがきちんと転送がされません
テクスチャを作り際、wでもhでも両方でも、1ドット以上違いがあればうまく転送されるようです
「拡大縮小がある時だけ失敗する」ならまだ分かるのですが、「拡大縮小が無い時だけ失敗する」のは何故なんでしょう・・・
0938デフォルトの名無しさん
2011/05/15(日) 01:20:07.20それと、downsample のところの制限守っているか。
0939デフォルトの名無しさん
2011/05/15(日) 01:25:55.54さっそく領域指定もやってみましたが、駄目なようです
ダウンサンプリング周りですが、ここの文章を読む限り
転送元と転送先のRenderTargetサイズさえ一緒ならOKなはずなのですが…
ttp://msdn.microsoft.com/en-us/library/bb174471%28VS.85%29.aspx
ところでこのページの、まさにダウンサンプリングのところの
・Create a second rendertarget of the same size, that is not multisampled.
という文章。日本語訳ページだと that is not の not が訳し忘れられていて、意味が正反対になってますねw
日本語ページ見て違和感感じて「またいつものか・・・」って英語ページ見て正解でした
0940デフォルトの名無しさん
2011/05/15(日) 01:28:19.830941デフォルトの名無しさん
2011/05/15(日) 01:28:25.11AAもコンナ感じでグリグリできたら楽しいです
ttp://livedoor.blogimg.jp/coodoo/imgs/c/a/ca645557.gif
0942デフォルトの名無しさん
2011/05/15(日) 01:29:46.33どうやってそれ判定させる気だよww
0943デフォルトの名無しさん
2011/05/15(日) 01:34:10.71やだなぁ、バックバッファフォーマットが違ってたら、そもそも「1ドットでも差があれば転送できる」ができるわけが無いじゃ・・・
ないじゃ・・・
ち、違ってた・・・
しかも揃えたらうまくいった
超ありがとうございました
拡大縮小が無い時はなんか超速転送するために、まったく違うアルゴリズム動かしてるとかなんでしょうかね…
で、そのアルゴリズムの時はフォーマットがまったく一緒でないと駄目とか…?
0944デフォルトの名無しさん
2011/05/15(日) 01:38:57.68D3DFMT_A8R8G8B8で生成してるけど、コピー元とフォーマット同じじゃないと駄目かも。
あと極一部の環境で、CreateTextureのLevelsが1の場合、コピーされないドライバのバグが発生することがある。
この場合1以外か0で回避できる。ドライバの最適化(チート)関係のバグだと思っている。
って既に解決したぽ?
0945デフォルトの名無しさん
2011/05/15(日) 01:43:31.74ありがとうございます
バックバッファも当然D3DFMT_A8R8G8B8だと思ってたら
D3DFMT_X8R8G8B8
だったようです。
で、フォーマット不一致で駄目だったと。
・駄目だったのなら、ちゃんとStretchRectの返り値でエラー出してほしいよ…
・何故拡大縮小があれば不一致でもいけるのに、同じサイズだとむしろ駄目になるんだー!
0946デフォルトの名無しさん
2011/05/15(日) 01:50:37.900947デフォルトの名無しさん
2011/05/15(日) 02:51:44.320948デフォルトの名無しさん
2011/05/15(日) 04:13:34.58しかも「ブラクラ=GPUクラッシュ」の可能性がある・・・
0949デフォルトの名無しさん
2011/05/15(日) 04:40:27.090950デフォルトの名無しさん
2011/05/15(日) 05:17:26.110951デフォルトの名無しさん
2011/05/15(日) 09:00:35.78対応してくれればとか、何の冗談とか、いったい何を言っているんだろう?
0952デフォルトの名無しさん
2011/05/15(日) 09:01:31.990953デフォルトの名無しさん
2011/05/15(日) 09:09:57.71プログラムを組んでいる人間の知識が、PC初心者並みなんだよな。
あまりに酷い。
0954デフォルトの名無しさん
2011/05/15(日) 09:53:23.87プラグラマはイコールで、パソコン詳しいお兄さんではありません。(一般の人にありがちな誤解)
0955デフォルトの名無しさん
2011/05/15(日) 10:46:23.30初心者スレにいるの?自分の知識ひけらかして他人を見下したいだけなの?w
0956デフォルトの名無しさん
2011/05/15(日) 11:15:33.610957デフォルトの名無しさん
2011/05/15(日) 11:21:52.780958デフォルトの名無しさん
2011/05/15(日) 11:35:21.34大雑把に一括りで考えちゃダメよ
0959デフォルトの名無しさん
2011/05/15(日) 11:50:52.55おまえみたいなのも何年たってもそうやって煽ることしかできなさそうだよな
0960デフォルトの名無しさん
2011/05/15(日) 11:53:21.260961デフォルトの名無しさん
2011/05/15(日) 12:36:09.190962デフォルトの名無しさん
2011/05/15(日) 12:44:37.36ペーパードライバなんですけど、3回目のゴールド免許更新なんです。
0963デフォルトの名無しさん
2011/05/15(日) 13:44:31.71まさにこれが鍵。良い事を言う
0964デフォルトの名無しさん
2011/05/15(日) 15:10:08.950965デフォルトの名無しさん
2011/05/15(日) 15:59:36.36余程マヌケ
0966デフォルトの名無しさん
2011/05/15(日) 20:32:50.12頂点バッファ作成時に
書き込み遅い静的バッファ(D3DUSAGE_DYNAMICではない)を使えるから
早くなるんじゃないかな。
頂点バッファの切り替えは重いみたいだから
静的バッファ(VRAM)と動的バッファ(AGP)使い分けするなら
動的バッファ一本の方がよさそうな木がするけど
http://msdn.microsoft.com/ja-jp/library/cc324417.aspx
0967デフォルトの名無しさん
2011/05/16(月) 10:32:29.60マウスオーバーやクリックの検知を、座標による判定ではなく、テクスチャ毎に設定することは可能なのでしょうか
トランプの様な、対象が何度も移動する類のものに対応したいのですが…
0968デフォルトの名無しさん
2011/05/16(月) 10:39:43.93なんて言っていいか迷うが、それ、そういう用件で
自分で実装する固有処理なんだがそもそも
>マウスオーバーやクリックの検知
↑これが何をしているかわかってるよな?
0969デフォルトの名無しさん
2011/05/16(月) 10:43:00.670970デフォルトの名無しさん
2011/05/16(月) 15:10:21.24そもそもDirectInputを使おうがWinAPIで済ませようが、
マウスカーソルがどのウィンドウの上にいるか、
どの座標に居るかしか教えてくれないんだぞ。
どのメッシュ上にあるかは自分で計算するんだ。
0971デフォルトの名無しさん
2011/05/16(月) 15:29:14.770972デフォルトの名無しさん
2011/05/16(月) 16:00:07.43そういうフレームワークは自作するしかない。
俺も作ってるがやりだしたらきりがなくて
ゲームがつくれない(・3・)
0973デフォルトの名無しさん
2011/05/17(火) 20:05:07.09例えば、スキンメッシュモデルの頂点を変形済みにして、ハンコのように何度も描画するとかです
もっと具体的に言えば、スキンメッシュモデルを
・Depth値書きだし用
・法線書き出し用
・DepthShadow用の遮蔽フラグ吐き出し用
といった感じで、同じポーズで何度も描きたい時に、頂点変換を毎回かけるのは勿体ない気がします。
もちろんそのためのマルチレンダリングがあるのですが、古いグラボだと対応していないとかもあるので…
0974デフォルトの名無しさん
2011/05/18(水) 00:03:26.12テクスチは.bmpで.xと同じファイルに入っています
ファイルのパスはD:\CG\commonです。
Metasequoia(フリー)で作って.x形式で保存しています。
0975デフォルトの名無しさん
2011/05/18(水) 00:31:46.76ちょっと古めのSDKに入ってるmeshviewでみれ
0976デフォルトの名無しさん
2011/05/18(水) 00:41:05.77なんでバグってんの?
0977デフォルトの名無しさん
2011/05/18(水) 01:04:13.89テクスチャをレンダリングターゲットに指定し、PixelShaderで出力色のa成分に値を入れて出力しているのですが、
いざそのテクスチャを使ってみるとa成分が常に255になってしまっています。
D3DRS_ALPHABLENDENABLEをFALSEにするなどしてみたのですが、うまくいきませんでした
a値をそのままテクスチャに出力するにはどうしたらよいのでしょうか?
D3DRS_ALPHABLENDENABLEをTRUEにして、
SrcBlend = ONE;
DestBkend = ZERO;
としてみても駄目でした
rgb成分は他用途で使っているため、余っているa成分に情報を吐きたいのですが・・・
(rgbには画面深度を入れ、a成分には太陽光があたっているかのフラグを入れたい)
0978デフォルトの名無しさん
2011/05/18(水) 01:14:51.910979デフォルトの名無しさん
2011/05/18(水) 16:09:17.03Texture,Cube,Volumeクラスそれぞれサブクラスにする?
テクスチャインターフェースみたいな基底クラス作ってもあまり役に立たない。。。
0980デフォルトの名無しさん
2011/05/18(水) 16:32:22.57どんなラッパーにしたのか知らないが、
CComPtr<IDirect3DTextureX> で十分じゃないのか?
0981デフォルトの名無しさん
2011/05/18(水) 17:27:26.10と、言おうと思ったが、用はラッパにしようが無いからスマポでおk って話か
0982デフォルトの名無しさん
2011/05/18(水) 17:33:47.87そういうこと
強いて挙げれば、俺はRENDER_TARGETなテクスチャは自動でリストに登録されるようにしておいて、
ロスト時とリセット時に解放と再確保を自動でやるようにさせてるけど
0983デフォルトの名無しさん
2011/05/18(水) 23:55:18.21ちょっとほっとした。
0984デフォルトの名無しさん
2011/05/19(木) 02:41:05.08ありがとうございます。参考にします
0985デフォルトの名無しさん
2011/05/19(木) 08:35:42.54即解放して良いことになってる?
なにかフラグとか確かめなくてよい?
Texture* pTexture = ...;
pDevice->Begin()
pDevice->End();
pDevice->Present(...);
pTexture->Release();
0986デフォルトの名無しさん
2011/05/19(木) 09:02:39.150987デフォルトの名無しさん
2011/05/19(木) 09:02:43.94Presentどころか、Endの段階で消してOK
0988985
2011/05/19(木) 10:42:36.99怪しい段階でRelease()していいのかなと思ったけど
そのへんはRelease()内で隠蔽されてるのかな。
0989デフォルトの名無しさん
2011/05/20(金) 00:16:23.250990デフォルトの名無しさん
2011/05/20(金) 06:43:21.36表示サイズが小さい(16pxくらい)と形が崩れませんか?
0991デフォルトの名無しさん
2011/05/20(金) 09:30:24.66大きめに作っておいて、表示の時縮小するよー
自作クラスでは、テクスチャに用意する文字の大きさを指定する機能つけてある
0992デフォルトの名無しさん
2011/05/20(金) 10:36:05.22ID3DXFontを横で描画させると劣ってるのがはっきりわかるんですよ
ビットマップはこれで取得してます
GetGlyphOutline(hdc, code, GGO_GRAY8_BITMAP, &GM, 0, NULL, &Mat);
0993デフォルトの名無しさん
2011/05/20(金) 12:30:23.55(1)ポリゴンのXとYそれぞれの座標に-0.5fのオフセットが加わってない
(2)GetGlyphOutline()から作るテクスチャを大きくし過ぎてかつミップマップを作ってない
(3)テクスチャフィルタの設定がなしとかになってる
とかだと思う。
0994デフォルトの名無しさん
2011/05/20(金) 13:41:38.81でもあんまり綺麗なフォントじゃないね。
自作テキストフィールド作りたいけど難しい
0995デフォルトの名無しさん
2011/05/20(金) 16:48:54.88誰か作ってくれないかな
0996デフォルトの名無しさん
2011/05/20(金) 17:31:07.980997デフォルトの名無しさん
2011/05/20(金) 17:46:38.71クロプラ開発の必要もないし。
DirectWriteもあるし。
0998デフォルトの名無しさん
2011/05/20(金) 18:03:49.650999デフォルトの名無しさん
2011/05/20(金) 18:56:54.63http://hibari.2ch.net/test/read.cgi/tech/1305885376/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。