【C++】 DirectX初心者質問スレ Part22 【C】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/02/27(金) 21:03:32これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
【C++】 DirectX初心者質問スレ Part21 【C】
http://pc11.2ch.net/test/read.cgi/tech/1229078397/
0002デフォルトの名無しさん
2009/02/28(土) 01:42:24ポリゴンを表示したのですが、
実際に画像を読み込んだサイズで表示できません。
(画像が256x256なら表示も256x256)
どこの設定が悪いのでしょうか?
それと上下左右のキーで1ピクセル単位で動かそうと
しているのですが、こちらも上手くいきません。
どういう風にすれば良いのでしょうか?
0003デフォルトの名無しさん
2009/02/28(土) 02:31:150004デフォルトの名無しさん
2009/02/28(土) 07:51:47>>3
頂点フォーマットはD3DFVF_XYZではダメなのでしょうか?
z の指定がおかしい事に気づき、1ピクセル単位で動かすのは可能になりました。
ただ未だに実際のサイズでの表示が上手くいきません。
現状では256x256の場合は231x231で表示されてしまっています。
0005デフォルトの名無しさん
2009/02/28(土) 11:44:28学校のパソコンが全部9.0bなのでD3DX関数を使ったアプリを起動すると
d3dx_xx.dllがありませんと出ます
0006デフォルトの名無しさん
2009/02/28(土) 11:50:05ポリゴンの位置座標をワールド空間で扱うなら、サイズもワールド空間に変換しないとだめね。
(スクリーン上での幅が、ワールドではいくつになるか計算。)
元々のポリゴンの幅が2.0(-1.0〜1.0)だから、(ワールド幅 / 2.0)倍ね。
D3DXMATRIXA16 matMod;
D3DXVECTOR3 p1, p2;
CalcScreenToWorld(&p1, 0, 0, 0, 640, 480, &matView, &matProj);
CalcScreenToWorld(&p2, 256, 256, 0, 640, 480, &matView, &matProj);
float worldWidth = p2.x - p1.x;
float worldHeight = -(p2.y - p1.y);
D3DXMatrixScaling(&matMod, worldWidth / 2.0f, worldHeight / 2.0f, 1.0f);
matScale = matMod * matScale;
単に等倍表示しただけなら、正射影にすれば、CalcScreenToWorld とかいらなくなるわよ。
D3DXMatrixOrthoOffCenterLH( &matProj, 0, vp.Width, vp.Height, 0, 5.0f, 100.0f );
D3DFVF_XYZRHW でもできるけど、SetTransform とか使えないモードだから注意ね。
0007デフォルトの名無しさん
2009/02/28(土) 11:54:19に入っている代表的な関数は何がありますか?
0008デフォルトの名無しさん
2009/02/28(土) 12:23:38D3DX関数を使っていると
November2007でコンパイルしている場合d3dx9_37.dllが必要
August2007でコンパイルしている場合
それより後にでているd3dx9_37.dllがあったとしてもダメでd3dx9_35.dllが必要
0009デフォルトの名無しさん
2009/02/28(土) 12:43:31どうしても気になるならそっち使えばいいんじゃね
0010デフォルトの名無しさん
2009/02/28(土) 13:16:10拡大率の方にも必要だったのですね、この方法で出来ました。
ありがとうございます。
拡大回転もやりたいので正射影ではダメなんです。
それでもう一点気づいたのですが、
CalcScreenToWorld使ってるとX軸やY軸の回転で、
見えない所が出てしまうんですね…。
スクリーン座標や拡大率を保ったまま回転させて、
画像の全範囲を表示する方法はあるのでしょうか?
0011デフォルトの名無しさん
2009/02/28(土) 13:16:59December2004もスタティックでいけました。
0012デフォルトの名無しさん
2009/02/28(土) 13:55:21ポリゴンが欠けるのは、回転した部分がニア平面より手前に来るからね。
CalcScreenToWorld の引数 fZ を それぞれ 0.5f にすればとりあえず直るわよ。
0013デフォルトの名無しさん
2009/02/28(土) 14:25:00なるほど、0か1かでしか考えてなかったのがダメだったのですね。
本当に何から何まで本当にありがとうございます。
おかげさまで思い通りの挙動をさせる事が出来ました。
0014デフォルトの名無しさん
2009/02/28(土) 16:17:58穴から落ちるような処理を作りたいのですが
当然、穴も回転するのですが
回転後の穴の座標を取得するにはどうすれば良いのでしょうか?
0015デフォルトの名無しさん
2009/02/28(土) 16:20:150016デフォルトの名無しさん
2009/02/28(土) 16:22:56Hitの方法は、Y軸回転のみするモデルはAABBであたり判定を行い
穴の部分は球でのあたり判定を行うつもりです。
2重の当たり判定を行い、穴から落ちるような処理を作ろうとしています。
0017デフォルトの名無しさん
2009/02/28(土) 17:37:10モデルと同じ回転行列を掛けるだけじゃ?
001813
2009/02/28(土) 22:20:37回転や拡大の中心座標を変えたいのですが、
ポリゴンの場合どの部分がそれに当たるのでしょうか?
0019デフォルトの名無しさん
2009/02/28(土) 22:29:320021デフォルトの名無しさん
2009/02/28(土) 23:30:050022デフォルトの名無しさん
2009/03/01(日) 09:52:34返事が遅れました。申し訳ありません。
>モデルのローカル座標に直して
という意味がわかりません……。
しかし回転、移動の変換行列をかけてみたら解決できました。
ありがとうございます!
もうひとつ質問なのですが、
この場合って、モデルのローカル座標の実際の数値を調べて、
中心位置を出さなければなりませんが、
他にスマートな方法はあるのでしょうか?
あたり判定用のモデルを読み込むとかですかね?
0023デフォルトの名無しさん
2009/03/01(日) 10:10:350024デフォルトの名無しさん
2009/03/01(日) 11:53:16もしくは、この位置に穴を開けてくれとプログラマーがデザイナーに頼むもの
0025デフォルトの名無しさん
2009/03/01(日) 14:53:06スケールはないものと考えます。
宜しくお願い致します。
0026デフォルトの名無しさん
2009/03/01(日) 14:57:160027デフォルトの名無しさん
2009/03/01(日) 15:56:10// 行列が2つあるとしたら
D3DXMATRIX m, n;
D3DXMatrixRotationY(&m, D3DXToRadian(20));
D3DXMatrixRotationY(&n, D3DXToRadian(50));
// m から n への回転行列 ( inv(m)*n ) を作って、
D3DXMATRIX im, imn;
D3DXMatrixInverse(&im, NULL, &m);
imn = im * n;
// それをクォータニオンに変換して
D3DXQUATERNION q;
D3DXQuaternionRotationMatrix(&q, &imn);
// 回転角を求めれば終わり。
D3DXVECTOR3 axis;
float angle;
D3DXQuaternionToAxisAngle(&q, &axis, &angle);
angle = D3DXToDegree(angle); // ほぼ30ね。
002827
2009/03/01(日) 17:27:43D3DXMATRIX m, n;
D3DXMatrixRotationY(&m, D3DXToRadian(20));
D3DXMatrixRotationY(&n, D3DXToRadian(50));
D3DXQUATERNION qm, qim, qn;
D3DXQuaternionRotationMatrix(&qm, &m);
D3DXQuaternionRotationMatrix(&qn, &n);
D3DXQuaternionInverse(&qim, &qm);
D3DXQuaternionMultiply(&q, &qim, &qn);
D3DXVECTOR3 axis;
float angle;
D3DXQuaternionToAxisAngle(&q, &axis, &angle);
angle = D3DXToDegree(angle);
0030デフォルトの名無しさん
2009/03/01(日) 22:56:49今やっているのですがどうも片方しかできなくて。。。
0031デフォルトの名無しさん
2009/03/01(日) 23:03:18{
// 演奏中であれば戻る
if(m_performance->IsPlaying(m_segment[index], NULL) == S_OK) {
return E_FAIL;
}
m_performance->PlaySegmentEx(m_segment[index], NULL, NULL, 0, 0, NULL, NULL, NULL);
return S_OK;
}
楽曲を3つ読み込ませて再生させているのですが
1を再生中に2を再生すると1が消えてしまいます
原因エスパーしてもらえませんか;;
0032デフォルトの名無しさん
2009/03/01(日) 23:16:13使い方を確認しない?
0033デフォルトの名無しさん
2009/03/01(日) 23:42:15要するにDirectMusicは
プライマリ セグメントは、一度に 1 つだけ演奏できる。再生のためにプライマリ セグメントを挿入するときは、演奏中のセグメントが終わった後でそのセグメントを演奏するように指定したり、現在のプライマリ セグメントを置き換えたりすることができる。
一方、セカンダリ セグメントは現在のプライマリ セグメント上で演奏され、任意の数のセカンダリ セグメントを同時に演奏できる。
DirectSoundはDirectMusicみたいにしなくても普通に同時に再生できるってことでしょうか?
(入力フォーカスが移動する際に、アプリケーションはバッファの再生と停止を繰り返す必要はない。)
0034デフォルトの名無しさん
2009/03/02(月) 06:50:45DirectSoundは波形を直截保持しているからDierectMusicのように面倒なことをしなくても
同時に再生できるよ。
0035デフォルトの名無しさん
2009/03/02(月) 11:17:18ついで
>>9>>11
スタティックな頃には、Xファイル周りで致命的なバグがあるのでやめたほうがいいです
でかいXファイルを読むとメモリー破壊されます(DirectX付属のサンプルソースですら)
0036デフォルトの名無しさん
2009/03/02(月) 12:04:45頂点単位で?それともテクニック単位で?
0037デフォルトの名無しさん
2009/03/02(月) 13:26:09お返事ありがとうございます。
どちらでも構いません。
できれば双方教えていただいてよいでしょうか?
0038デフォルトの名無しさん
2009/03/03(火) 08:50:330039デフォルトの名無しさん
2009/03/03(火) 09:03:47テストでDirectMusicクラス(oggをwaveに変換してDirectMusicで再生)を
統括しているクラスをコンストラクタ・デストラクタを繰り返していたのですが、
20回に1度くらいの割合でデストラクタ時に落ちてしまいます
デバックしたのですが
http://appleloader.bbsnow.net/pic_loader/nomal/html/1_12.html
のような結果が出て調べたのですがお手上げです・・・
ソース上げたのでよろしければ見ていただけませんか
http://www7.uploader.jp/dl/inoguma/inoguma_uljp00003.zip.html
GameLib.h
_Lib_DXMusic.cpp
GameTitle.cpp
に書いてあると思います
よろしくお願いします
004035
2009/03/03(火) 11:57:44どなたかわかる方いらっしゃいましたら、アドバイスお願いいたします
0041デフォルトの名無しさん
2009/03/03(火) 12:52:25半透明用テクニック、加算合成用テクニックを作るとかじゃだめなの?
0042デフォルトの名無しさん
2009/03/03(火) 13:20:39お返事ありがとうございます。
HLSLのテクニック定義の部分でレンダリングステートが変更できるのですか?
その方法が、まさに知りたかったものだと思われます。
technique Test
{
pass P0
{
VertexShader = (vsTexture);
PixelShader = (psTexture);
}
pass P1
{
VertexShader = (vsNoTexture);
PixelShader = (psNoTexture);
}
}
現状こんな書き方なのですが、レンダリングステートを書き換える記述法(が書いてあるMSDNのページとかでもいいです)を教えていただけないでしょうか。
よろしくお願いします
0043デフォルトの名無しさん
2009/03/03(火) 13:23:26テクニック内でやればいいんじゃないか?というのをヒントにしてMSDNを
探し回ったところ、即座に
http://msdn.microsoft.com/ja-jp/library/cc373171.aspx#
こういうページを発見することができました。
ありがとうございました。
0044デフォルトの名無しさん
2009/03/03(火) 14:06:19自分もその辺やろうとしてたんで探してみたけど、これとか?
0045デフォルトの名無しさん
2009/03/03(火) 15:41:42素晴らしい、それでそれです。
一覧表がないなーと思いながら、C#版とかで「どうやらC#版の設定プロパティと名前が一緒らしいな」とか推測しながらいじってましたw
これで、描画周りが完全にプログラムから切り離せました。
嬉しい。
0046デフォルトの名無しさん
2009/03/03(火) 16:24:45MDXを勉強中のプログラマ(C++/C#)です。今は土日の趣味でやってます。
MDXは情報が少ないため、UnmanagedかXNAに移行を考えていまが以下の点で悩んでいます。
Unmanage C++がめんどい
XNA フレームワーク導入めんどい
出来ればMDX2.0リリースか、XNAがOS標準搭載にならないかと・・・
Xbox用途以外ではUnmanagedに進むのが妥当なのでしょうか?
同じような経験された方、最終的にどうされましたか?
0047デフォルトの名無しさん
2009/03/03(火) 16:28:09別によっぽどカリカリにチューンしたゲームを作りたいってことでもなきゃ、XNAでいいんじゃない?
ただ、それを不特定多数に売ったり、配ったりするつもりなら、XNAの実行環境のインスコを促すのは敷居がかなり高いとだけ。
004846
2009/03/03(火) 16:37:06早々のレスどうもです。
やっぱりXNAは敷居高いですよね。OSというかDirectXに標準搭載されれば敷居が低いのですが・・・
どうもありがとうございます。自分もUnmanaged方針に変えます。
0049デフォルトの名無しさん
2009/03/03(火) 20:56:10楽しいぞ
005046
2009/03/03(火) 21:39:14いや〜個人的にはそうなんですよね。C++/CLIでUnmanaged。
ただ、将来的に業務用ツール用にDirectX検討しているんですが、
フレームワーク導入は敷居が・・・(.net or vistaですら厳しい!DirectXって何って感じです。)
元Javaな人にはC#しか・・・
なんでもないです。愚痴ってすいません。
0051デフォルトの名無しさん
2009/03/03(火) 23:19:32MDX自体は情報少ないけど、DirectX/C++からの脳内翻訳が効くし、
メモリリーク云々を考えるとマネージは外せないという結論に至った。
どうしても情報が無くて困った時はグーグルのコードサーチを使うといいよ。
web検索で2件とかしかでてこないような情報でもそれを使用したソースが
ズバリでてくる。ただライセンスには注意な。
005246
2009/03/03(火) 23:30:31レスサンクスです。
私も苦労の末(?)Unmaged脳内変換が出来るようになりました。
たいていは同じような書き方なのでなんとか。ほんと無駄な技術。
メモリリーク面倒ですよね。やっぱりC#楽ですよね・・・
ありがとうございます。けど10&11を見据えてUnmanagedがんがります。
0053デフォルトの名無しさん
2009/03/04(水) 00:52:59ネットで見つけてきたコードは高確率で訴訟用に公開してる。このへんは誰でも気づくんだけど
注意しなきゃいけないのは元コードを自演転用で無料公開してる場合があるということ
0054デフォルトの名無しさん
2009/03/04(水) 07:56:15メモリリークなんて起きるときは大抵どっかがおかしい
おかしいのに無理に進むと余計におかしくなる
別にメモリリークを解決してくれてるわけじゃなくて
単に落ちないだけだろ
0055デフォルトの名無しさん
2009/03/04(水) 08:11:470056デフォルトの名無しさん
2009/03/04(水) 09:17:40ちょっとDirectXと離れるかもしれんが
shared_ptr
CComPtr
を使った上でメモリーリークするのか?
この2つを使えば、メモリーリークなんて(循環参照くらいしか)ないだろう。
もし何かミスって出したとしても、DirectXまわりはデバッガがリーク量を丁寧に出してくれるし
通常のメモリーについても
http://marupeke296.com/TIPS_No7_SearchMemoryLeak.html
これで超簡単表示
C++はメモリー管理が〜とかいう人のほとんどは、shared_ptrとかそういうほぼ標準ともいわれているライブラリ群を知らないだけに思える
0057デフォルトの名無しさん
2009/03/04(水) 09:28:19ほぼ標準と標準の間には大きな隔たりがあるんだぜ。
まずboostのインストールをしなきゃならん。
0058デフォルトの名無しさん
2009/03/04(水) 09:40:03それが嫌だとしても、shared_ptrもCComPtrもテンプレートだから、単体ヘッダファイルを持ってきてincludeすればおしまい
もちろん標準とほぼ標準には雲泥の差があるが、リークが嫌なら5分くらいの手間はかけようよw
0059デフォルトの名無しさん
2009/03/04(水) 10:06:08shared_ptrも万能ではないしまずはリークの検出修正が出来るように腕の磨くべき。
主観的にはboostみたいな非標準のものは出来る人間が楽をするために使うべきだと思う。
0060デフォルトの名無しさん
2009/03/04(水) 11:28:15oggをwaveに変換してセカンダリバッファにデータに渡したあと
一時的なデータを保持していた変数をSAFE_DELETE()してないからメモリがスタックしてるんじゃないか?
0061デフォルトの名無しさん
2009/03/04(水) 11:48:56そんな「C++を使いたいなら、まずは基礎力をもっとつけろやwwww」みたいな排他的な姿勢はアホくさい。
C++自体、メモリーリークするわ、GCないわ、スレッドが言語標準じゃないわと「今どきの言語」に比べたら貧弱。
継承されるクラスのデストラクタにはvirtualをつけるのがお約束!なんていうくだらない「お約束」も大量にある。
それを「使う人間の基礎力が〜」とかに転嫁してどーする
0062デフォルトの名無しさん
2009/03/04(水) 11:52:150063デフォルトの名無しさん
2009/03/04(水) 11:58:48それともDirectXのみ初心者で、プログラム技術自体は高い人間しか質問しちゃいけないのかっていう
0064デフォルトの名無しさん
2009/03/04(水) 12:10:35ただし別のスタンスで回答する奴もいる。
いちいち噛み付いて迷惑するのは質問者なんだよ。
0065デフォルトの名無しさん
2009/03/04(水) 12:11:36技量が無いなら使い手側に何のメリット無い、より高水準な言語を使っていればいい
0066デフォルトの名無しさん
2009/03/04(水) 12:27:340067デフォルトの名無しさん
2009/03/04(水) 12:39:17お前の話はつまらん!!
0068デフォルトの名無しさん
2009/03/04(水) 12:54:51APIの機能でカーソルの位置を調べて前のフレームとの差を取る方法だとカーソルが画面の端に来た時に移動しなくなって困るので
DirectInputを使おうと思ってるんですが、これAPIでは解決できませんか?
0069デフォルトの名無しさん
2009/03/04(水) 14:13:011フレームごとにSetCursorPosで画面の真ん中に移動させれば大体の用は果たすと思うが。
0070デフォルトの名無しさん
2009/03/04(水) 14:27:34ありがとうございます
その方法でやってみます
0071デフォルトの名無しさん
2009/03/04(水) 14:37:06このサイトにあるDirectMusicによるogg再生のプログラムで
oggからwaveに変換した後セカンダリバッファに書き込むのですが
MidiとWaveの再生 / 終了処理と同じ処理をし、確保したメモリを解放します。
/* #define SAFE_RELEASE(p) if(p){p->Release();p=NULL;} */
SAFE_DELETE( lpWaveData );
とあるのですが
waveに変換してセカンダリバッファに書き込んだ後SAFE_DELETE()ではいけないのですか?
実際になってみたら落ちました
0072デフォルトの名無しさん
2009/03/04(水) 14:38:140073デフォルトの名無しさん
2009/03/04(水) 15:41:08容量多いファイル再生すると落ちるよ・・・
そんなんも知らないの?
0074デフォルトの名無しさん
2009/03/04(水) 16:10:400075デフォルトの名無しさん
2009/03/04(水) 16:20:420076デフォルトの名無しさん
2009/03/04(水) 20:42:11このスレの方々はどうやってますか?
0077デフォルトの名無しさん
2009/03/04(水) 21:03:05このEffectEditに相当するツールが、最新のSDKには入っていない気がするのですが
別名になって存在するのでしょうか?
それとも古いSDKからもってこないとダメでしょうか?
007846
2009/03/04(水) 23:09:18皆さん色々アドバイスありがとうございます。
Boostとか非標準は会社での導入は難しいですね・・・規約を含めた運用変えるのに年単位でかかります。
個人ならOKでも、チームや部門では色々大変なのです。
9x,NT->2000,XP->2003sとかですでにてんやわんやなんで。
(ある程度の規模の会社はどこも同じとおもいますがw)
もしかして純粋なソフトウェアハウスさんなら違うのかな?
CComPtrは知らなかったので調べてみます。
激しくスレチになるでこれで失礼します!
今日は雪がまた降って大変でした。
0079デフォルトの名無しさん
2009/03/04(水) 23:35:08VCとかVBとかBCBとか。
0080デフォルトの名無しさん
2009/03/04(水) 23:38:100081デフォルトの名無しさん
2009/03/04(水) 23:55:52値段的にもランクがあると思うんだけど、なんでも大丈夫かな?
高いのは購入できないので。
0082デフォルトの名無しさん
2009/03/05(木) 00:01:02その 0 が頂点なのだと理解するのに時間がかかりました。
教えて下さりありがとうございます。
http://www1.axfc.net/uploader/File/so/19255.zip
それでまた質問なのですが、
分割した画像をポリゴンで並べたら境目が出来てしまいました。
これを綺麗に表示するにはどうしたら良いのでしょうか?
0083デフォルトの名無しさん
2009/03/05(木) 00:23:30Express editionでぐぐれ。 無料版がある。
つーかBCBは今となっては古いマイナー標準準拠度悪の三重苦なので、
DirectX抜きにしてもさっさとVCに乗り換えた方がいい。
ちなみに言語にこだわらないならたぶんC#とかの.NET系言語から呼び出す方が楽だと思う。
0084デフォルトの名無しさん
2009/03/05(木) 00:29:49.NETって作ったアプリをインストールする環境にもフレームワークのインストールが必要ですよね?
ランタイムは極力不要な状態にしたいんだけどC#も似たような感じかな?
BCBはダメなのか。扱いやすいから気に入ってたんだけど残念。
0085デフォルトの名無しさん
2009/03/05(木) 00:34:21テクスチャフィルタが掛けてあるから縁にアンチエイリアスがかかってる
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT );
としてフィルターを切るか
これだと拡大時に画像が荒くなるののでそれが嫌なら元画像にもよるけど
テクスチャアドレッシングモードを
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP );
とすれば消えるかもしれない
プロジェクトが入ってないからコンパイルしてないので結果は自分で見てね
0086デフォルトの名無しさん
2009/03/05(木) 00:47:34こんな方法があったとは…、まさにビンゴです。
テクスチャの端を使わなかったり色々やってみたのですが、
上手くいかなかったので本当に助かりました。
0087デフォルトの名無しさん
2009/03/05(木) 03:31:51#pragma comment( lib, "dxerr.lib" )
#pragma comment( lib, "dxguid.lib" )
#pragma comment( lib, "d3d9.lib" )
#if defined(DEBUG) || defined(_DEBUG)
#pragma comment( lib, "d3dx9d.lib" )
#else
#pragma comment( lib, "d3dx9.lib" )
#endif
#pragma comment( lib, "winmm.lib" )
と入れとくと見てくれる率があがるかもしれない
0088デフォルトの名無しさん
2009/03/06(金) 00:14:30ps_1_x is no longer supported
というエラーが出てしまいます。
DirectX9.0ではすでにps1.xがサポート外になっているのは知っているのですが、
作っているゲームは古いグラボでも動けるようにしたいものです。
この場合、
PixelShader = compile ps_2_0
と書いたHLSLファイルと
PixelShader = compile ps_1_1
と書いたHLSLファイルを両方用意しておかなければならないのでしょうか?
0089デフォルトの名無しさん
2009/03/06(金) 00:46:440090デフォルトの名無しさん
2009/03/06(金) 01:10:12でE_FAILが返り、pDescに何も代入されずに返ってきます。
この場合どういう原因が考えられるでしょうか?
0091デフォルトの名無しさん
2009/03/06(金) 01:17:48D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY
009290
2009/03/06(金) 01:49:17返ってます。その後D3D10_EFFECT_DESCを取得して中身をみてみると全てのメンバーが0でした。FXファイルを
fxc.exeでコンパイルしてみると、mainエントリーがないといわれます。なので文法的には問題ないと
おもっているのですが、、
こういう場合どうすればよいでしょうか?
0093デフォルトの名無しさん
2009/03/06(金) 01:52:12009490
2009/03/06(金) 02:36:10FXファイルのエンコーディングに原因があったようなのですが、よくわかりませんでした。
同じ内容のFXファイルを用意して、日本語のコメントを全部消してセーブして読み込ませたところ
問題なく動作しました。それまでは日本語のコメントが山ほど入っており、それをセーブする際には
ユニコードでセーブするか?と聞かれてYESを選択してました。
これからはFXファイルに日本語コメントを使わないようにしようと思いますが、いったんFXファイルを
ユニコードでセーブした後変更する方法が分からないのと、いまいちなにが問題なのか良く分からないので、
どなたか理由がわかる方いらっしゃったら教えてください。
ありがとうございました。
0095デフォルトの名無しさん
2009/03/06(金) 10:01:270096デフォルトの名無しさん
2009/03/06(金) 11:57:280097デフォルトの名無しさん
2009/03/06(金) 14:16:200098デフォルトの名無しさん
2009/03/06(金) 14:18:41>>91
ありがとうございました。
情報があまりになく、英語MSDNまで調べにいくことになりました。日本語MSDNにすらのってないですね。
これを考えると、常に「なるべく最新のPS、VSとしてコンパイルしたい」という気がしますね。
同じコードでも、ps11としてコンパイルするのと、ps20としてコンパイルするのでは吐かれたコードの効率が違いましたし。
そういうオプションもないかな?と思い探してみましたが、無いようです。
みなさんはVS20, PS20の決め打ちでHLSLを書いているのでしょうか?
0099デフォルトの名無しさん
2009/03/07(土) 02:22:42なくしてしまうと
Device->ClearDepthStencilView()
というコードが例外を出します。ID3D10DepthStencilViewをReleaseしようとしても
だめなようです。ID3D10DepthStencilViewをReleaseする前にチェックしないとだめなことって
どんなことがあるでしょうか?
0100デフォルトの名無しさん
2009/03/07(土) 02:28:10家のパソコンはネットにつながっていないのですが、
買ってきたゲームがDirectX9以上が必要と書いてありました。
漫画喫茶で落としてインストールしようと思ったんですができません。
何か方法ありますか?
0101デフォルトの名無しさん
2009/03/07(土) 02:46:13スレ違い
通常のインストーラはWebインストーラなので
DirectX End-User Runtimes (November 2008)を漫画喫茶で落として来い
もう二度と来るなよ
0102デフォルトの名無しさん
2009/03/07(土) 02:46:36本体をおとしてください
0103デフォルトの名無しさん
2009/03/07(土) 05:41:090104デフォルトの名無しさん
2009/03/07(土) 09:53:280105デフォルトの名無しさん
2009/03/07(土) 10:07:31ただしソースは無い(あるけど記事に沿ったものはない)
そこを読みながら
結局SDKのサンプルのSkinnedMeshを1ステップずつデバックしながら
どこで何をやってるのか地道に理解するのが一番の早道
0106デフォルトの名無しさん
2009/03/07(土) 11:15:44どの順番でどの変数に何が読み込まれているのかをじっくり追っていけば
そんなに難しいもんじゃない
0107デフォルトの名無しさん
2009/03/07(土) 12:11:27AlphaBlendEnable = TRUE;
SrcBlend = SRCALPHA;
DestBlend = INVSRCALPHA;
このようにした場合、色成分はアルファ値に応じた混合がなされるのは分かるのですが、
混合結果後のアルファチャンネルの値はどのようになるのでしょうか?
現在のレンダリング結果に対し、過去のレンダリング結果の蓄積をアルファ合成し続ける
フィードバックエフェクト(残像っぽくなるやつで過去のアルファ値は0.5f〜0.9f)をしていると、
もともとがアルファ値1.0fのピクセル同士の混合後のアルファ値が1.0fではなく、少し低くなって
0.8fかそこらへんに下がってしまい、若干暗い絵になってしまいます。
0108デフォルトの名無しさん
2009/03/07(土) 12:39:480110デフォルトの名無しさん
2009/03/08(日) 15:36:041>LINK : fatal error LNK1104: ファイル 'd3dx9.lib' を開くことができません。
といったエラーが表示されます
サブシステムのパスは通しています
・インクルードファイル
C:\Program Files\Microsoft DirectX SDK (April 2007)\Include
C:\Program Files\Microsoft Platform SDK\Include
・ライブラリファイル
C:\Program Files\Microsoft DirectX SDK (April 2007)\Lib
C:\Program Files\Microsoft Platform SDK\Lib
ちなみにApril 2007となっているのは雑誌と同様にしているからです
0111デフォルトの名無しさん
2009/03/08(日) 15:40:21実際にそのフォルダ見てみればいいじゃない。
環境によるかもしれないが、その下にx86って無いか?
0112デフォルトの名無しさん
2009/03/08(日) 16:09:55Microsoft DirectX SDK (November 2008)、DirectX9 を使って開発を行っています。
ところで、作ったアプリを動かすための必要環境を、「9.0c 以上」 ではなく 「9.0 以上」 まで下げたいのです。
どうすればこのアプリは、確実に 「必要環境: 9.0 以上」 と言えるようになるのでしょうか?
たとえば、ピクセルシェーダ 3.0 を使ってしまうと 9.0c が必須になりそうなので 2.0 を使ったり、などはしています。
ですが、他の機能となると、どこまで使っていいのかが分かりません…。
SDK のバージョンを落とせばいいのかな?とも思ったのですが、どこまで落とせばいいのかも分からないし、
古すぎる SDK は簡単には手に入らないので、これも何か違っている気がします。
よろしくお願いします。
0113デフォルトの名無しさん
2009/03/08(日) 16:12:340114デフォルトの名無しさん
2009/03/08(日) 16:58:27探せば簡単に見つかる
0115デフォルトの名無しさん
2009/03/08(日) 16:59:450116デフォルトの名無しさん
2009/03/08(日) 17:21:49ありがとうございました。
0117デフォルトの名無しさん
2009/03/08(日) 17:33:123つも4つもインストールしてるんだぜ・・・
0118デフォルトの名無しさん
2009/03/08(日) 17:34:55ターゲットOSを明確にした上での選択なのか甚だ疑問。
0119デフォルトの名無しさん
2009/03/08(日) 17:44:06下のサポートを考慮するならDirectX7やDirectX8を考慮するべし。
0120デフォルトの名無しさん
2009/03/08(日) 18:02:25WindowsXPのSP2以降と明記しておけばいいだけ。
それ以前なら既にセキュリティパッチが打ち止めになっていて、
SPすら入れない奴をそもそもサポートする必要性もない。
0121デフォルトの名無しさん
2009/03/08(日) 18:31:22<聞きたいこと>
環境によって、表示される画像が1ドット多く表示される32ピクセル表示する命令なのに、33ピクセル表示される感じ。
なぜ、これがおこるのか?
この現象の回避方法は?
<詳細>
Vistaで2Dゲームを作成しています。
512×512のビットマップのうち、座標(0,0)から32×32のサイズの部分が画面の背景で、その32×32のサイズを画面に繰り返し描画しています。
開発マシン(Vista:解像度1280×800)では正常に表示されますがテストマシン(XP:解像度1024×768)で表示すると1ピクセル余計に画像が表示されていてしまいます。
開発はDiretX9で、表示はID3DXSprite::Drawでおこなっています。
下みたいな感じ
g_pSprite->Begin();
g_pSprite->Draw(pTexture,
&rect, //表示範囲
&D3DXVECTOR2(scale_x,scale_y), //拡大率
NULL,g_rotation, //回転
&D3DXVECTOR2(F(x),F(y)),
D3DCOLOR_XRGB(255,255,255)
);
g_pSprite->End();
変数とかは察してください(笑)
もし、なにかお分かりの方がいらっしゃれば、ぜひ、ご教授願います。よろしくお願います m(..)m
0122デフォルトの名無しさん
2009/03/08(日) 18:43:420123112
2009/03/08(日) 18:53:21諸事情で DirectX9 は是非使いたいのです。
Windows2000 以降対応にしたいのですが、2000 には初期状態で 7.0 しか入っていないので、DirectX のインストーラは同梱させる予定です。
ただ、2000 には 9.0c はインストールできないと聞いたことがあるので、9.0 で動くようにしたかったのです。
このあたりの情報は検索してもなかなか見つからなくて…正直自信ないです。
0124121
2009/03/08(日) 19:02:06一応みました。
ぐぐったりもしましたが、原因が分からず
質問させていただきました
0125デフォルトの名無しさん
2009/03/08(日) 19:16:479.0cは2000どころかD3DXのバージョンによっては98SEとかでも動くんだが。
0126デフォルトの名無しさん
2009/03/08(日) 20:52:462kのは大分出回ったみたいだし
0127デフォルトの名無しさん
2009/03/08(日) 20:56:59見るんじゃなく、一つ一つ動かして動作を確認しろ。
話はそれからだ。
0128121
2009/03/08(日) 22:07:38ひとつだけ、教えてください。
わたしが、示したコードはおかしなところがありますか?
わたしはおかしくないつもりだったのですが、
わたしのコードがおかしいから、動作を確認しろと
アドバイスをいただいているのかどうか、気になっています。
0129デフォルトの名無しさん
2009/03/08(日) 22:44:49たぶん描画部分以外の問題の希ガス
あとID3DXSpriteは内部でレンダリングステートや
テクスチャーステージを勝手に変更してたりするから実際に見ないとたぶん分からん
0130デフォルトの名無しさん
2009/03/09(月) 00:50:29ありがとう
0131デフォルトの名無しさん
2009/03/09(月) 01:21:33スクリーンショットとって大きさ計ってみた?
0132121
2009/03/09(月) 10:12:40>129
勝手にサイズを変えるんですか、なるほどです。
今出先でソース晒せないので家に帰ったら晒します
>131
いいえ、計っていません。こちらも家に帰ってから計ってみます!
0134デフォルトの名無しさん
2009/03/09(月) 11:42:400135デフォルトの名無しさん
2009/03/09(月) 11:51:02いまいち用途がわかりません。
0136デフォルトの名無しさん
2009/03/09(月) 11:52:590137デフォルトの名無しさん
2009/03/09(月) 11:54:55αブレンドと言われても全然わからない自分は、まだまた勉強不足ということですね。
0138デフォルトの名無しさん
2009/03/09(月) 12:01:010139デフォルトの名無しさん
2009/03/09(月) 17:23:53画面全体を揺らすプログラムを組みたいんですが、そういうサンプル無いでしょうか。
このAPI使えるよとかでも構いません。
表示してるテクスチャをすべて同時に動かすぐらいしか思い付かなかったんですが、
皆さんどんな感じで実装してるんでしょうか。
ドラクエでダメージを受けると画面が揺れますが、あんなかんじの演出を考えてます。
よろしくお願いしますm(__)mペコ
0140デフォルトの名無しさん
2009/03/09(月) 17:29:39ウィンドー全体を揺らしちゃえよ
フルスクリーンでは無理だが
0141デフォルトの名無しさん
2009/03/09(月) 18:30:36回答ありがとうございます。なるほど!参考になります。
フルスクリーンは、、、そうっすね。
0142デフォルトの名無しさん
2009/03/09(月) 21:10:29バックバッファの内容全体を揺らせばいいんじゃないの?フルスクリーンとかも関係ないじゃん。
0143デフォルトの名無しさん
2009/03/09(月) 21:16:24表示してるテクスチャをすべて同時に動かすでいいんじゃね?
0144デフォルトの名無しさん
2009/03/09(月) 22:23:06他のエフェクトと兼用できるし
0145デフォルトの名無しさん
2009/03/09(月) 22:27:240146デフォルトの名無しさん
2009/03/09(月) 23:55:190147デフォルトの名無しさん
2009/03/09(月) 23:59:28そういう処理やりたいなら全体をまとめて揺らすよりも、個別で表示位置変える方が融通効くんじゃないの?
逆に文字だけは揺らしたくないとかってケースもあると思うけど
0148121
2009/03/10(火) 00:12:18スクリーンショット撮ってサイズを測ってみました。
結果、サイズ自体はただしかったです。
つまり、正しく32ピクセル表示しているのに
画像のサイズが少し小さくなって、33ピクセル分
表示されている感じでした。
テクスチャをロードした時に、すこし小さくなっているのでしょうか・・??
0149デフォルトの名無しさん
2009/03/10(火) 00:15:530150デフォルトの名無しさん
2009/03/10(火) 00:16:54>>82,85
0151139
2009/03/10(火) 00:40:06揺らしたことないからテクスチャに描画して動かす方法で感じ掴んでみるー。
0152デフォルトの名無しさん
2009/03/10(火) 01:20:40ID3DXSpriteはBigenで現在設定してるレンダリングステートを保存して
スプライト用に書き換えてから描画し
Endで保存したステートを復元している
たしか自動でフィルターもONになってたはず
スプライト->Beginのパラメーターで変更しないように出来たはずだが
ID3DXSpriteはあんまり使ったこと無いので嘘かも
ソース上げてくれたらチェックするが
0153121
2009/03/10(火) 01:47:31やはり、フィルターの設定だったようです。
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT );
g_pd3dDevice->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT );
を付け加えることで、正しく表示ができました。
正直、まだ、半分くらいしか理解できていないので
これから、もっと精進して勉強していきます!
ちなみにみなさんは、どうやって知識を蓄えて行かれたのですか?
やっぱり地道にMSDNとかでしょうか?
ずばっと答えて下さるみなさんにあこがれちゃいます
0154デフォルトの名無しさん
2009/03/10(火) 05:14:53これだけ見ればOKみたいなサイトや書籍は存在しないので
基本は色んな場所から良いと取りすることになるんだけど
なにが「良い」のかを判断できるようになるにはやっぱり経験が必要
結局はいろいろ失敗しつつも自分であれこれいじっていくしない
0155デフォルトの名無しさん
2009/03/10(火) 11:09:520156デフォルトの名無しさん
2009/03/10(火) 20:22:35ウインドウモードで起動し、ウインドウサイズを拡大していくと、フォントやGUI部分は同じ大きさなのに
モデルやスプライト等のサイズのみ大きくなっていくのですが、これはフレームバッファのサイズ自体が変化していくということでしょうか?
0157デフォルトの名無しさん
2009/03/10(火) 22:15:44頂点変換掛けてるものは射影行列が同じな限り
画面に対しての比率は常に一定、つまり画面が大きくなれば大きくなる
0158デフォルトの名無しさん
2009/03/10(火) 22:39:560159デフォルトの名無しさん
2009/03/10(火) 22:48:070160デフォルトの名無しさん
2009/03/10(火) 22:55:48想定しているシステムのスケルトンプログラムを提出してくれたら
それにあった奴を書いてやるよ
使用目的も分からないとSDKのサンプルみたいな煩雑なコードになるから
0161デフォルトの名無しさん
2009/03/10(火) 23:01:15いいサンプルがSDKにはいってんべ
0162デフォルトの名無しさん
2009/03/10(火) 23:07:43{
D3DXVECTOR3 position; // 頂点の 3D 位置。
D3DXVECTOR3 normal; // 頂点のサーフェイス法線。
};
の頂点のサーフェイス法線の意味がわかりません。
お願いします
0163デフォルトの名無しさん
2009/03/11(水) 00:17:44描画ループの順番はどうしたらよいでしょうか?
while(true) {
pParent->Clear(ARGB);
pParent->Begin();
...
pParent->End();
pParent->Present();
pChild->Clear(ARGB);
pChild->Begin();
...
pChild->End();
pChild->Present();
}
上記のようにするべきなのか、それとも
pParent->Clear();
pChild->Clear();
pParent->Begin();
pChild->Begin();
このようにするべきでしょうか?
0164デフォルトの名無しさん
2009/03/11(水) 00:45:400165デフォルトの名無しさん
2009/03/11(水) 00:47:34>>159
フレームバッファサイズが変わってそれに合わせて頂点変換されてるものの表示サイズも変わるってことでしょうか?
フレームバッファサイズを固定したままウィンドウサイズを変えることってできないでしょうか?
例えば、DXUTCreateDevice()で640x480のフレームバッファ、ウィンドウサイズを持つアプリを作り
それをマウス操作でウィンドウサイズを拡大、このときにフレームバッファサイズを固定したまま引き伸ばして
ウィンドウの形状の拡大させたいのです
0166デフォルトの名無しさん
2009/03/11(水) 00:58:220167デフォルトの名無しさん
2009/03/11(水) 01:46:03640x480で起動直後はこのようになります
http://nagamochi.info/src/up30411.jpg
これのウィンドウサイズを拡大すると、こんな感じに
http://nagamochi.info/src/up30412.jpg
これをこのような形で拡大させたいのです
http://nagamochi.info/src/up30413.jpg
拙い説明ですみません。
0168デフォルトの名無しさん
2009/03/11(水) 02:02:38DXUTの中身をいじれば出来るけどそれが出来たらこんな質問でないよね
荒業としてはUI部分だけ別のレンダリングターゲットに描画して後から合成とか
0169デフォルトの名無しさん
2009/03/11(水) 02:16:44BassicHLSLからコールバックで登録したOnResetDeviceが呼ばれて
そこでGUI部分の表示位置、サイズを修正してる感じかでしょうか?
ここのバックバッファサイズをクライアントサイズに変更する箇所を無くすと
画面自体はhttp://nagamochi.info/src/up30413.jpgになったのですが、
GUIコントロールの位置が表示されてる場所からずれてしまいました(ずれたのは表示位置の方なのですが)
0170デフォルトの名無しさん
2009/03/11(水) 02:36:39OnResetDevice内でバックサーフェイスのサイズにあわせて
SetLocationしなおしてるから
そこを消せばOKなんじゃない?
0171デフォルトの名無しさん
2009/03/11(水) 02:54:36ID3DXFont::DrawText
すると、文字の下と右っかわに
変なわくみたいな線がとぎれとぎれに出ます?
なぜ〜〜〜????
0172デフォルトの名無しさん
2009/03/11(水) 11:07:34煽りでもなんでもなく、ほんとにサンプルに入ってるやつをぶっこぬくのが一番いい。
腐ってもマイクソといった感じの、すごいいいソースだった
0173デフォルトの名無しさん
2009/03/11(水) 12:32:16Direct3D9のボリュームテクスチャに、GPUで直接レンダリングする方法が分かりません
ボリュームから特定の軸で分割したサーフェイスが取得できると思っていたのですが
マニュアルを見てもサーフェイスを取得する方法が分かりません
Direct3D10でのやり方は分かるのですが、もしかしてDirect3D9では出来ないのでしょうか?
0174デフォルトの名無しさん
2009/03/11(水) 12:42:410175デフォルトの名無しさん
2009/03/11(水) 12:58:47ワロタwww
0176デフォルトの名無しさん
2009/03/11(水) 13:04:340177デフォルトの名無しさん
2009/03/11(水) 13:09:220178デフォルトの名無しさん
2009/03/11(水) 13:10:160179デフォルトの名無しさん
2009/03/11(水) 13:11:250180デフォルトの名無しさん
2009/03/11(水) 13:14:15http://pc11.2ch.net/test/read.cgi/gamedev/1234296058/
0181デフォルトの名無しさん
2009/03/11(水) 13:30:400182デフォルトの名無しさん
2009/03/11(水) 13:57:06ボリュームテクスチャをレンダーターゲットにしたいってこと?
0183デフォルトの名無しさん
2009/03/11(水) 14:44:390184デフォルトの名無しさん
2009/03/11(水) 19:01:21砂時計になったりするとそのままだよね
これを矢印の状態にするにはどうすればいいでしょうか?
0185デフォルトの名無しさん
2009/03/11(水) 19:30:300186デフォルトの名無しさん
2009/03/11(水) 20:08:45今はID3DXSpriteを使ってPNGファイルを表示させているんですが
同時に同じ画像を反転させて元の画像の下に表示させてさらにグラデーションをかけたいです。
イメージとしてはこんな感じ。(サンプルは文字になってますけど)
http://www2.uploda.org/uporg2081830.png
スプライトを反転させて元スプライトの下に表示まではできたんですけど
グラデーションをかけることができません。
どうやったら実現できるか識者の方、知恵を貸してください。。。
0187デフォルトの名無しさん
2009/03/11(水) 20:10:390188デフォルトの名無しさん
2009/03/11(水) 20:17:110189186
2009/03/11(水) 20:20:45基本が全然わかってないです。。。
> 187
スプライトっていうかID3DXSpriteインターフェイスを使って画像を表示させてます。
この表示させてる画像にグラデーションがかけて表示することができるのかなって質問です。
> 188
ID3DXSprite使っちゃできないってことですか?
0190デフォルトの名無しさん
2009/03/11(水) 20:27:18少しでも特殊なことしたいならID3DXSpriteはやめるべき
0191デフォルトの名無しさん
2009/03/11(水) 20:32:13マジですか、ありがとうございます。
0192デフォルトの名無しさん
2009/03/11(水) 21:35:44SetLocationしなおさないとそれはそれで位置がずれてしまいました
DXUTgui.cpp内で参照されるマウスの位置にフレームバッファサイズとウィンドウサイズの比率分オフセット噛ますって方法で
強引な気はするのですが、対処できそうです、ありがとうございました。
0193デフォルトの名無しさん
2009/03/11(水) 22:49:29オブジェクト全てにカメラの設定をしているように見えて理解できないんです
世界中の全てのものを見えてようが見えてなかろうが視点の設定をするのってものすごく無駄じゃないですか?
0194デフォルトの名無しさん
2009/03/11(水) 22:51:330195デフォルトの名無しさん
2009/03/11(水) 22:51:520196デフォルトの名無しさん
2009/03/11(水) 23:21:13画面に表示されているイメージなんだろうけど
3Dの世界では
ある位置にカメラがあると仮定したときに
全ての物体に対してそれがカメラに対してどの位置にあるかを計算して
さらにそれを2Dのスクリーンに投影したときにどうみえるかを計算して
初めて画面に描画することができる
ビデオみたいに光学で観測した結果を描画してるわけじゃない
0197デフォルトの名無しさん
2009/03/11(水) 23:30:24オブジェクトをパッキングしてカメラを移動させるだけに作りかえるようなことは普通しないですか?
もしやめたほうがいいならやめます
オブジェクト毎に視界に入ってるかどうかをを判断させた後に入っているもののみビュー行列変換するであってますか?
0198デフォルトの名無しさん
2009/03/11(水) 23:33:25いつ処理落ちがはじまるかわからないんですが、以外と早くきますか?
0199デフォルトの名無しさん
2009/03/11(水) 23:37:530200デフォルトの名無しさん
2009/03/11(水) 23:43:43続く射影変換で視界の外にいるorその位置から見えないと判定されたピクセルは描画されない
この描画が一番重い部分なのでいかに描画するピクセルを減らすかの計算をしていると思えば良い
0201デフォルトの名無しさん
2009/03/12(木) 00:01:51・すべての物体を、カメラ基準の座標系に変換する
・カメラの範囲から飛び出ているものはごっそり描画を省く(←ここだけ手動)
・描画を行う
0202デフォルトの名無しさん
2009/03/12(木) 00:08:20どゆこと?
0203デフォルトの名無しさん
2009/03/12(木) 00:23:51どゆこと?
0204デフォルトの名無しさん
2009/03/12(木) 00:40:10わざわざCPUで判定するなんて
物体が増えたときに負荷になるだけじゃん
0205デフォルトの名無しさん
2009/03/12(木) 01:15:12データ送信が一番重いんだから
0206デフォルトの名無しさん
2009/03/12(木) 01:46:12視界内かどうかの判定なんか考えるな
ロードするかしないかで分けろ
0207デフォルトの名無しさん
2009/03/12(木) 06:29:060208デフォルトの名無しさん
2009/03/12(木) 06:34:360209デフォルトの名無しさん
2009/03/12(木) 07:09:57物体のワールド座標Yに地面のワールド座標Yを影響させるのはわかるんだけど
どう計算すれば出てくるの?
0210デフォルトの名無しさん
2009/03/12(木) 07:26:35地面の高さを設定すれば単純にそこに出てくるだろ?
何が不満?
0211デフォルトの名無しさん
2009/03/12(木) 07:34:060212デフォルトの名無しさん
2009/03/12(木) 07:45:54Xファイルをワールド配置したあとのワールド座標xzのyって
ローカル座標をXファイルの原点をワールド座標に変換した値にプラスするの?
ワールド座標XZ上にある点を全て列挙する関数はないの?
0213デフォルトの名無しさん
2009/03/12(木) 07:56:01怠けて高レベル関数に頼っていたら何も出来ない。
0214デフォルトの名無しさん
2009/03/12(木) 08:26:23ざまぁwwww
0215デフォルトの名無しさん
2009/03/12(木) 08:31:320216デフォルトの名無しさん
2009/03/12(木) 09:36:200217デフォルトの名無しさん
2009/03/12(木) 09:43:000218デフォルトの名無しさん
2009/03/12(木) 09:47:31カメラが決して動かないならそれは正しい意見だ。
0219デフォルトの名無しさん
2009/03/12(木) 10:03:280220デフォルトの名無しさん
2009/03/12(木) 12:15:27衝突までの距離を出せば地面の高さがわかるんでない?
使ったこと無いから速度は知らんけど
0221デフォルトの名無しさん
2009/03/12(木) 12:49:31D3DXIntersectでいけるかもね
ただ、その方法だとトンネルとかあったらアウトだけど
0222デフォルトの名無しさん
2009/03/12(木) 14:53:40GPUを使ったサウンドエンジンってどういうことですか?
0223デフォルトの名無しさん
2009/03/12(木) 15:17:55リアルタイムで音階など全てを単音から作り上げたり、効果音とかを複雑に変形させたりしてる。
これのおかげで大作でも音容量10MBいかなくなった
0224デフォルトの名無しさん
2009/03/12(木) 15:19:320225デフォルトの名無しさん
2009/03/12(木) 20:42:130226デフォルトの名無しさん
2009/03/12(木) 20:43:280227デフォルトの名無しさん
2009/03/12(木) 21:42:29これからはSetRenderStateを使わずに出来る限りHLSLで処理させる流れなのでしょうか?
0228デフォルトの名無しさん
2009/03/12(木) 21:44:470229デフォルトの名無しさん
2009/03/12(木) 22:23:490230デフォルトの名無しさん
2009/03/12(木) 22:26:52///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0231デフォルトの名無しさん
2009/03/12(木) 22:30:28なんて聞いても煽りレスしかつかんだろ
こういうことをやりたいんだけど
9で実現するにはどうすればいいですか?と聞いてくれればいいんだが
0232デフォルトの名無しさん
2009/03/12(木) 22:51:010233デフォルトの名無しさん
2009/03/12(木) 23:24:460234デフォルトの名無しさん
2009/03/13(金) 00:21:110235デフォルトの名無しさん
2009/03/13(金) 07:15:099の勉強中で、DXUTの膨大さに圧倒されてます・・・
0236デフォルトの名無しさん
2009/03/13(金) 07:56:430237デフォルトの名無しさん
2009/03/13(金) 09:03:370238デフォルトの名無しさん
2009/03/13(金) 09:06:59レスどうもです。豆粒、Winミジンコなんて凄いですね・・・
本場は1000万ステップ越えるのでしょうか・・・
参考になりました!
0239デフォルトの名無しさん
2009/03/13(金) 15:38:54マイクロソフトの描写ライブラリの分量を超えるプログラム作ってるって事?
0240デフォルトの名無しさん
2009/03/13(金) 15:53:44http://msdn.microsoft.com/ja-jp/library/bb173249(VS.85).aspx
0241デフォルトの名無しさん
2009/03/14(土) 02:43:46バックバッファーに描画した物をGetDCで取得し、
BitBltで描画しようとおもったのですが上手くいきません。
どこが悪いのでしょうか?
0242デフォルトの名無しさん
2009/03/14(土) 03:11:09BitBltの遅さを何とかするために開発されたDirectXを使っておいて
なぜそこで先祖がえりを起こすのか問い詰めたい
0243デフォルトの名無しさん
2009/03/14(土) 03:11:140244デフォルトの名無しさん
2009/03/14(土) 03:49:22そこのフラグを入れないとダメだったのですね。
ご教授頂きありがとうございました。
>>242
バックバッファーに描画したピクセルを編集したいと思ったのですが、
VRAM→MEMORY→VRAM という手順を踏んで描画すると物凄く遅くなってしまったのです。
なのでVRAM→MEMORYだけにして、編集後のピクセルをBITBLTでやれば少しはマシになるかなと。
それとも他にもっといい方法があるのですかね?
0245デフォルトの名無しさん
2009/03/14(土) 04:01:490246デフォルトの名無しさん
2009/03/14(土) 04:12:02テクスチャに描画する為にはレンダーターゲットにしなくてならなくて、
レンダーターゲット指定の物はLockRect出来ないため、
D3DPOOL_SYSTEMMEMなサーフェスにGetRenderTargetDataする事で、
LockRectをして編集可能になる…という事であってますよね?
そこから更にUpdateSurfaceをして…となると遅くなってしまうのです。
もし何か間違いがありましたら指摘して貰えると助かります。
0247デフォルトの名無しさん
2009/03/14(土) 04:16:050248デフォルトの名無しさん
2009/03/14(土) 04:40:06ピクセルをどう編集したいかにもよるけど
俺もテクスチャに描いてシェーダーで加工してレンダリングに1票
0249デフォルトの名無しさん
2009/03/14(土) 15:28:23自分の考えた方法の詳細を聞くよりも
やりたい事と条件を出して、どうすれば?っての方が断然早いw
…でも大体は提示された方法を理解出来ない、と
だから自分の考えた方法が頓珍漢なんだがね…
0250デフォルトの名無しさん
2009/03/14(土) 15:54:22シェーダー(HLSL)の勉強をしています。
頂点シェーダーを普通のXファイルに使うのは問題ないのですが、(DXの)スキンメッシュでは上手く行きません。
DrawMeshContainer関数内で「g_SkinningMethod」が常に「D3DNONINDEXED」を通るのでそこにBeginPass等を書くと
ボーンかウェイトが正しく反映されず頂点(面)が分離して表示されてしまいます。
少し下を見ると「if (g_SkinningMethod == D3DINDEXEDHSLSVS)」があったのでここを通せばいいのかと思って
「g_SkinningMethod」の値を書き換えると実行中にエラーが出ました(SetSoftwareVertexProcessingにて)。
スキンメッシュそのものは「メタセコイア」から「rok de bone2」を経由して出力したアニメーション付きXファイルです。
そこで2点伺いたいことがあります。
・頂点シェーダーを使いたい場合はD3DINDEXEDHSLSVSの部分を通して使うのは正しい(意図した)方法なのか
・D3DINDEXEDHSLSVSを通すために何かすべき事があるのか(スキンメッシュのコンバートなど)
特異なことをやっていますが、もし分かる方がいればレスをお願いしますorz
0251デフォルトの名無しさん
2009/03/14(土) 15:55:240252デフォルトの名無しさん
2009/03/14(土) 16:15:110253デフォルトの名無しさん
2009/03/14(土) 17:25:120254デフォルトの名無しさん
2009/03/14(土) 20:33:33なるほど、そういうものがあるのですね。調べてみます。
ttp://www1.axfc.net/uploader/He/so/204937
もう1つ質問なのですがテクスチャを貼り付けたポリゴンを、
rhwを1.0fにして100%表示させているのですが、元の画像よりぼやけて見えます。
これを回避するにはどうしたら良いのでしょうか?
0255デフォルトの名無しさん
2009/03/14(土) 20:41:120256250
2009/03/14(土) 21:07:08ありがとうございます。
若干前へ進めました。
pMesh->DrawSubsetの上でSetTransform(D3DTS_WORLDMATRIX(i), &matTemp )をやっており、
この値を正しく渡すことが出来れば問題は解決しそうです。
しかし、これを繰り返す回数である「pMeshContainer->NumInfl」に何が入っているのか(常に4?)、
どうやって頂点シェーダーでどの行列を使うのかを指定してやるのかが分かりません。
前者に関しては100とか200の数値が入るとHLSLに配列として保持させるのは現実的ではありませんよね。
後者は前者が4固定だとすれば、頂点情報にフラグがあればそれを取得することで解決しそうです。
そこら辺について詳しい片はいらっしゃらないでしょうか。
0257デフォルトの名無しさん
2009/03/14(土) 21:14:48なんでそんな基本事項が分からないのかが分からない。
0258250
2009/03/14(土) 23:18:24現在使っている頂点シェーダーは以下の通りです。
float4 TestVS(
float4 Pos : POSITION,
float3 Normal : NORMAL,
float2 TexCoord0 : TEXCOORD0 ) : POSITION
{
float4 a = mul( Pos, gMatrixWVP );
return a;
}
gMatrixWVPはpMesh->DrawSubsetの前にmatWorld * matView * matProjectの結果を入れています。
上記で期待している結果はシェーダーをかけてもかけなくても同じ形状。
matWorld(gMatrixWVP)の値を変えることで解決はするのでしょうが、
pMesh->DrawSubsetで複数の頂点が描画されるのでバラバラに設定できない。
そもそもどの頂点がどの行列を使うのかを知り得ないので躓いています。
頂点シェーダー内で各頂点通常描画と同じワールド座標が取得できればいいのですが無理ですよね・・。
0259デフォルトの名無しさん
2009/03/14(土) 23:27:17頂点の情報の中に含まれてるだろ
全然分かっていないんだから、
D3DXを使わずに直接頂点を設定するところからやり直せ
0260デフォルトの名無しさん
2009/03/14(土) 23:39:11それっぽいのがゴロゴロ出てくるぞ?
0261デフォルトの名無しさん
2009/03/15(日) 00:27:590262デフォルトの名無しさん
2009/03/16(月) 16:16:57HLSL用スキンメッシュのサンプルをうpする
0263デフォルトの名無しさん
2009/03/16(月) 16:30:300264デフォルトの名無しさん
2009/03/16(月) 18:02:330265デフォルトの名無しさん
2009/03/16(月) 18:11:55ttp://msdn.microsoft.com/ja-jp/library/cc411364.aspx
0266デフォルトの名無しさん
2009/03/16(月) 18:40:48くそう、いつのまにか全規制からVIPのみ規制に切り替わってた
いまコピペの嵐でサンプル作った
・DirectX9
・基本ベースはSDKサンプルのチュートリアル(非DXUT)
・スキンメッシュ部分はSkinnedMeshからの部分コピペ
・HLSLはMultiAnimationからほぼそのまま
・アニメーション制御はまるぺけを参考
・デバイスのリセットに未対応
・キャラクタ(インスタンス)のコピーとか無理
・影響度が一つも設定されてない頂点のあるメッシュは表示しない
・テクスチャの設定されてないマテリアルは真っ黒
全部対応できるけどお手軽最小限ってことでこれらは自分でなんとかしてね
で良くて二人以上希望者がいたらうp
0267デフォルトの名無しさん
2009/03/16(月) 18:45:120268デフォルトの名無しさん
2009/03/16(月) 18:45:580269デフォルトの名無しさん
2009/03/16(月) 18:47:440270デフォルトの名無しさん
2009/03/16(月) 19:09:44あまりデバックしてないから動かなかったら簡便な
あまりに不評なら即削除
ttp://www5b.biglobe.ne.jp/~mya_a/DirectX/Vertices.zip
0271デフォルトの名無しさん
2009/03/16(月) 19:54:590272デフォルトの名無しさん
2009/03/16(月) 19:57:27よくわからないけどべんきょうにつかわせていただきます。
0273デフォルトの名無しさん
2009/03/16(月) 20:02:22動作原理を知らなくてもスキンメッシュを再生したい人には良いんでない?
すでにできてる人にはあまり意味ないかと
0274デフォルトの名無しさん
2009/03/16(月) 20:20:12素かワザとか判断に迷う所だが
簡便じゃなく勘弁な、ワザとだったら勘弁な
0275デフォルトの名無しさん
2009/03/16(月) 20:22:14少ないファイル数でまとめてるとわかりやすいわ
0276デフォルトの名無しさん
2009/03/16(月) 21:21:53ここがDirectXの一つの山場なんだから
0277デフォルトの名無しさん
2009/03/16(月) 21:29:280278デフォルトの名無しさん
2009/03/16(月) 21:49:17一般的にはあまり使いませんか?
0279デフォルトの名無しさん
2009/03/16(月) 22:05:05UTベースでCXFileMesh使うならいろいろ手間が省けていいんでない?
0280デフォルトの名無しさん
2009/03/16(月) 22:07:42×CXFileMesh
○LPD3DXMESH
0281デフォルトの名無しさん
2009/03/17(火) 09:13:47SUGEEEEEEEEEEEE!!!
やっと日本語版の最新がきたのかw
D3DXAnimationControllerが最新対応になっていて感動した!
でもバグも直せ
0282デフォルトの名無しさん
2009/03/17(火) 13:39:48久しぶりの翻訳は(日本法人)新社長の公約のおかげかな。
こういう時期なら翻訳をねじ込めるかもしれないので
翻訳して欲しい資料についてはフィードバックしておくと良いのかも。
ttp://ascii.jp/elem/000/000/165/165823/
>樋口氏は、「ITエンジニアの皆様に対するお約束」として、エンジニアからの
>要望が強かったという「技術資料の不足」「製品の品質」「分かりにくいライセンス」
>などの問題の解決に当たっていることを説明。
>過去6カ月間に、1万ページ強の技術資料を日本語翻訳した経過を報告し、
>「さらに今後10カ月間で1万ページの技術資料を追加翻訳する」と約束した。
0283デフォルトの名無しさん
2009/03/17(火) 15:57:510284デフォルトの名無しさん
2009/03/17(火) 16:03:160285デフォルトの名無しさん
2009/03/18(水) 10:52:39歩行アニメーションを作る場合は3Dソフト上で場所を動かさず歩行モーションだけを作って
ゲームのほうでキー入力によって位置を移動しながらアニメーションを再生させるんでしょうか
0286デフォルトの名無しさん
2009/03/18(水) 11:00:17そのうちどこかで使おうと思った
0287デフォルトの名無しさん
2009/03/18(水) 11:09:47そう作ってもいいし、
xファイル上で移動するように作っておいて、その移動量を毎フレゲーム内に加算、モーションの方でその移動をなかったことにする
前者だとすべるような動きになりがちだけど後者モーションと移動量をリンクできる
0288デフォルトの名無しさん
2009/03/18(水) 11:49:55とりあえずはゲームのほうで移動するようにしてみます
0289デフォルトの名無しさん
2009/03/19(木) 17:03:32エスパーの方どこが問題かわかります?
0290デフォルトの名無しさん
2009/03/19(木) 17:42:55AdvanceTime ( 1/60) ;
とすべきところを
time += 1/60 ;
AdvanceTime ( time ) ;
そしてるとか
0291デフォルトの名無しさん
2009/03/20(金) 03:24:49かなり良い線行ってましたわ
直接数字入れたら直った
変数timeがあっちこっちでごっちゃになってたみたいだサンクス!
でもクラスに移植する前はマトモに動いてたのになー
0292デフォルトの名無しさん
2009/03/20(金) 12:50:06シェーダーを使ったメッシュに新しく設定しなきゃ駄目ですか?
0293デフォルトの名無しさん
2009/03/20(金) 13:47:270294デフォルトの名無しさん
2009/03/20(金) 13:51:590295デフォルトの名無しさん
2009/03/20(金) 14:01:30余りにも短い時間で終了してしまう場合は、その処理を何百回とか繰り返して
負荷をかけるだけで大丈夫ですか?それとも同じ処理だと二回目以降は高速になります?
0296デフォルトの名無しさん
2009/03/20(金) 14:08:46元々へったくれもなく、自分で計算内容を書くのは理解しているのか?
>>295
処理しないなら休ませろ
0297デフォルトの名無しさん
2009/03/20(金) 14:48:16物体の周りで同じ半径で物体を円運動させるにはどうすればいいんですか?
0298デフォルトの名無しさん
2009/03/20(金) 17:02:56行列計算とか色々関数があるから手軽になってるけど、根本的な内容を理解していないと>>297のような状態に。
0299デフォルトの名無しさん
2009/03/20(金) 17:07:330300デフォルトの名無しさん
2009/03/20(金) 17:12:430301デフォルトの名無しさん
2009/03/20(金) 17:31:58>処理しないなら休ませろ
いや処理にかかる時間をはかりたいのです。
例えば、3つのテクスチャーで作られるモデルがあるとして、それを5箇所に描画する場合って
モデル1つづつ描画していくのと、1つめのテクスチャーをセットして、そのテクスチャが必要な部分だけ5箇所に描画、2つめのセットして描画
って繰り返すのとどっちが速いんでしょうか?
0302デフォルトの名無しさん
2009/03/20(金) 17:42:040303デフォルトの名無しさん
2009/03/21(土) 17:53:13頂点バッファをダンプするとDWORDのBlendIndicesの値には
ボーンのインデックスの00か01しか現れないと思ったのですが
3f800000だったり3f7ffb37のような値になっています。
これはどういう計算でこうなるのでしょうか?
描画は正常に表示できています。シェーダ内ではD3DCOLORtoUBYTE4を使ってます。
0304デフォルトの名無しさん
2009/03/21(土) 18:16:57通訳なんて自分自身は生涯主役になれない黒子だろ?脇役だろ?奴隷だろ?
伝わりさえすりゃそんなもんの優劣なんてどうでもいいんだよ。
何でも出来る?
そんなもんは「私はただの通訳じゃありません。ヒンタボ語も使えます!」と
自信満々に言ってるようなもんだ。
そんなもん使う側の人間にすりゃ
「はぁそうですか。便利そうですね。…ヒンタボに行く人にとっては。」レベルの
ゴミ自慢だっていい加減気づこうなw
まぁ、これに懲りたら挑発しにくんな。奴隷。
0305デフォルトの名無しさん
2009/03/21(土) 18:19:26おまえはたけしかwww
0306デフォルトの名無しさん
2009/03/22(日) 12:54:13を見るとsThumbLXだけ値の範囲が違うのですが、表記のミスなのでしょうか。
だとするとどちらが正しい値なのですか?
0307デフォルトの名無しさん
2009/03/22(日) 14:06:59モデル管理クラスはプレイヤーとその他で2つ別のを作るのと同じクラスで管理するのはどちらがいいですか?
アドバイスお願いします
0308デフォルトの名無しさん
2009/03/22(日) 16:33:52表記ミスだね、符号付16bit整数は -32768 〜 32767
0309デフォルトの名無しさん
2009/03/22(日) 17:44:23シェーダーにするとライトの設定異常に面倒じゃない?おれが間違った解釈してるのかな?
0310デフォルトの名無しさん
2009/03/22(日) 17:57:080311デフォルトの名無しさん
2009/03/22(日) 18:13:440312デフォルトの名無しさん
2009/03/22(日) 19:32:50コンソールアプリではDirectInput使えない?
0313デフォルトの名無しさん
2009/03/22(日) 21:28:310314デフォルトの名無しさん
2009/03/22(日) 22:18:270315デフォルトの名無しさん
2009/03/22(日) 22:28:530316デフォルトの名無しさん
2009/03/24(火) 15:12:35ttps://www.microsoft.com/downloads/details.aspx?FamilyID=0cf368e5-5ce1-4032-a207-c693d210f616&DisplayLang=en
Download details: DirectX SDK - (March 2009)
ttps://www.microsoft.com/downloads/details.aspx?FamilyID=24a541d6-0486-4453-8641-1eee9e21b282&DisplayLang=en
0317デフォルトの名無しさん
2009/03/24(火) 21:43:04コンソールでもハンドルは取れるぞ
0318デフォルトの名無しさん
2009/03/25(水) 00:40:04テクスチャを準備して、ビットマップを表示しているのですが
縦横比をビットマップと同じように表示するにはどうすれば
良いでしょうか?
よろしくお願いします。
0319318
2009/03/25(水) 00:53:42Windowサイズを変えるとスプライトの縦横比が変わるのを
防ぎたいです。
宜しくお願いします。
0320デフォルトの名無しさん
2009/03/25(水) 01:27:580321デフォルトの名無しさん
2009/03/25(水) 01:31:27ウィンドウの縦横比とスプライトの縦横比の関係が
どうなっているのか分からないのですが、これを確認する
方法がありますでしょうか?
0322デフォルトの名無しさん
2009/03/25(水) 07:11:280323デフォルトの名無しさん
2009/03/25(水) 07:22:23Windowサイズを変更できないようにしろ
0324デフォルトの名無しさん
2009/03/25(水) 08:41:130325デフォルトの名無しさん
2009/03/25(水) 15:19:54指定したフレームから指定したフレームまでの再生ってできますか?
1つのXファイルに歩行・ジャンプ・座るなどのモーションを詰め込んでどうすればいいか悩んでます;;
0326デフォルトの名無しさん
2009/03/25(水) 15:31:43切り替えやモーション移行時の合成のことを考えたら
アニメーションセットを複数持った方が楽
0327デフォルトの名無しさん
2009/03/25(水) 15:45:36ありがとう
アニメーションセット 複数
でググったら色々出てきたので勉強してみます
0328デフォルトの名無しさん
2009/03/25(水) 15:48:130329デフォルトの名無しさん
2009/03/25(水) 15:55:210330デフォルトの名無しさん
2009/03/25(水) 16:01:150331デフォルトの名無しさん
2009/03/25(水) 16:40:54??
0332デフォルトの名無しさん
2009/03/25(水) 16:53:07カメラの動きを出力するツールがあり、その出力データを他のツールで読み込み再生したいんです。
しかしその出力データにはビュー変換後のmatrixしか入っておらず、変換前のデータにあらかじめどうこうというのは出来ないんです。
0333デフォルトの名無しさん
2009/03/25(水) 16:59:430334デフォルトの名無しさん
2009/03/25(水) 17:11:33もう回答はつくまい
0335デフォルトの名無しさん
2009/03/25(水) 17:35:02ひゃっっほおおお
カメラですが、みなさんありがとうございました。
上手く行かない原因がわかりました。
ツール側のxyzが逆になっていただけでした。
transrateだけで行けないわけがないのに、それすらできないなんてPG人生終わったな、ぐらい追い詰められてました。
幾何学の基本的な公式から読み直したり(ry
ありがとー!
0336デフォルトの名無しさん
2009/03/25(水) 17:52:120337デフォルトの名無しさん
2009/03/25(水) 19:01:18どうすればいいですか
0338デフォルトの名無しさん
2009/03/25(水) 19:02:210339デフォルトの名無しさん
2009/03/25(水) 19:04:050340デフォルトの名無しさん
2009/03/25(水) 19:08:560341デフォルトの名無しさん
2009/03/25(水) 19:10:220342デフォルトの名無しさん
2009/03/25(水) 19:14:41下の方の環境も拾おうとしてる所為で全力で戦えなくてイライラしてるのか
両対応でできる限り遜色ない見栄え要求されて大変とか
0343デフォルトの名無しさん
2009/03/26(木) 09:26:15音楽を読み込ませる場合は最初に使う分ロードしておくのと必要な場面でロードするのはどちらがいいですか?
0344デフォルトの名無しさん
2009/03/26(木) 09:27:24音楽データは最初にすべてロードするのと必要な場面ごとにロードするのはどちらがいいですか?
0345デフォルトの名無しさん
2009/03/26(木) 09:36:37DirectMusicならやり方分かるがDirectSoundでどうやったかな
SEじゃなくてBGMだろ?事前に全BGMを読み込むのはあり得ない^^;
0346デフォルトの名無しさん
2009/03/26(木) 09:51:03レスありがと
directMusicでoggファイル再生を実装してみます
ストリーミングはスレッドを使っているみたい?なのですが
スレッドの勉強はまだ不十分なので、必要な時にロード・必要なくなったら消去
という風な仕様で作ってみます。
0347デフォルトの名無しさん
2009/03/26(木) 10:00:370348デフォルトの名無しさん
2009/03/26(木) 10:15:28どこよ
0349デフォルトの名無しさん
2009/03/26(木) 13:55:25ファイル全読み込みで発生するラグはプレイヤーのストレス源になるからな
世の中には全部読んだあと更にデコードまでする人もいるらしいが
なるべくストリーミングしたほうが良いね
0350デフォルトの名無しさん
2009/03/26(木) 17:47:360351デフォルトの名無しさん
2009/03/26(木) 17:52:15画像ファイルからピクセルデータを取得するには、各フォーマットを調べるか、
WinAPIやその他ライブラリ関数を使ってビットマップを取得する。
3D表示に手を伸ばそうとしたときdirectXとXNAというものがあると聞きました
もちろん一長一短はあると思いますが、やはりメジャーなdirectXの方が解説サイトなどが豊富で
初心者向けなのでしょうか?
0353デフォルトの名無しさん
2009/03/26(木) 18:09:39ありがとうございます。
LockRectの第2引数がバッファを指すポインタを持っている事に今気がつきました。
書き込むデータは、IDirect3DDevice9::CreateTextureのD3DFORMAT に指定した引数に従って書き込めばいいのでしょうか。
0354デフォルトの名無しさん
2009/03/26(木) 21:13:54D3DやDIオブジェクト作成した後でCoInitalizeExにいろいろな値を渡しても、失敗することがないので気になるのですが。
0355デフォルトの名無しさん
2009/03/26(木) 22:27:21プロジェクトのビルド時に
include ファイルを開けません。'DSound.h': No such file or directory
というエラーがでます。
VSの設定でDXSDKのincludeディレクトリとlibディレクトリへのパスは通してあります
何が悪いんでしょうか?
0356デフォルトの名無しさん
2009/03/26(木) 23:04:20優先度を一番上にしてるのか?
実際にファイルはあるのか?
0357デフォルトの名無しさん
2009/03/26(木) 23:45:14何かよい方法があれば教えてください。
0358デフォルトの名無しさん
2009/03/26(木) 23:59:16可能。方法のヒント ハンドル
0359デフォルトの名無しさん
2009/03/27(金) 00:10:25現在のDirectXSDKのincludeフォルダに存在する?
PlatformSDKにはいってたりして・・・
0360355
2009/03/27(金) 00:56:38ttp://www.dotup.org/uploda/www.dotup.org10989.jpg.html
これで大丈夫でしょうか?
0361デフォルトの名無しさん
2009/03/27(金) 01:42:540362デフォルトの名無しさん
2009/03/27(金) 09:16:14March 2008の段階ではまだ入ってるみたい。 Novemberでどうなってるかは知らんが。
>>360
この問題と直接関係ないけど、Win32用のライブラリパスにx64のを入れるのはやめれ。
Win32<=>x86
x64<=>x64
の『だけ』を含める。
まず>>359が言っているみたいに、本当にincludeフォルダ内にdsound.hがあるか確認すること。
もう一つだけ思い当たる節。
http://www.dotup.org/uploda/www.dotup.org11272.jpg.html
ここWin32になってるよな?
0363デフォルトの名無しさん
2009/03/27(金) 17:06:15両方設定して。
それでだめならlibとかをdirectxのみにする
0364デフォルトの名無しさん
2009/03/28(土) 00:03:030365デフォルトの名無しさん
2009/03/28(土) 14:01:36MSDNには\Samples\C++\DirectSound\みたいなこと書いてあるのに見当たらない
0366デフォルトの名無しさん
2009/03/29(日) 13:05:09複数のウィンドウハンドルに描画するにはどうすればいいのでしょうか?
また、モーダルなウィンドウを生成した時、生成側でそれを検知して描画を止めるような処理をしたいのですが方法はあるでしょうか?
0367デフォルトの名無しさん
2009/03/29(日) 13:44:37これをパクれ
0368デフォルトの名無しさん
2009/03/29(日) 23:43:37生成側で検知できない方がどうかしてないか?
モーダルウィンドウを作る直前に描画を禁止するフラグでも立てて
戻ってきたら寝かせるだけだろ。
0369デフォルトの名無しさん
2009/03/30(月) 13:16:52Microsoft DirectX SDK (August 2007)には入ってるね
これ以降無くなったヘッダとかもあるからインストールしといたら便利だよ
0370デフォルトの名無しさん
2009/03/30(月) 21:01:01MCIを使用してmp3を再生しようと思うんですが、
ffdshowが起動してしまいます。
つまり公開した場合、各自ffdshowをインストールして下さいという必要があるという事ですか?
ゲームBGMに使用したいのですが、
MediaPlayerを用いた方が標準的に入っているので、そちらの方が適当でしょうか。
0371デフォルトの名無しさん
2009/03/30(月) 21:11:210372デフォルトの名無しさん
2009/03/30(月) 21:17:40マジですか。ありがとうございます。
0373デフォルトの名無しさん
2009/03/31(火) 03:38:03半透明で下の土が見えてるだけしか思いつきません
クライシスの波だったりするのってアニメーションなんですか?それとも計算で動かしてるんですか?
0374デフォルトの名無しさん
2009/03/31(火) 04:03:370375デフォルトの名無しさん
2009/03/31(火) 08:58:38ある画像を描画する際に、アルファ付きのスプライトなどでマスクを掛けて
円形の内側だけを描画するようにしたいのですが、思ったような結果が得られません。
まず円形の内側がアルファ値255、外側が0になるような画像を描画し、
その後マスクを掛ける画像を描画する前にD3DRS_SRCBLENDに
D3DBLEND_DESTALPHAを指定してみているのですが上手くいきません。
アルファブレンドを利用したマスク処理について知りたいので
詳しい方のご教授、もしくは参考になるサイトなど教えて頂けると助かります。
0376デフォルトの名無しさん
2009/03/31(火) 10:14:290377デフォルトの名無しさん
2009/03/31(火) 19:54:10IDirectSound8::DuplicateSoundBuffer()使うとやばいですか?
下手したらロック可能な場所がなくなりますよね?つまりこれは短い効果音なんかに使う用と考えておkですか?
0378デフォルトの名無しさん
2009/03/31(火) 21:04:420379デフォルトの名無しさん
2009/04/02(木) 20:59:06相変わらず位置に関係なく、後に描いたものが前面に来てしまいます。
考えられる原因をお願いします。
0380デフォルトの名無しさん
2009/04/02(木) 21:22:340381デフォルトの名無しさん
2009/04/02(木) 21:23:33D3DRS_ZENABLEが有効になってない。
D3DRS_ZWRITEENABLEが有効になってない。
Zバッファがクリアされてない。
Z値の奥と手前が逆。
実は描画順が逆だった。
0382デフォルトの名無しさん
2009/04/02(木) 21:47:59EnableAutoDepthStencil = TRUE;
AutoDepthStencilFormat = D3DFMT_D16;
SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
SetRenderState(D3DRS_ZWRITEENABLE,TRUE);
Clear(NULL, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, NULL);
追加・変更してはみたものの、やはりうまくいかないようです。
もっと細かく調べてみることにします。
0383デフォルトの名無しさん
2009/04/02(木) 22:40:32一番ありがちな「ニアクリップの距離が0」が抜けてるぜセニョリータ
0384デフォルトの名無しさん
2009/04/03(金) 01:33:19何がセニョリータだタコ
0385デフォルトの名無しさん
2009/04/03(金) 09:25:10俺のありがちトラブルリストに追加させてもらったぜ
ありがと
0386デフォルトの名無しさん
2009/04/03(金) 09:57:000387デフォルトの名無しさん
2009/04/03(金) 10:24:330388デフォルトの名無しさん
2009/04/03(金) 11:35:14Znを0にするとZバッファが効果なくなるよ。
わりと常識のレベル。
手計算で座標変換してみれば、何が起こるのかすぐわかる。
0389デフォルトの名無しさん
2009/04/03(金) 12:16:32ファイル読み込み・コリジョンに必要な値の取得・アニメーション制御
を1つのクラスでまとめているのですが分けたほうがいいですか?
0390デフォルトの名無しさん
2009/04/03(金) 12:20:02それらの合成クラスを自分が作るだけになるという・・・
0391デフォルトの名無しさん
2009/04/03(金) 21:16:450392デフォルトの名無しさん
2009/04/04(土) 13:15:49//アニメーショントラックを得る
for(DWORD i=0;i<pAnim->pAC->GetNumAnimationSets();i++)
{
pAnim->pAC->GetAnimationSet(i,&pAnim->pAnimSet[i]);
pAnim->pAnimSet[i]->Release();
}
アニメーションコントローラーを設定した後リリースしてるのはなぜですか?
0393デフォルトの名無しさん
2009/04/04(土) 14:22:17で使い終わってるから
0394デフォルトの名無しさん
2009/04/04(土) 14:31:00ありがとうございます
0395デフォルトの名無しさん
2009/04/04(土) 22:31:31gDraw->Flip( hwnd ); にて画面を更新しているのですが
whie(1)
PeekMessage( ...
をぬけると
最後に描画した gDraw->Flip( hwnd ); の画面が最前面に表示され
最後の画面が描画されたまま終了してしまいます
どう対処すればいいでしょうか?
0396デフォルトの名無しさん
2009/04/05(日) 12:59:31ゲームで半透明処理をしているオブジェクトで、ドットをディザリングさせて半透明を
実現しているものをたまに見かけます。DirectXではないですがMGS4も半透明処理がディザしてます。
しかし多くのゲームではきちんとうまく半透明処理(アルファブレンディング?)をしているように見えるのですが
前者と後者はどのような処理方法でやっているのでしょうか?
またなぜわざわざ汚く見えるディザリングをやっているゲームがあるのでしょうか?
0397デフォルトの名無しさん
2009/04/05(日) 13:49:18ディザリングしてるゲームなんて見たことないんで適当なこと言うけど
半透明は描画順に依存するからじゃないか?
正しく半透明を描画するには奥から手前の順に描く必要があるので、
描画するときにポリゴン単位でソートが必要になる。
0398デフォルトの名無しさん
2009/04/05(日) 16:41:032D画像処理を掛けながらビルボードとしてゲームに乗せる。
本当に半透明で描画すると、透過中にjs目玉とか歯茎が透けて見えてキモイことになる。
0399デフォルトの名無しさん
2009/04/05(日) 18:42:490400デフォルトの名無しさん
2009/04/05(日) 20:27:550401デフォルトの名無しさん
2009/04/05(日) 20:34:050402デフォルトの名無しさん
2009/04/05(日) 20:51:32DXUT自体不要な機能が多々あるので外したほうが無難。
自前で実装するために学ぶのにも役立つから最小構成にする価値は十分ある。
0403デフォルトの名無しさん
2009/04/05(日) 20:59:54DXUT.h外すのは一苦労
0404デフォルトの名無しさん
2009/04/05(日) 21:30:32必要な部分だけのせていったほうが速いんじゃ
0405デフォルトの名無しさん
2009/04/05(日) 21:49:030406デフォルトの名無しさん
2009/04/05(日) 21:51:09もうできるって?サーセンwww
0407デフォルトの名無しさん
2009/04/05(日) 21:55:33>>270はSDKサンプルそのままで縮めてほしかったな
自作クラスとか使ってたら余計理解できん
あとSDKサンプルでは読み込めて表示できるファイルが表示できなくなってるのはマイナス
0408デフォルトの名無しさん
2009/04/05(日) 22:04:13いきなり>>207の話になってんの?
0409デフォルトの名無しさん
2009/04/05(日) 22:08:09自前で実装するためにDXUTを必要最小限にするのが正しいかな。
削らない状態で参考にするのは容易では無いし、逆に何も参考にする必要が無いほどの技術者ならスレ違い。
0410デフォルトの名無しさん
2009/04/05(日) 22:12:53SDKサンプルで表示できる物全てに対応してないから没
SDKサンプルからDXUT.h、DXUTcamera.h、SDKmisc.hを外して
d3dx9.hとSkinnedMesh.cppだけで動作するようにしてくんないと初心者は付いて行けないぞ
0411デフォルトの名無しさん
2009/04/05(日) 22:37:14>全てに対応してないから没
>初心者は付いて行けないぞ
www
どういうのがほしいんだい?
後でこうでないから〜とか
ならないよううに、よ〜〜く
考えて書いてねw
0412デフォルトの名無しさん
2009/04/05(日) 23:24:380413デフォルトの名無しさん
2009/04/06(月) 11:41:24あるifに対応するelseの部分がまんま空白になってるからだ
そこを埋めるのはたいした作業じゃないんだけど、どうしても分からないなら頼んでみたら
まだここみてるかわからんけど
0414デフォルトの名無しさん
2009/04/06(月) 19:31:10したがって要らぬ世話はしなくて良い
0415デフォルトの名無しさん
2009/04/06(月) 19:45:54vec.x = (vec.x * mat._11) + (vec.y * mat._21) + (vec.z * mat._31) + ( 1 * mat._41);
vec.y = (vec.x * mat._12) + (vec.y * mat._22) + (vec.z * mat._32) + ( 1 * mat._42);
vec.z = (vec.x * mat._13) + (vec.y * mat._23) + (vec.z * mat._33) + ( 1 * mat._43);
のあとに何をやれば再現できる?
vecはD3DXVECTOR3
matはD3DXMATRIX
0416デフォルトの名無しさん
2009/04/06(月) 20:07:15vec.x /= w;
vec.y /= w;
vec.z /= w;
で再現できるお
0417デフォルトの名無しさん
2009/04/06(月) 20:36:31うpしてください!
0418デフォルトの名無しさん
2009/04/06(月) 20:59:150419デフォルトの名無しさん
2009/04/06(月) 21:02:27外す意味がわからないんだが
0420デフォルトの名無しさん
2009/04/06(月) 21:09:49外す事には大いに意味がある
0421デフォルトの名無しさん
2009/04/06(月) 21:17:34言いだしっぺの俺からうpしていくから
0422デフォルトの名無しさん
2009/04/06(月) 21:18:190423デフォルトの名無しさん
2009/04/06(月) 21:50:43http://directx.wiki.fc2.com/
0424デフォルトの名無しさん
2009/04/06(月) 21:52:510425デフォルトの名無しさん
2009/04/06(月) 22:33:400426デフォルトの名無しさん
2009/04/06(月) 22:35:41とにかくとりあえずデータベースで収集したい
0427デフォルトの名無しさん
2009/04/06(月) 22:45:45DirectShowのサンプルグラバから受け取ったデータを
DirectSoundを使って再生したいんですが
どうすればいいですか?
0429デフォルトの名無しさん
2009/04/07(火) 16:49:30フルスクリーンモードで作っているのですが
640x360という解像度で実行しようとすると、エラーも出ずに
止まってしまって実行できません
どうすれば640x360という解像度をフルスクリーンで作れますか?
ちなみに、モンハンのベンチマークで640x360のモードで実行できるので
ビデオカードのドライバが対応してないという事も無いようです
0430デフォルトの名無しさん
2009/04/07(火) 17:37:220431デフォルトの名無しさん
2009/04/07(火) 18:43:270432デフォルトの名無しさん
2009/04/07(火) 18:52:49まずはディスプレイモードの一覧を列挙しろよ。
なんでその程度のことすらやろうとしないんだよ?
0433デフォルトの名無しさん
2009/04/07(火) 20:25:28そのエラーをチェックすらしてないだけだろう。
0434デフォルトの名無しさん
2009/04/07(火) 20:55:03プライマリバッファはいらないってこと?キャプチャしながらエフェクトとか難しすぎる
directsoundって舐めてたけどスキンメッシュ並に難しいな
0435デフォルトの名無しさん
2009/04/08(水) 02:29:58諦めた
0436デフォルトの名無しさん
2009/04/08(水) 12:38:02問題はDXUTが邪魔な事
0437デフォルトの名無しさん
2009/04/08(水) 12:46:110438デフォルトの名無しさん
2009/04/08(水) 14:55:56使い方わからなくて頭に来た
0439デフォルトの名無しさん
2009/04/08(水) 15:14:350440デフォルトの名無しさん
2009/04/08(水) 15:31:19最初から絡まってるから邪魔なんだよ
0441デフォルトの名無しさん
2009/04/08(水) 17:13:03スプライトのときは無視されて画面に表示されるです。
どうすけばいいですか?
0442デフォルトの名無しさん
2009/04/09(木) 07:42:110443デフォルトの名無しさん
2009/04/09(木) 07:58:240444デフォルトの名無しさん
2009/04/09(木) 08:28:380445デフォルトの名無しさん
2009/04/09(木) 08:42:17首から下パホイホイ溶岩に埋まって悶え苦しみながら死ねばいいと思うよ。
0446デフォルトの名無しさん
2009/04/09(木) 09:07:280447デフォルトの名無しさん
2009/04/09(木) 12:31:41抜けばいいんだよ
0448デフォルトの名無しさん
2009/04/09(木) 13:10:540449デフォルトの名無しさん
2009/04/09(木) 13:33:370450デフォルトの名無しさん
2009/04/09(木) 20:34:44(メタセコなどの存在は知っていますが自分好みのを作りたいのです。)
しかしmeshというものがいまいち理解できません。
頂点バッファなどの内容をあえてmeshで管理する利点があるのでしょうか?
形状作成機能でティーポットなんて作っても仕方が無いし、
ネットで調べても外部ツールで作成したXファイルを読んでといった説明ばかりで、
meshデータに対して頂点追加や編集したりといったものを見付ける事が出来ませんでした。
0451デフォルトの名無しさん
2009/04/09(木) 20:44:15抜けれないから困ってんだよ
0452デフォルトの名無しさん
2009/04/09(木) 20:57:46D3DXMeshのことを言ってるんなら
俺みたいな馬鹿が簡単にポリゴンを描画できるようにしたもの
だから頂点を編集するような機能がほしければ自分で頂点バッファを管理するべき
0453デフォルトの名無しさん
2009/04/09(木) 21:15:06meshはmeshを含めれるので
頂点バッファとかの管理が楽になる
0454デフォルトの名無しさん
2009/04/09(木) 22:31:54それ以前の問題として、チュートリアルはきちんと終わらせたのか?
0455デフォルトの名無しさん
2009/04/10(金) 00:56:410456デフォルトの名無しさん
2009/04/10(金) 01:00:26それ使えばいいじゃん
0457デフォルトの名無しさん
2009/04/10(金) 01:42:31それって頂点の追加できたっけ
0458デフォルトの名無しさん
2009/04/10(金) 05:20:42DirectSoundFullDuplexCreate8がどうもうまくいかないからDirectSoundCaptureCreate8でキャプチャして他に作ったセカンダリバッファに渡してエフェクトかけて再生しようと思うんだけどできますか?
0459450
2009/04/10(金) 06:18:12ぶっつけ本番いこうとしてます。
やっぱり頂点バッファやインデックスバッファでやればいいんですね。
そもそもモーフィング的なこともするつもりだから全頂点の移動などもやらないといけないし。
あえてメッシュが存在してるのはビデオカードのハード的な面で
大きな利点があるのかと思ってました。
ありがとうございました。
0460デフォルトの名無しさん
2009/04/10(金) 07:52:06いったい何を言ってるんだ?
0461デフォルトの名無しさん
2009/04/10(金) 08:04:450462デフォルトの名無しさん
2009/04/10(金) 18:00:200463デフォルトの名無しさん
2009/04/10(金) 22:51:590464デフォルトの名無しさん
2009/04/10(金) 22:55:500465デフォルトの名無しさん
2009/04/10(金) 22:57:290466デフォルトの名無しさん
2009/04/10(金) 23:13:37エラーで強制終了する
どの部分をどうやって使うのか
実装サンプルくれよーーーーーーーーーーーーーー
0467デフォルトの名無しさん
2009/04/10(金) 23:45:400468デフォルトの名無しさん
2009/04/10(金) 23:46:290469デフォルトの名無しさん
2009/04/11(土) 00:19:420470デフォルトの名無しさん
2009/04/11(土) 00:30:420471デフォルトの名無しさん
2009/04/11(土) 03:52:14てか、ツールも全部ソースついてるんだから書き換えてカスタマイズすればいいじゃない
0472デフォルトの名無しさん
2009/04/11(土) 07:17:33自前で再生は出来ているので、軽量化して代用しますわ。
0473デフォルトの名無しさん
2009/04/11(土) 09:37:45│
├自動車事故で胸部大動脈損傷したあと5キロほど車を運転して、橋の欄干から5mほど飛行して投身自殺した自衛官
│
├400kgの重りを自分で身体に縛り付けて海に飛び込んだ高校生
│
├時速80キロで、ガードレールとガードレールのわずかな隙間を
│タイヤ痕ひとつ残さない絶妙な運転テクニックですり抜けて50m下へ転落したナース集団
│
├ロープを首に巻いて空中浮揚し門扉にひっかかったタクシー運転手
│
├証拠品の銃を奪い取って別の袋から再装填しわざわざ離して自分の
│胸に発射、ただちに飛び散った血をふき取って取調室を掃除、この間5秒。
│
├逆立ちしてマンションの窓際まで、指でひきずった跡をつけながら歩行、
│足から逆エルードして手すりにぶら下がり、空中で方向転換して50cmの隙間に向けて飛行した市議会議員
│
├わざわざ動脈と反対側の手や腕の甲を切って自殺しようとするも未遂、
│自分で自分の背中に針金でおもりを結びつけて川にうつぶせになり死亡
│
├火の気のない玄関で人体発火現象を起こして、燃え尽きるまで気管に煤が入らないようじっと息を止めて待ってた審査委員長
│
├手首の甲をリスカして全身をメッタ刺ししてから、血の跡ひとつつけずに非常ボタンを押した証券会社副社長
│
├口の中に靴下を入れたままガムテープで口を塞ぎ、両手を後ろで手錠により
│拘束し左手には手錠の鍵を持ち玄関内で衣服の乱れもなく窒息死した記者
│
└玄関と窓、共に無施錠のまま首に電気コードを巻かれ、寝室に血痕を残した上で2階から落下したネイリスト
0474デフォルトの名無しさん
2009/04/11(土) 09:38:32* 大阪、タクシー運転手 - 首にロープを巻いて、家の門扉の前でジャンプしロープを門扉にひっかけて首吊り。門扉の高さは数mあった。
* 東京、アフガン航空常務 - 全財産をつぎ込んだFX取引きで失敗し、社内で自分の心臓を刺してから窓枠を乗り越えて離陸。
* 大阪、社長 - 全身をロープと粘着テープで縛って、ビル屋上の鉄柵を飛び越えた。
* 千葉、少年 - 全身をロープと手錠で縛って、柵に囲われた線路に飛び込み。
* 東村山市議 - 逆立ちしてマンションの窓際まで、指でひきずった跡をつけながら歩行、足から手すりにぶら下がり、空中で方向転換して50cmの隙間に向けて飛行。
* 沖縄、社長 - 全身をめった刺しにして自殺。背中や手の甲もきちっと刺してあった。血の跡ひとつつけずに非常ボタンを押した。
* 大阪、潜水ルポライター - 水深数十センチの川で全身を縛ってめった刺しにしてからうつぶせに水中に横たわった。ご丁寧に背中に重しまで乗っけた。
* 神戸、ヤクザ - 自分で自分の首をはねて自殺した。首はみつかっていない。
* 東京 - 火の気のない玄関で人体発火現象を起こして、燃え尽きるまで気管に煤が入らないようじっと息を止めて焼身自殺。
* 愛媛 - 風呂場で自分で自分の頭をハンマーで殴り自殺。
* 茨城、おばさん - 首吊りしたあと歩いて川に入り息を止めて自殺。気管には水なし。
* 熊本 - 某病院主要関係者を乗せ、峠道を時速80キロで、ガードレールのわずかな隙間をタイヤ痕ひとつ残さない絶妙な運転テクニックですり抜けて50m下へダイブ。
* 福岡、高校生 - 400kgの重しを抱いて海に飛び込む。
* 東京 - 頭に穴があく不思議な方法で首吊り。
* 千葉 - 首吊りをしてからわざわざ飛び降り自殺。死因は飛び降りではなく窒息。
* 名古屋 - 車で首吊りをしようとして首を切断。しかし、首がないまま駐車、車庫入れをこなす。
* 大阪 - 歩道橋から飛び降り自殺するも、なぜか歩道橋から45メートル離れた路上で発見される。
0475デフォルトの名無しさん
2009/04/11(土) 19:47:590476デフォルトの名無しさん
2009/04/11(土) 22:06:160477デフォルトの名無しさん
2009/04/11(土) 22:23:460478デフォルトの名無しさん
2009/04/11(土) 22:30:19そろそろ自作プログラムで実装できそうだ
いや〜ここまでが長かったなぁ
デバイスロスト処理しないと一々メッセージウインドウでるんだな
0479デフォルトの名無しさん
2009/04/12(日) 11:52:30一定時間で削除したり、遠いものは簡略化しても、
ミサイルの数によっては大量になりすぎてしまいます。
ビルボードを置く間隔を広くすると、煙の軌跡がつながって見えず、点線のようになってしまいます。
エースコンバットなどではどのような方法で表示しているのでしょうか?
0480デフォルトの名無しさん
2009/04/12(日) 16:49:46ミサイルの煙は1本のテープのように長い帯で描かれている。
それだと横から見たら棒線に見え、場合によっては見えなくなるので帯を十字に配置。
ただ1枚の帯を2倍にしただけで処理が増えるので
今は帯をビルボードにして常にこちらを向いている帯(煙)を演出している。
0481デフォルトの名無しさん
2009/04/12(日) 17:18:25基本は帯。射影後の制御点が一定距離以下ならば帯を薄くしてビルボードを置いてゆく。
もちろんいきなり切り替わりのでなく透明度を変化させる。
0482デフォルトの名無しさん
2009/04/12(日) 19:21:30ミサイルの軌跡を求めて、ピクセルシェーダー使って軌跡との距離によって透明度を上げていく
そうすれば1枚のテクスチャしか使わなくていいんじゃないか
0483デフォルトの名無しさん
2009/04/12(日) 19:32:231枚のテクスチャに煙をアニメーションさせる絵を収めている感じかな。
バンプすら使わなかったりするし。
0484デフォルトの名無しさん
2009/04/12(日) 20:30:490485デフォルトの名無しさん
2009/04/12(日) 20:51:570486デフォルトの名無しさん
2009/04/12(日) 22:01:180488デフォルトの名無しさん
2009/04/12(日) 22:35:590489デフォルトの名無しさん
2009/04/12(日) 23:07:46DiectDraw時代はサーフェースのロストって言ってたな
0490デフォルトの名無しさん
2009/04/12(日) 23:30:05初期〜9まではロストする。
0491デフォルトの名無しさん
2009/04/13(月) 07:00:450492デフォルトの名無しさん
2009/04/13(月) 08:44:330493デフォルトの名無しさん
2009/04/13(月) 08:54:17ドライバモデルの大幅な変更があったからな。
0494デフォルトの名無しさん
2009/04/13(月) 12:50:350495デフォルトの名無しさん
2009/04/13(月) 14:00:08俺使ったこと無いけど
0496デフォルトの名無しさん
2009/04/13(月) 14:03:530497デフォルトの名無しさん
2009/04/13(月) 14:22:24あの手法ってなんていうんでしたっけ?
以前本で見た気がするのですが、今手元になく思い出せなくて困っています。
恐らく誰でも知ってるような名前だったと思うのですが、教えていただけますか?
0498497
2009/04/13(月) 14:32:05お騒がせしてしまい、申し訳ありません。
0499デフォルトの名無しさん
2009/04/13(月) 19:14:080500デフォルトの名無しさん
2009/04/13(月) 19:27:150501デフォルトの名無しさん
2009/04/13(月) 21:35:35なら最初から10使えよっていう。
0502デフォルトの名無しさん
2009/04/14(火) 10:16:260503デフォルトの名無しさん
2009/04/14(火) 10:18:02内部でプライマリバッファが自動的に作成されてたりするのかな?
0504デフォルトの名無しさん
2009/04/14(火) 18:22:400505デフォルトの名無しさん
2009/04/15(水) 00:20:37Draw呼んだらキューに積むだけで
Endのとき処理されるから。
0506デフォルトの名無しさん
2009/04/15(水) 14:13:57上記ページにプロジェクトを載せております。
この自作ソースを生かして、
方向キーを押したらキャラクターがそちらを向きその直進方向に前進するようにしたいのですが、
カメラの向きに上下左右共動いてしまい、思うようにキャラクタが動いてくれません。
この原因は何でしょうか。
また、キャラクタが向いてる方に直進するようにするにはどうすればいいでしょうか。
昨日一日悩んだのですが、思うようにソースコードが書けず困っています。
どなたか教えてください。
現状ソースではRが右周り、Wが左回り、方向キーが上下左右の動きとなっております。
開発言語はC++ 開発環境はVisual C++ 2008 Express Edition OSはWindows XP です。
0507デフォルトの名無しさん
2009/04/15(水) 15:08:13いじって戻していじって戻してって結局最初のソースのはずだけどなぜか正常に動いてる
こういう場合どうやってできたのか知る方法ない?
0508デフォルトの名無しさん
2009/04/15(水) 15:10:160509デフォルトの名無しさん
2009/04/15(水) 15:12:400510デフォルトの名無しさん
2009/04/15(水) 15:17:20VS使ってるならAnkhSVNいいぞ
0511デフォルトの名無しさん
2009/04/15(水) 18:03:15三角関数は知ってるよな?
http://www1.axfc.net/uploader/He/so/217096.txt
0512デフォルトの名無しさん
2009/04/15(水) 18:10:22解決しました。
一応数学は微分積分学、線形代数学まで学んでおりますが、
誰からもDirectX自体教わったことがないので手探りで勉強しております。
ありがとうございました。
0513デフォルトの名無しさん
2009/04/15(水) 18:13:530514デフォルトの名無しさん
2009/04/15(水) 18:33:47何種類かの絵が描いてあって常に足踏みをしながら
上下左右に動いた宝庫煮を向くにはどうすればいいの?
0515デフォルトの名無しさん
2009/04/15(水) 18:40:390516デフォルトの名無しさん
2009/04/15(水) 18:42:320517デフォルトの名無しさん
2009/04/15(水) 18:46:31元絵の描画範囲指定すれば済む話だべ。
具体的なコードが出てくるのなら、DirectX関連として話してもいいのかもしれない。
0518デフォルトの名無しさん
2009/04/15(水) 19:09:170519デフォルトの名無しさん
2009/04/15(水) 20:00:05何種類かの絵が描いてあって常に足踏みをしながら
上下左右に動いた宝庫煮を向くにはどうすればいいの?
0520デフォルトの名無しさん
2009/04/15(水) 20:31:170521デフォルトの名無しさん
2009/04/16(木) 17:53:17メタセコイアなどだと「材質」はポリゴンの板単位で設定してます。
でもDirectxの頂点データはバーテックス一個単位でカラーやら反射光を持ってます。
これはメタセコイアの場合、例えば違う材質同士に所属するバーテックスが有る場合は、
描画する際にその都度該当頂点データを書き換えることで、グラデーションにならない二色にくっきり分かれたポリゴンを
描画しているんでしょうか?
もしそうだとするとポリゴン数がどんどん増えてきた場合に、毎回頂点データを上書き処理が走るという
えげつない事をやっていると思っていいのでしょうか?
実際にゲーム作成する場合もデータ削減のためにポリゴン単位で材質管理して描画の都度に頂点データ上書きなどを
しているのでしょうか?
頂点データの上書き無しに描画しようとすると、例えば
□■
と二面のポリゴンがあって■が通常、□がツヤツヤの場合、
くっきりとした区切りの無い徐々にツヤツヤになる描写になってしまうかと思います。
0522デフォルトの名無しさん
2009/04/16(木) 18:42:030523デフォルトの名無しさん
2009/04/16(木) 19:36:190524デフォルトの名無しさん
2009/04/16(木) 20:40:53return E_FAIL;
↑コンパイルできないのですがなぜでしょうか?
環境はVC2008++でdirectX9SDKです。
追加の依存ファイルにはdxerr.lib dxguid.lib d3dx9.lib d3d9.lib winmm.libを指定しています。
エラー内容は、
'g_pD3D' : 定義されていない識別子です。
'D3D_SDK_VERSION' : 定義されていない識別子です。
'Direct3DCreate9': 識別子が見つかりませんでした
0525デフォルトの名無しさん
2009/04/16(木) 20:45:100526デフォルトの名無しさん
2009/04/16(木) 20:47:46ヘッダはwindows.hをインクルードしていますが他に何か必要なものがあるのでしょうか?
0527デフォルトの名無しさん
2009/04/16(木) 20:54:300528524
2009/04/16(木) 20:58:17ありがとうございます。おかげで2個のエラーを解決できました!!
しかし1つだけエラーが残ってしまいました。↓
'g_pD3D' : 定義されていない識別子です。
よければこちらの解決法もご教授願います
0529デフォルトの名無しさん
2009/04/16(木) 21:11:01extern int g_pD3D;
0530524
2009/04/16(木) 21:20:52やってみたのですが78行目「if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )」をさしてエラーが発生しました。
内容⇒ '=' : 'IDirect3D9 *' から 'int' に変換できません。
まあ、自分でもう少し解決策を探してみます。
ご指導くださった皆さんありがとうございました。
0531デフォルトの名無しさん
2009/04/16(木) 21:21:36そもそも宣言すらされてない予感
LPDIRECT3D9 g_pD3D;
ってどっかにあるか?
別ソースファイルにあったりしないか?
0532デフォルトの名無しさん
2009/04/16(木) 21:23:15変数の型はDirect3DCreate9の戻り値の変数と同じ。
エラーにも出ているのに解決策を探るとかそういう問題じゃないだろうに。
0533デフォルトの名無しさん
2009/04/16(木) 21:54:140534デフォルトの名無しさん
2009/04/17(金) 00:00:080535デフォルトの名無しさん
2009/04/17(金) 13:01:59ピクセルシェーダでテクスチャの値に法線を使ってかけ合わせるんですか?
0536デフォルトの名無しさん
2009/04/17(金) 13:14:430537デフォルトの名無しさん
2009/04/17(金) 13:25:49どこかでピクシェルシェーダは遅いと書いてあったんですが、
マルチテクスチャで光テクスチャと絵テクスチャをブレンドしてピクセルシェーダに渡すとかもヘルプに書いてあったんですが
意味がわかりません、頂点シェーダで光テクスチャを法線から作りだすことができるってことなんでしょうか?
0538デフォルトの名無しさん
2009/04/17(金) 13:58:39ピクセルシェーダーでそのカラーとテクスチャカラーを掛け算するだけ
光テクスチャ?ライトマップの事かな
どっちにしても頂点シェーダでテクスチャは作れません
0539デフォルトの名無しさん
2009/04/17(金) 16:48:51左向きの右足左足、右向きの右足左足…略
になるのかと聞いているのだが?
0540デフォルトの名無しさん
2009/04/17(金) 16:50:060541デフォルトの名無しさん
2009/04/17(金) 18:00:54thxわかってきました
光源が移動しないものに関しては初期化時に一度だけCPUで光テクスチャを作ってマルチで渡して、
変化があるが全体的な光は頂点シェーダで計算してプリミティブ単位の大雑把なライティングにして、
細かい物でしかも変化のあるものはグラデーションなどもできるようにピクシェルシェーダでピクセル単位で計算すればいいんですね
もう完璧ですありがとうございました
0542デフォルトの名無しさん
2009/04/17(金) 23:14:29プコリンパイルヘッダーが見つからないのですが
0543デフォルトの名無しさん
2009/04/17(金) 23:18:16・・・次の方どうぞ
0544デフォルトの名無しさん
2009/04/18(土) 19:13:27補間されると書いてあるんですが、頂点シェーダから3頂点送られてくるまでピクセルシェーダは待ってくれるんですか?
1頂点で補間ってイメージできないんですが、どうなってるんでしょうか
0545デフォルトの名無しさん
2009/04/18(土) 19:31:47エスパーするが、シェーダ云々以前にDirect3Dが描画する基本単位は
『頂点』ではなく『頂点三つからなる三角形』だ。
0546デフォルトの名無しさん
2009/04/18(土) 19:49:10float4 VertexShader(float4 Position : POSITION) : COLOR
とすると
VertexShader関数に送られるのは1頂点づつですよね、でreturnされたものが
float4 PixelShader(float4 Color : COLOR) : COLOR
の引数Colorに入れられるまでが1頂点じゃないんですか?
pass一回で指定した数のプリミティブを送ってるのはわかるんですが、データの流れが1頂点づつに見えるんです
0547デフォルトの名無しさん
2009/04/18(土) 20:13:15頂点を1つづつVertexShaderで処理し終わったら、
VertexShaderから3つの頂点を与えられた「ラスタライザ」というユニットが
それの中を補完し、ラスタデータ単位で、PixelShaderに与えるんだ。
だからPixelShaderの引数は頂点でもポリゴンでもない。
ラスタデータだ。(ラスタデータからピクセルデータを作るからPixelShaderっていうんだよ。)
ちなみにラスタデータってのはピクセルのように必ずしも色じゃないんだが、
色を作るための情報をピクセルと同じように、
平面を分割するという方法で持ってるデータだな。
たとえばテクスチャのUV値なんかも、ラスタデータは持てる。
これは色じゃないが、ピクセルシェーダによってテクスチャを引いてくりゃ色になるだろ。
0548デフォルトの名無しさん
2009/04/18(土) 20:33:22すごくよくわかりました。ピクセルシェーダを使いこなせるのは当分先なこともわかりました。
ありがとうございました!
0549デフォルトの名無しさん
2009/04/18(土) 23:40:29祠に入れたものは引き継ぐ方法はありますか?
0550デフォルトの名無しさん
2009/04/18(土) 23:51:500551デフォルトの名無しさん
2009/04/19(日) 08:33:17意味は判るが意味が全く判らんw
0552デフォルトの名無しさん
2009/04/19(日) 15:42:36学校を中退することにしたので作る必要がなくなりました
0553デフォルトの名無しさん
2009/04/19(日) 15:47:04float4(1.0, 1.0, 1.0, 0.2) : COLOR
をそのままPSに贈ったんですが、テクスチャと合成されません。テクスチャ描画の前に半透明ONにすると下まで全部透けるので上乗せしたいCOLOR
のアルファ値でテクスチャの色合いを変化させたいんですが、アルファ値1.0より小さくしてもテクスチャが透けないんです。どうなってるんですか?
0554デフォルトの名無しさん
2009/04/19(日) 15:55:060555デフォルトの名無しさん
2009/04/19(日) 16:11:52Draw(){
パステクスチャで描画; // テクスチャは描画される
SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
パスCOLORで描画; // 一色で埋まるがテクスチャとブレンドされない
SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
}
//.fx
テクニック{
パステクスチャ{
VS
PS
}
パスCOLOR{
float4 VS(posision) : COLOR{return float4(1.0, 1.0, 1.0, 0.2)}
PS(float4 in : COLOR) : COLOR{return in}
}
}
0556デフォルトの名無しさん
2009/04/19(日) 16:19:32SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
0557デフォルトの名無しさん
2009/04/19(日) 16:29:21アルファ値で掛け合わされるのかと思いました、ありがとうございました。
もう少しで波に乗れそうなんです、またお願いします!
0558デフォルトの名無しさん
2009/04/19(日) 17:22:440559デフォルトの名無しさん
2009/04/19(日) 18:44:27D3DPT_TRIANGLELISTに比べて、D3DPT_TRIANGLESTRIPやD3DPT_TRIANGLEFANは劇的に高速になるのでしょうか?
もしそうであれば、例えば1万程度の頂点数の物体描画する時に、
全てD3DPT_TRIANGLELISTで描画せずに、インデックス情報組み立て時に、
物凄い工夫して分析して、出来る限りD3DPT_TRIANGLESTRIPやD3DPT_TRIANGLEFANで描ける部分を抽出し、
それぞれ別個に描画するという物凄い手間をかける価値はあるのでしょうか?
0560デフォルトの名無しさん
2009/04/19(日) 18:51:57ごく限られた形状に対して最適化するのは可能です。
0561デフォルトの名無しさん
2009/04/19(日) 19:00:26質問は
>価値はあるのでしょうか?
ほとんど価値はない。
0562559
2009/04/19(日) 19:01:08自分が考えてる最も簡単なものはTRIANGLELIST用グループとFAN用グループに分けて、
頂点からの接続ラインが一定数以上のものを検索してFAN用グループに移動。
これの繰り返しで例えば人体モデルなら全身に斑点が出来るようにFAN用グループが削り取られて、
余った部分をTRIANGLELISTで描画。
効果が絶大であればトライする価値があるかなと思いました。
0563デフォルトの名無しさん
2009/04/19(日) 19:11:351に感動したのに12までこの濃さで続くんですか?最新から買うといいとかどっかで見たんですが1を読んだ後は1からだとしか思えません
0564デフォルトの名無しさん
2009/04/19(日) 19:15:390565デフォルトの名無しさん
2009/04/19(日) 19:19:15田舎だと厳しいが
0566デフォルトの名無しさん
2009/04/19(日) 19:29:23http://www.borndigital.co.jp/book/detail.php?id=157
赤字で書いてあるね。
1の次は最新刊買えば?
0567デフォルトの名無しさん
2009/04/19(日) 23:44:400568デフォルトの名無しさん
2009/04/20(月) 00:15:330569デフォルトの名無しさん
2009/04/20(月) 01:24:43一回のDrawPrimitveで済ませるときだけ。それ以外は全敗北。
と4〜5年前は思っていたけど、いまでもこんな感じ?
0570デフォルトの名無しさん
2009/04/20(月) 01:28:54スキンメッシュなんかはシェーダではやらない
何回も塗る必要があるからやっぱり汎用性重視
0571デフォルトの名無しさん
2009/04/20(月) 01:51:360572デフォルトの名無しさん
2009/04/20(月) 01:55:56スキンをシェーダでやると
バンプ+スキン
バンプ+ノーマル
スペキュラ+スキン
スペキュラ+ノーマル
・
・
・
みたいにエフェクトごとにスキン有無全部作らないといけなくて面倒だぞ
まあ、面倒なだけだけど
0573デフォルトの名無しさん
2009/04/20(月) 02:03:03バッチファイル使ってfxcで必要な分吐くだけなのに何がめんどいんだ?
0574デフォルトの名無しさん
2009/04/20(月) 02:09:58別にスキンメッシュに限らないけど
頂点変換あるたびそれ入れんのー?w
やりづれー
0575デフォルトの名無しさん
2009/04/20(月) 02:11:25シャドウマップ×3・本体・本体鏡像 の例では5回もスキニングの計算やるより
自前でメモリ上に変換したやつを使った方がいいのだろうな。
DX10ならそれもHWでできるし。
0576デフォルトの名無しさん
2009/04/20(月) 02:13:43VertexShaderの負荷なんてPixelShaderとか
αブレンドなんかに比べるとゴミみたいなもんだぞ。
0577デフォルトの名無しさん
2009/04/20(月) 02:50:59俺は簡単なシェーダジェネレータ作ってある程度自動生成させてるからそれほどでもない
0578デフォルトの名無しさん
2009/04/20(月) 08:03:12スキニングなしのモデルは、
スキニングのウエイト数0とするのが吉
0579デフォルトの名無しさん
2009/04/20(月) 11:17:330580デフォルトの名無しさん
2009/04/20(月) 11:20:140581デフォルトの名無しさん
2009/04/20(月) 21:23:160582デフォルトの名無しさん
2009/04/20(月) 23:02:40マルチトラックのスキンメッシュをアニメーション表示するサンプルを勉強してますた
で、スキンメッシュそのものをアニメーションさせることはできるようになったんですが
そのコードにプレーンなメッシュも描画するコードを加えたところ、
スキンメッシュをDrawSubSetした後にプレーンなメッシュをDrawSubSetすると
0x7c812afb で初回の例外が発生しました: Microsoft C++ の例外: long (メモリの場所 0x0012fb28)。
と出力ウインドウに表示されてプレーンなメッシュのほうが表示されません
しかし、エラーでとまるわけでもなくスキンメッシュのほうだけは正常に表示されます
スキンメッシュかプレーンなメッシュか片方だけをDrawSubSetすると正常に表示されます
ぐぐったところBeginScene()とEndScene()の間でDrawSubSetしていなかったというブログはみつかったものの
コードを確認したところそのミスはしておらず、どこを修正すればいいのかわからなくて困っています
同じような症状を解決されたかたはいませんでしょうか?
0583デフォルトの名無しさん
2009/04/20(月) 23:21:440584デフォルトの名無しさん
2009/04/20(月) 23:34:32インデックス形式で描画できないのでしょうか?
たとえば、頂点座標ストリームは0、法線ストリームは1、UVはストリーム2と指定して、
それぞれのインデックスを1,2,2 のように3つずつ与えて描画したいのですが
0585デフォルトの名無しさん
2009/04/20(月) 23:35:520586デフォルトの名無しさん
2009/04/21(火) 00:03:45やっぱりできないのですね
これができればモデル容量をかなり減らせると思ったのですが
0587デフォルトの名無しさん
2009/04/21(火) 00:20:40http://www.kajisoku-f-2.com/dd/img2-03/img983_m03.jpg
http://10e.org/samcimg/el7.jpg
http://10e.org/samcimg/el8.jpg
0588デフォルトの名無しさん
2009/04/21(火) 01:02:15別々に指定してもせいぜい法線がちょっと減らせる程度だと思うが・・・。
そもそも別途頂点ごとにインデックスが必要になるから煩雑になるし。
0589デフォルトの名無しさん
2009/04/21(火) 02:42:21日本だと俺がどれだけやりたがっても通らない。
デザイナーもやりたがらないし。
0590デフォルトの名無しさん
2009/04/21(火) 06:45:36出力するファイルが微妙だし、無料版は機能制限あるが、そういうのはmental millだな
0591デフォルトの名無しさん
2009/04/21(火) 07:30:23デバッグモードでエラーログみろよ
0592デフォルトの名無しさん
2009/04/21(火) 11:02:030593デフォルトの名無しさん
2009/04/21(火) 11:05:310594デフォルトの名無しさん
2009/04/21(火) 11:06:590595デフォルトの名無しさん
2009/04/21(火) 15:19:39MSDN見る限り値自体は0x08780014のようなのですが、これを使えばいいんですかね。
0596デフォルトの名無しさん
2009/04/21(火) 15:42:07これか。
たしかにdsound.hにほとんど入ってるのにそれだけないな。
まあやってみれば。
0597デフォルトの名無しさん
2009/04/21(火) 16:41:55の1931行目にはあるな
// The call succeeded, but not all of the optional effects were obtained.
#define DS_INCOMPLETE MAKE_HRESULT(0, _FACDS, 20)
0598595
2009/04/21(火) 16:48:58とりあえず、dsound.hのインクルードの後、定義されてなければ定義する方向でやってみます。
ありがとうございました。
0599デフォルトの名無しさん
2009/04/21(火) 16:52:379で無くなったのか
0600595
2009/04/21(火) 16:57:580601582
2009/04/21(火) 19:43:21スキンメッシュをDrawしたあと、
プレーンなメッシュをDrawするまえに
pDevice->SetRenderState(D3DRS_VERTEXBLEND, 0);
をすることでエラーでなくなりまつた
0602デフォルトの名無しさん
2009/04/22(水) 00:06:360603デフォルトの名無しさん
2009/04/22(水) 00:07:280604デフォルトの名無しさん
2009/04/22(水) 00:08:260605デフォルトの名無しさん
2009/04/22(水) 00:27:350606デフォルトの名無しさん
2009/04/22(水) 02:46:21ttp://blogs.msdn.com/DirectX/
今のところ大した情報なし
0607デフォルトの名無しさん
2009/04/22(水) 20:43:040608デフォルトの名無しさん
2009/04/22(水) 21:25:02モデルを描画したいのですが、
pMesh->GetAttributeTable(NULL, &sz);
D3DXATTRIBUTERANGE* g_pAttrTable = new D3DXATTRIBUTERANGE[sz];
pMesh->GetAttributeTable(g_pAttrTable, &sz);
これで属性テーブルを抜き出した後どうすれば良いでしょうか?
DrawIndexedPrimitiveで使おうとするとエラーがでてしまいます
0609デフォルトの名無しさん
2009/04/23(木) 03:17:53DrawIndexedPrimitiveのインデックスに使うにはFaceStart * 3, FaceCount * 3にする必要があるとかじゃね
0610デフォルトの名無しさん
2009/04/23(木) 08:12:53Count * 3でできました
ありがとうございます!
0611デフォルトの名無しさん
2009/04/23(木) 18:40:36キャプチャバッファ->Lock( g_dwNextCaptureOffset, lLockSize,
&pbCaptureData, &dwCaptureLength,
&pbCaptureData2, &dwCaptureLength2, 0L );
再生バッファ->Lock( 0, size, &pbPlayData, &dwPlayLength, &pDate, &dwLength, 0 );
再生バッファ->Unlock( pbPlayData, dwPlayLength, pDate, dwLength );
キャプチャバッファ->Unlock( pbCaptureData, dwCaptureLength,
pbCaptureData2, dwCaptureLength2 );
再生バッファをロックしたあとキャプチャバッファからデータをコピーしたいのですが上手くいきません。どなたかご教授おねがいします。
0612デフォルトの名無しさん
2009/04/23(木) 23:11:24wwwwwwwwwwwwwwww
0613デフォルトの名無しさん
2009/04/24(金) 00:41:55DirectXでGPUで計算して頂点変換を行っているゲームを作っています。(固定変換ではなくシェーダーで)
一台目:グラボありのデスクトップパソコン
二台目:グラボなしのミニノートパソコン
でチェックをしています。
しかし現在だとノートだとグラボがない為、
バーテックスシェーダー・ピクセルシェーダーがバージョンが低く動かせません。
CPUで変換するとノートPCでもPCでも動くんですけど、
CPUじゃもちろんGPU変換ほど速度でませんよね?
市販の3DゲームはノートPCでもグラボありのデクストップでも両方動作してますが
それはグラボの有無を認識してCPUかGPU計算か判断してるのでしょうか?
それともノートでもバージョンによってはGPUの計算が出来るのでしょうか?
もし前者であればグラボの有無を確認する方法を教えてくれたらありがたいです。
後者であれば何かヒントをくれるとありがたいです。
0614デフォルトの名無しさん
2009/04/24(金) 00:55:40D3DPS_VERSION
でぐぐれば幸せになれるかもしれない
0615デフォルトの名無しさん
2009/04/24(金) 01:20:520616デフォルトの名無しさん
2009/04/24(金) 08:52:34ノートPCつってもネットブックやミニノートでもなきゃ
普通にビデオカード積んでるし。
ノート云々関係なくシェーダーのバージョンチェックはちゃんとするべき。
0617デフォルトの名無しさん
2009/04/24(金) 09:16:43/)
///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0618デフォルトの名無しさん
2009/04/24(金) 11:51:350619デフォルトの名無しさん
2009/04/24(金) 12:41:16グラフィックカードを買い換える気分でノートを買い換えたくなるから困る
0620611
2009/04/24(金) 19:59:47そもそも再生バッファをロックしたあとn
0621デフォルトの名無しさん
2009/04/24(金) 20:29:120622デフォルトの名無しさん
2009/04/27(月) 02:42:130623デフォルトの名無しさん
2009/04/27(月) 02:46:490624デフォルトの名無しさん
2009/04/27(月) 03:10:120625デフォルトの名無しさん
2009/04/27(月) 19:34:020626デフォルトの名無しさん
2009/04/27(月) 21:33:100627デフォルトの名無しさん
2009/04/27(月) 21:36:16なんで初心者はそっちを選ぶの?
0628デフォルトの名無しさん
2009/04/27(月) 22:02:55シェーダー言語の解説がほとんど無い
そもそも凝ったことするつもりが無い
この辺かな?
0629デフォルトの名無しさん
2009/04/27(月) 22:41:240630デフォルトの名無しさん
2009/04/27(月) 23:07:17捨てるほどネット上に転がってるじゃねぇか。
0631デフォルトの名無しさん
2009/04/28(火) 00:38:310632デフォルトの名無しさん
2009/04/28(火) 00:41:300633デフォルトの名無しさん
2009/04/28(火) 00:42:461軸固定ならそれなりに楽なんだけど?
ホントに全部回転してなきゃダメなの?
0634デフォルトの名無しさん
2009/04/28(火) 01:40:16何軸で回転してるのかすら分からないんじゃハイコストすぎて計算する気が起きない
たぶんだけど、ベクトルの回転角度が必要なんじゃなくて
ある方向を指すための回転ベクトルが必要なんじゃないの?
本当にやりたいことを省略せずに書いてごらん
0635デフォルトの名無しさん
2009/04/28(火) 02:06:11どうやるんだったっけw
0636デフォルトの名無しさん
2009/04/28(火) 02:11:15ローテーションオーダー順に軸の向きを向くように回転させていけばいいだけじゃね?
だめ?
0637デフォルトの名無しさん
2009/04/28(火) 02:20:57全ての頂点に1−0の範囲で深度値を作った後、光に遮られてるかどうかはどうやって計算すればいいんですか?
光点と調査点の間に遮蔽物があるかどうかを調べるには1調査点につき全ての存在する点を調べないといけなく無いですか?
ありえないんですけど、どうなってるんですか?
0638デフォルトの名無しさん
2009/04/28(火) 02:26:13複数面がある物体を点で手動で描いたんですが一部だけテクスチャを張り付けたくないんですが頂点タイプの混在をしたいんです
0639デフォルトの名無しさん
2009/04/28(火) 02:55:390640デフォルトの名無しさん
2009/04/28(火) 08:35:47>全ての頂点に1−0の範囲で深度値を作った後、
これは、シャドウマップを作るってことでいいんだよな。
そのシャドウマップを作る為に求めた深度値を
各参照点につき、もう一度同じ計算で求め、深度値と比較する。
これはピクセルシェーダの工程だから、ピクセル毎に行う。
sShadowDepth = tex2Dproj( spShadowMap, vVertPosInLight );
sDepth = vVertPosInLight.z / vVertPosInLight.w;
sAlpha = sDepth > sShadowDepth : 0.0f : 1.0f;
0641631
2009/04/28(火) 08:41:171軸固定して射影してあげればいいんですかね。試してみます。
>>634
はい、ある方向を指すための回転行列が欲しいです。
>>635
今後の勉強のためにベクトル→オイラー角のやり方を質問しました。
そして、オイラー角から回転行列を求めようと思っていました。
0642デフォルトの名無しさん
2009/04/28(火) 08:52:06ここをみると幸せになれるかも
ttp://marupeke296.com/DXG_No47_CharacterDirectionMatrix.html
0643デフォルトの名無しさん
2009/04/28(火) 10:58:31只今、メッシュに親子関係を持たせるクラスを設計しています。
概ね描画も出来てroot(一番上の親)を回転や移動をすると、子や兄弟も
一緒に動くまでは、実装できました。
そこまでは、単純に行列の積で出せるので、出来たんですが。
そこから、当たり判定などをつける際に躓きました。
OBB判定などを行う場合メッシュの絶対位置や絶対スケール、
絶対角度が必要になってしまいます。
しかし、行列から位置は(mat._41,mat._42,mat._43)を取り出し、
スケールは、rootまでをたどり単純に掛け算をして求められたんですが(コストかかりすぎですが。。。)
角度だけがどうにもならず苦戦しています。
位置はよしとして、スケール及び角度をスマートに行列から逆算する方法はないでしょうか?
よろしくお願いします。
0644デフォルトの名無しさん
2009/04/28(火) 11:06:20各軸のサイズが分かっていれば計算できるのになんで角度が必要なの?
0645デフォルトの名無しさん
2009/04/28(火) 11:39:31すみません、大きな勘違いをしてました・・・
自己解決しました・・スレ汚しすいませんでした・・・
0646デフォルトの名無しさん
2009/04/28(火) 13:51:35こういうのって絶対自己じゃないよな
自尊心が過大すぎるんだろう
0647デフォルトの名無しさん
2009/04/28(火) 13:53:57なぜか行列一本でやろうとして無駄なコストをかけようとするのが不思議でならない。
0648デフォルトの名無しさん
2009/04/28(火) 14:25:430649デフォルトの名無しさん
2009/04/28(火) 22:03:13すでに表示してる以上姿勢は既に分かってるんだから計算するまでもないだろ
0650デフォルトの名無しさん
2009/04/28(火) 22:35:42このプログラムは自動的にDLLを読み込む設定にどうのこうのって警告されます
0651デフォルトの名無しさん
2009/04/28(火) 23:51:150652デフォルトの名無しさん
2009/04/29(水) 00:43:430653デフォルトの名無しさん
2009/04/29(水) 08:42:330654デフォルトの名無しさん
2009/04/29(水) 17:15:02ビューポートの MinZ、MaxZ をそれぞれ 0.0f、1.0f にしています。
ところが、とあるマシンで、z 座標がちょうど 1.0f の座標変換済み頂点(D3DFVF_XYZRHW)が描画されない現象が起きました。
(現象が起きたのはノートPCで、グラフィックカードは dxdiag で調べたところ Mobile Intel(R) 945GM Express Chipset Family とありました。)
これはデバイスの能力の問題なのでしょうか。つまり、D3DCAPS9 の何らかの値を調べることで、判定できる問題なのでしょうか?
それとも、仕様と割り切って、1.0f ちょうどの頂点は作らないようにするべきなのでしょうか。
よろしくお願いします。
0655デフォルトの名無しさん
2009/04/29(水) 17:35:34っていうか俺の環境だと1.0fは描画されないから、むしろ描画されないものだと思っていた
ちなみにビデオカードはnVIDIAのGTX280
0656デフォルトの名無しさん
2009/04/29(水) 17:44:46Radeon、Geforce 含む複数の環境で正常に描画されていたので安心してたのですが、
念のため 0.1f 〜 0.9f あたりにまるめるように組んでいこうと思います。
ありがとうございました!
0657デフォルトの名無しさん
2009/04/29(水) 21:10:290658デフォルトの名無しさん
2009/04/30(木) 21:07:58これってローカルで見たい。
MSDNライブラリに入っていますか?
0659デフォルトの名無しさん
2009/05/01(金) 23:23:16 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
10 次 元 バ ル ク 空 間(次元が異なるため比較不可能)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
膜 宇 宙(太陽の∞倍)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
グ レ ー ト ウ ォ ー ル
 ̄ ̄ ――__(長さ:太陽の3500兆倍、幅:太陽の2100兆倍)__―- ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
_,,,,,,,,_
/` `'i、
超銀河団(太陽の約680兆倍) | l
゙l、 /
`'ー---'"
銀河系(太陽の6800万倍) o
IRS5(太陽の10000倍の恒星の種) ・
太陽(直径13万km)
地球 (直径1.27万km)
0660デフォルトの名無しさん
2009/05/02(土) 15:14:35頂点バッファなのですが、「CreateVertexBuffer」で
サイズを指定してメモリを確保していると思いますが、
これはデバイスタイプが「D3DDEVTYPE_HAL」の時は
ビデオメモリ上に確保されプリミティブ描画時にハードウェア処理される
ということで合ってますでしょうか?
迷っていることは、プリミティブが動的に変化する場合、
頂点が増える減るたびに頂点バッファを作り直さなければならない
のかと言う点です。
自分の結論としては作り直さなければならないという結論が出ました。
変更があるたびにリリース→作成としなければならないので
レスポンスが悪いなと感じているんですがしょうがないのでしょうか?
みなさんどうされていますか?
0661デフォルトの名無しさん
2009/05/02(土) 15:19:43違う。
バッファが作られる先は、CreateVertexBufferの第4引数
のPOOLで決まる。
0662デフォルトの名無しさん
2009/05/02(土) 15:36:30即レスありがとうございます。
ちょっと「Pool」について日本語ヘルプ見てみます。
自分のコードは「D3DPOOL_MANAGED」使ってました。
ヘルプ見る限りでは、
”D3DPOOL_MANAGED は、ほとんどのアプリケーションで
D3DPOOL_DEFAULT よりも適している場合が多い。”
と書いてあるので、「MANAGED」使えばいいのかなと思いますが、
これはビデオメモリを使っているということなんですかね?
0663デフォルトの名無しさん
2009/05/02(土) 15:39:140664デフォルトの名無しさん
2009/05/02(土) 15:46:59ハードウェア次第でビデオメモリが使われるわけですね。
自分がしたいと思っていることは動的な頂点バッファの使用方法ですが、
「Pool」からたどっていくと、
ヘルプにそれらしきことが書いてありました!!
ちょっとヘルプ読んでみます。
動的な頂点バッファって使ったことありますか?
どさくさにまぎれてまた質問してすいません。
0665デフォルトの名無しさん
2009/05/02(土) 17:11:01そもそも勘違いしていたようです。
動的な頂点バッファとは頂点の追加や挿入・削除が可能なものと
思っていましたが、動的な頂点バッファでも頂点数はやっぱり
固定みたいです。位置とか色とかを動的に変更できるものかと。
そうすると求めているものとは違うので、
(私は頂点を追加したり挿入したり削除したい)
自分で動的配列作って「DrawPrimitiveUP」を呼ぶようにするしか
無いと思っています。
自分で用意するとなるとビデオメモリは使えなくなるので、
パフォーマンスが低下すると思います。
みなさん「DrawPrimitiveUP」って使ったりしてますか?
0666デフォルトの名無しさん
2009/05/02(土) 18:30:31頂点バッファを使う場合に、最大の頂点数が事前に分かっていれば、
それに合わせて作ればいい。
あるいは足りなくなったときだけサイズを拡張する方法が良いかと。
もし毎フレーム頂点バッファの内容が変わるなら、Lockの仕方とかも
注意が必要なので、面倒ならUP系でドライバ任せが一番いい。
UP系は頂点バッファを適切に使うよりほんの少しだけ遅いが、十分速い。
頂点バッファの使い方が下手ならUP系の方が速い。
0667デフォルトの名無しさん
2009/05/02(土) 18:53:20回答ありがとうございます。
頂点の座標は毎フレームで変わりますし、入力パラメータ次第で、
頂点数も変わります。曲面の詳細度制御みたいなことをさせたいので。
このような場合は自分で頂点を管理した方が良いってことですよね?
0668デフォルトの名無しさん
2009/05/02(土) 21:43:06そもそも実際に組んで問題が出ることを確認する前からゴチャゴチャ考えるのは時間の無駄。
0669デフォルトの名無しさん
2009/05/02(土) 21:54:17それ、DirectX9じゃないとダメ?
10以降だともうちょっといい解決方法あると思うんだが。
0670デフォルトの名無しさん
2009/05/02(土) 22:12:58バッファが足りない場合だけというはちょっとピンとこないです。
最初に100個とか確保しておくとか言うことでしょうか。
足りなくなれば頂点バッファを作成しなおして、少ない場合は
使い回すって事ですかね、複雑になりそうな気がするのですが。
実際に組んでないんで申し訳ないですが、組む前の展望が欲しいのです。
>>669
9でお願いします。持ってる本、動作環境、日本語ヘルプの関係からです。
0671デフォルトの名無しさん
2009/05/02(土) 22:20:17まったく組んでない訳ではないです(汗。
頂点バッファ使ってプリミティブ描画までは行ったのですが、
頂点バッファって固定長の配列じゃね?ってとこでつまづいてます。
0672デフォルトの名無しさん
2009/05/02(土) 22:31:37どんなアドバイスを受けても、ゴチャゴチャ言って何もしないタイプだ。
0673デフォルトの名無しさん
2009/05/02(土) 22:38:51ユーティリティ関数の類。
要するに、サイズ自動伸張などを隠蔽した動的頂点バッファだよ。
0674デフォルトの名無しさん
2009/05/03(日) 00:52:29意味分からないですけど、勉強になります。
質問しながらいろいろと調べて勉強になりました。
とりえあず色々やってみようと思います。
みなさん、あざっす。
0675デフォルトの名無しさん
2009/05/03(日) 06:18:53それとも速度とか変わらなかったりします?
0676デフォルトの名無しさん
2009/05/03(日) 06:51:060677デフォルトの名無しさん
2009/05/03(日) 07:32:128000ポリで切り替えて試してみましたが、速度変わらかったっす。
どっちもビデオメモリ使ってるみたいですね。
ヘルプで推奨されてるぐらいだからMANAGEDで良いのでは。
0678デフォルトの名無しさん
2009/05/03(日) 07:40:310679デフォルトの名無しさん
2009/05/03(日) 09:02:29D3DPOOL_MANAGEDは、デバイスロストした際に中身を復元できるように
システムメモリにコピーを持っているだけで、テクスチャそのものはVRAMに
乗っているから、速度は変わらないよ。
D3DPOOL_MANAGEDの仕事は
・デバイスロストした再に自動で中身を復元する
・テクスチャがVRAMに収まりきらないときに自動的に必要性の低いテクスチャを解放する
主にこの2つ。
前者はともかく、後者のテクスチャ管理は自分で実装すると結構面倒。
0680デフォルトの名無しさん
2009/05/04(月) 01:01:24第三者だが、すごく勉強になった。
0681デフォルトの名無しさん
2009/05/04(月) 15:00:39どこが間違っているのでしょうか。教えてください。
・ソース
Vertex3D *data; //FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX1;
HRESULT hr = mesh->LockVertexBuffer(0, (void**)&data);
if FAILED(hr) return;
unsigned int num = mesh->GetNumVertices();
for (unsigned int i = 0; i < num; i++) {
//rは球の半径
float x = data[i].x / r;
float y = data[i].y / r;
float z = data[i].z / r;
float phi = acos(y);
data[i].tv = (float)(phi / D3DX_PI);
if (y == 1.0f || y == -1.0f) {
data[i].tu = 0.5f;
} else {
data[i].tu = (float)(acos(max(-1.0, min(1.0, z / sin(phi)))) / (2.0 * D3DX_PI));
}
if (x > 0) data[i].tu = 1.0f - data[i].tu;
}
・参考
http://msdn.microsoft.com/ja-jp/library/bb932345.aspx
0682デフォルトの名無しさん
2009/05/04(月) 15:05:260683デフォルトの名無しさん
2009/05/04(月) 15:19:310684デフォルトの名無しさん
2009/05/04(月) 15:32:23たぶん、正しく設定しています。
>>683
もう、自分で頂点設定してやろうかなぁ・・・
0685デフォルトの名無しさん
2009/05/04(月) 17:21:05何を設定しているのか具体的にかけよ。
0686デフォルトの名無しさん
2009/05/04(月) 18:05:280687デフォルトの名無しさん
2009/05/04(月) 18:07:330688デフォルトの名無しさん
2009/05/04(月) 18:08:480689デフォルトの名無しさん
2009/05/04(月) 19:33:52テクスチャラッピング?
SetRenderState(D3DRS_WRAP0, D3DWRAPCOORD_0)
0690デフォルトの名無しさん
2009/05/04(月) 19:44:29>>686
>>689
すみません設定してませんでした。実家に帰省していて環境がないので戻ってから試してみます。ありがとうございました。
0691デフォルトの名無しさん
2009/05/04(月) 20:04:26my3dlib.cppに
#include "my3dlib.h"
//グローバル変数
LPDIRECT3D9 g_pD3D = NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;
float g_aspect = 1.0f;
と書いて
my3dlib.hに
struct Model{
LPD3DXMESH pmesh;
D3DMATERIAL9* pmaterials;
LPDIRECT3DTEXTURE9* ptextures;
DWORD nummaterials;
BOOL used;
}
extern LPDIRECT3D9 g_pD3D;
extern LPDIRECT3DDEVICE9 g_pd3dDevice;
extern float g_aspect;
と記述すると
型指定子がありませんってエラーがでるんですがどうすればいいんでしょうか?
structの部分がないとエラーは出ないんですが・・・
0692デフォルトの名無しさん
2009/05/04(月) 20:12:040693デフォルトの名無しさん
2009/05/04(月) 20:27:40すいません
0694デフォルトの名無しさん
2009/05/04(月) 21:22:31実行時のバグではなくコンパイル時のエラーはかなり分かりやすい問題だから、早く自力で解けるようになったほうがいい。
0695デフォルトの名無しさん
2009/05/04(月) 22:20:390696デフォルトの名無しさん
2009/05/04(月) 23:24:590697デフォルトの名無しさん
2009/05/04(月) 23:25:47どういうFVFの組み合わせかわかりますか?
0698デフォルトの名無しさん
2009/05/04(月) 23:47:48メモリ初期化周りのエラー
0699デフォルトの名無しさん
2009/05/05(火) 09:55:470700デフォルトの名無しさん
2009/05/05(火) 10:21:370701デフォルトの名無しさん
2009/05/05(火) 10:24:332007年あたりのを入れてみては
0702デフォルトの名無しさん
2009/05/05(火) 14:13:50ありがとう
0703デフォルトの名無しさん
2009/05/05(火) 17:07:050x00000152でした。
d3dtypes.hの宣言やヘルプを見ても何を指しているか分かりませんでした。
0x00000152はどの定数の組み合わせなのでしょうか、分析方法教えてください><
10進数に直すと338でした。
0704デフォルトの名無しさん
2009/05/05(火) 17:23:272進数になおしたほうがわかりやすいだろう。
まあ0x0152は
0x0100、0x0040、0x0010、0x0002 にわけられるよね。
1,2,4,8でわけるのさ
0705デフォルトの名無しさん
2009/05/05(火) 17:26:450707デフォルトの名無しさん
2009/05/05(火) 18:52:24一般にゲームを作る場合はSleep(0)を使うのが良いのですか?
フレームレート解説サイトではSleep(1)を推奨していますが3D描画となると
Sleep(1)では遅すぎます。
皆さんはどうしてますか?
0708デフォルトの名無しさん
2009/05/05(火) 18:59:23そのサンプルもスレッドをスリープする為には使ってないんじゃないか。
0709706
2009/05/05(火) 19:06:342進数に変換までできました
0x0152
↓
0000 0001 0101 0010
そのあとの
>まあ0x0152は
0x0100、0x0040、0x0010、0x0002 にわけられるよね。
1,2,4,8でわけるのさ
が理解できないのですがもう少し詳しく教えていただけませんが
スレ違いですいません;;
0710デフォルトの名無しさん
2009/05/05(火) 19:25:45while ( TRUE ) {
if ( PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) ) {
if ( !GetMessage(&msg, NULL, 0, 0) ) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
} else {
//UpdateFrame();
Sleep(1);
}
}
ってするよりメインループを別スレッドにした方が良いの?
0711デフォルトの名無しさん
2009/05/05(火) 19:46:04頂点バッファー(座標やディフューズ等)を直接見たいんだけどどうすればいいのかな?
GetVertexBufferメソッドで頂点バッファを取得して
GetDescメソッドでブレークポイントを置いて自動変数見たけど目的の物が見えませんでした
0712デフォルトの名無しさん
2009/05/05(火) 19:56:44盲人が視覚を得るということを目標に研究はされているらしいけど。
0713711
2009/05/05(火) 20:00:59UV値がちゃんと渡されているか確認したかったんです
なにかやり方ありませんかね?
GetDescメソッドじゃリソースの記述しか見れなくて・・・
0714デフォルトの名無しさん
2009/05/05(火) 21:52:42>>681のようにVertexBufferをロックしてみる。
>>712
お前このスレに常駐して、クソにもならないレスを
返す方ですか?ウザいんでしんでくさい。
0715デフォルトの名無しさん
2009/05/05(火) 21:57:30そのあと、描画用のメッシュはCloneMeshでSYSTEMMEMを持たせないで複製したものを使う。
最初のがいらなくなったらそっちは開放する。
こういう手順を起動時に毎回やるのが煩雑だか非効率と思えるようになった人は、自作フォーマットの段階へ進む。
0716デフォルトの名無しさん
2009/05/06(水) 10:37:5600000001 → 0x01
00000010 → 0x02
00000100 → 0x04
00001000 → 0x08
わかる?
0717デフォルトの名無しさん
2009/05/06(水) 10:39:090718デフォルトの名無しさん
2009/05/06(水) 20:40:17あきらかにバッファリングが追いついてなくて音がブチブチするのは
どうすればいいんだぜ?
OnBufferEndコールバックのたびにov_readしちゃだめ?
0719デフォルトの名無しさん
2009/05/06(水) 20:49:430720デフォルトの名無しさん
2009/05/06(水) 20:53:45あっちいってくる
0721718
2009/05/06(水) 21:06:42なんかスッドレ使えってことくさい
0722デフォルトの名無しさん
2009/05/07(木) 01:29:200723デフォルトの名無しさん
2009/05/07(木) 02:09:570724718
2009/05/07(木) 03:14:070725デフォルトの名無しさん
2009/05/07(木) 04:25:07まずありえないがな
0726デフォルトの名無しさん
2009/05/07(木) 15:59:13わからないところがあるので質問します。上部8ポリゴン・下部8ポリゴン・側面16ポリゴンの円柱を作りました。
Mesh {
34;
0.00000;3.04100;0.00000;,
:
0.00000;-3.04100;-0.24500;;
32;
3;0,1,2;,
:
3;16,31,14;;
}
MeshNormals {
18;
0.000000;1.000000;0.000000;,
:
-0.603748;0.000000;-0.797175;;
32;
3;0,0,0;,
:
3;5,17,16;;
}
MeshTextureCoords {
34;
0.062500;0.000000;,
:
1.000000;1.000000;;
}
頂点と法線データについては最初の数値が各頂点のデータで
後の数値がその組み合わせ(三角形なので3個1セット)なのはわかるんですが
なんで32ポリゴンしかないのに34個の頂点データがあるんでしょうか?
0727デフォルトの名無しさん
2009/05/07(木) 16:21:25Triangle Fanだと中心に1個必要だからその分じゃないの
0728デフォルトの名無しさん
2009/05/07(木) 16:24:340729デフォルトの名無しさん
2009/05/07(木) 17:17:27側面部分は海苔巻きの海苔のようにポリゴンを張っていると思うが、
巻き始めと巻き終わりの部分は頂点位置は同じでもテクスチャ座標が違う。
開始位置のテクスチャ座標が0で、終了位置は1になっているかと。
テクスチャラッピングという機能を使えば、終了位置のテクスチャ座標を
0にできるが、普通はそんな設定は使わない。
0730デフォルトの名無しさん
2009/05/07(木) 17:43:440731デフォルトの名無しさん
2009/05/07(木) 20:39:34settime化出来ないの?
0732デフォルトの名無しさん
2009/05/07(木) 21:55:290733デフォルトの名無しさん
2009/05/07(木) 21:57:04D3DXLoadMeshFromX(
strXFile,
D3DXMESH_SYSTEMMEM,
pD3DDevice,
NULL,
&m_pMtrlBuff,
NULL,
&m_MtrlNumTotal,
&m_pMesh );
↓コンパイラのエラーメッセージ
D3DX: MEMORY LEAKS DETECTED: 2 allocations unfreed (3824 bytes)
上記読み込み関数だけをコメントアウトするとリークがなくなるので、これが原因なのは
間違いないと思います。
引数の&m_pMeshのところをNULLにしてもリークしなかったので、m_pMeshが解放しきれていない
ようですが、なぜなのかが分かりません・・・
読み込むXファイルはメタセコイアで出力したものです。
試しに書籍のCD-ROMに収録されているXファイルモデルも読み込んでみましたが同様でした。
怪しいとしたらどこでしょうか?
ご助言、よろしくお願いしますm(_ _)m
0734デフォルトの名無しさん
2009/05/07(木) 22:01:36SAFE_RELEASE( m_pMesh );
の両方を常にやる
0735デフォルトの名無しさん
2009/05/07(木) 22:07:19とりあえず第2引数をD3DXMESH_MANAGEDにしたい
0736733
2009/05/07(木) 22:09:01あー!直りましたー!
助かりましたー!
ほんとうにありがとうございましたぁ! !。゜(゜´∀`゜)゜。
>>735
ありがとうございます!
MANAGEDにします!
0737733
2009/05/07(木) 22:26:59MANAGEDにしたらfpsが300から1300に跳ね上がりました (;゚д゚)
ご助言ありがとうございました!
(これからは引数のことをよく調べてから使うようにします・・・)
0738726
2009/05/07(木) 23:34:5732ポリゴン普通に描画してみたら不具合もなく大丈夫でした。
ありがとうございます。
0739デフォルトの名無しさん
2009/05/08(金) 19:30:58シェーダーを使って描画をしているんですが
.oファイルがいつのまにか生成されるんですが
こちらは.fxのコンパイル後のデータなんでしょうか?
こちらを使って描画する方法などありましたらご教授お願いします。
ググってみても.oファイルが見当たりません。
0740デフォルトの名無しさん
2009/05/08(金) 20:55:34そのようなHLSL命令があるのでしょうか??
0741デフォルトの名無しさん
2009/05/08(金) 21:09:400743739
2009/05/09(土) 04:25:460744デフォルトの名無しさん
2009/05/09(土) 15:33:33こんな感じでテクスチャを生成すると失敗してしまい、戻り値を調べるとD3DERR_INVALIDCALLでした
試しにD3DXCreateTextureから生成するとうまくいったんですが、これはどこか間違っていますか?
0745デフォルトの名無しさん
2009/05/09(土) 15:42:47D3DFMT_A8R8G8B8の間違いでは?
0746デフォルトの名無しさん
2009/05/09(土) 15:49:15ありがとうございます!動きました!!
フォーマットをMSDNのところからコピペしたので
間違って選んでしまってました
0747デフォルトの名無しさん
2009/05/09(土) 19:52:30ちゃんと使えるフォーマットを調べて初期化するようにしないと環境ごとに動いたり動かなかったり面倒だぞ。
0748デフォルトの名無しさん
2009/05/10(日) 01:18:08カウント++
今回描画分シーン描画済みテクスチャA
↓
if(カウント==奇数)
空きテクスチャBにAをコピー→空きテクスチャCをBにアルファ50%で描画→Bをバックバッファに描画
else
空きテクスチャCにAをコピー→空きテクスチャBをCにアルファ50%で描画→Cをバックバッファに描画
これで残像が残ると思ったのですがどうもAの内容がそのまま描画されてしまいます
残像エフェクト用空きテクスチャB,Cはクリアはしていません
どこが間違っているのでしょうか?
0749デフォルトの名無しさん
2009/05/10(日) 01:57:32(カウント奇数)
テクスチャAに今回の描画をする
テクスチャBには前回の描画が残ってる
テックスチャAにBをα50%で重ねて描画する←(Aが今回の最終描画で次回に流用する)
テクスチャAの内容をバックバッファに描画
(偶数)
テクスチャBに今回の描画をする
テクスチャAには前回の描画が残ってる
テックスチャBにAをα50%で重ねて描画する←(Bが今回の最終描画で次回に流用する)
テクスチャBの内容をバックバッファに描画
以下繰り返し
0750デフォルトの名無しさん
2009/05/10(日) 03:42:37なぜかResetが失敗して、デバッグしてみると戻り値が -2005530516という意味不明の値になっています
Resetを呼ぶ前にリソースは解放していて、TestCooperativeLevelもD3DERR_DEVICENOTRESETを返しています
0751デフォルトの名無しさん
2009/05/10(日) 04:18:24まずやることは、DirectX Error LookupというツールでValueに-2005530516を入れて
Decimalを選択してから[Look Up]を押す。
話はそれからだ。
0752デフォルトの名無しさん
2009/05/10(日) 04:54:15D3DERR_INVALIDCALLでした
メソッドの呼び出しが無効っていうのはどういう意味ですか?
パラメータは初期化のときに使ったやつと同じものを使っています
0753デフォルトの名無しさん
2009/05/10(日) 09:22:14・リソースの類は、一切作らずReset()した場合
それでも失敗しますか?
・↓こうしても失敗しますか?
D3DPRESENT_PARAMETERS d3dpp;
IDirect3DSwapChain9Ptr pDefaultSwapChain;
pD3DDevice->GetSwapChain( 0, &pDefaultSwapChain );
pDefaultSwapChain->GetPresentParameters( &d3dpp );
pD3DDevice->Reset( &d3dpp );
0754デフォルトの名無しさん
2009/05/10(日) 10:52:05フォントやシェーダーのようなOnLostDeviceとか用意されてるやつとD3DPOOL_MANAGEDに設定したリソースだけなら大丈夫なんですが
D3DPOOL_DEFAULTに設定したテクスチャがあるときに失敗してしまいました
テクスチャの解放の辺りが原因みたいです
普通にRelease()で解放するのではだめなんでしょうか?
スワップチェーンのほうはよく分からないけど変わりませんでした
0755デフォルトの名無しさん
2009/05/10(日) 11:17:38IDirect3DDevice9::SetTexture()でセットされているままとか。
セットされていると参照カウント+1されているので、
Relese()しても解放されません。
0756デフォルトの名無しさん
2009/05/10(日) 11:37:37そうだったんですか!
やっと原因が分かりました!ありがとうございます!!!
0757デフォルトの名無しさん
2009/05/10(日) 22:03:13インデックス付き頂点ブレンディングのサポートの判定の
コードを試してみたら、IndexedMatrixMaxSizeが0になっています・・。
RADEON HD 4350なので、ハードウェアで
インデックス付き頂点ブレンディングができると思ったんですが・・。
最近のビデオカードはみんなサポートしているんじゃないんでしょうか?
D3DCAPS9 d3dCaps;
m_pD3DDevice->GetDeviceCaps( &d3dCaps );
IndexedMatrixMaxSize = d3dCaps.MaxVertexBlendMatrixIndex;
頂点しぇーだーを使うにしても、どうやって大量の行列を渡すんでしょうか?
数十個近くも変数使えるんでしょうか・・
0758デフォルトの名無しさん
2009/05/10(日) 22:10:350759デフォルトの名無しさん
2009/05/10(日) 23:00:10格納できなければ格納できる最小までメッシュの方を分割する。面倒くさそうでしょ。そう面倒なの。
0760デフォルトの名無しさん
2009/05/11(月) 01:51:00実際、レンダーターゲットとしてそれに書き込むときは0.0〜1.0に正規化しないといけないんですよね?
HLSLではフォーマットによらず0.0〜1.0で扱うけど、その0.0〜1.0の分解能が違う、という解釈でイイんでしょうか??
0761デフォルトの名無しさん
2009/05/11(月) 05:18:51実際に画面に表示するバッファでなければ何入れようと自由。
0762760
2009/05/11(月) 07:27:28なるほど。
そうすると、LDRで表現できるレンジと現実世界の光の強さの比が約1:40億なので、
最終のLDR出力を0.0〜1.0として、HDR時は0.0〜4.0×10^9で描画し、その範囲の中から
幅1.0分くらいが抽出されるようにトーンマッピングする方針ですね。
ありがとうございました。
0763デフォルトの名無しさん
2009/05/11(月) 13:55:03ストップ。 4.0×10^9は余裕でFP16の範囲外。
FP16は指数部に5ビットしか用いてないから、10^4がせいぜい。
FP32を使ってくれ。
0764デフォルトの名無しさん
2009/05/11(月) 14:12:52レンダターゲットが整数バッファだった場合?
signed型なら、-1.0〜+1.0
unsigned型なら、0.0〜+1.0
real型なら、そのままなんだっけ?
ここら辺どうもよくわかってないんだよなぁ
0765760
2009/05/11(月) 19:30:38そうでしたか(汗)
失礼しました・・・
しかし、まじめに物理的なライティングをしようとしても、HDRテクスチャ素材自体が調達しにくいので、
手に入るものでそれらしく見せるように調整することになりそうです。
0766デフォルトの名無しさん
2009/05/12(火) 10:02:19HLSLでテクスチャに一度描画し、Z値の変化の大きい場所を黒く塗りつぶしたテクスチャと重ねて描画しなおす方法で輪郭線を描いているんですが、スキンメッシュ(tiny)を表示するとうまくいきません。
上の画像のように細い線が何本も出てしまいます(左だと背中から左腕にかけて、右の画像はおでこ付近)
どうしてこうなるんでしょう?
ソースはSDKのサンプルにそのまま.fx内でZ値も出力するように付け足しただけです。
0767デフォルトの名無しさん
2009/05/12(火) 14:47:52Z値を可視化すると、問題の部分はどうなってる?
0768757
2009/05/12(火) 22:27:52頂点シェーダー使わないといけないんですか・・。面倒そうです。
インデックス付頂点ブレンディングの
シェーダーのプログラムのサンプルってどこにあるんでしょう?
自分で書いてみましたがうまくいきません。
float4x4 matViewProjection;
float4x4 matWorld[256];
struct VS_INPUT
{
float4 Position : POSITION;
float3 Normal : NORMAL;
float3 BlendWeight : BLENDWEIGHT;
uint4 matrixIndex : BLENDINDICES;
};
struct VS_OUTPUT {...}
VS_OUTPUT Default_DirectX_Effect_Pass_0_Vertex_Shader_vs_main( VS_INPUT Input )
{
VS_OUTPUT Output;
float fLastBlendWeight = 1 - dot(Input.BlendWeight, 1);
Output.Position =
mul( Input.Position, matWorld[Input.matrixIndex.x]) * Input.BlendWeight.x +
mul( Input.Position, matWorld[Input.matrixIndex.y]) * Input.BlendWeight.y +
mul( Input.Position, matWorld[Input.matrixIndex.z]) * Input.BlendWeight.z +
mul( Input.Position, matWorld[Input.matrixIndex.w]) * fLastBlendWeight;
return( Output );
}
0769デフォルトの名無しさん
2009/05/12(火) 23:01:48float4x4 matWorld[256];
まずシェーダーの固定レジスタが256本しかないから余裕でオーバーしてる。
float4[256]がVS3.0の限界数。
0770デフォルトの名無しさん
2009/05/12(火) 23:27:26レジスタを節約しよう
0771デフォルトの名無しさん
2009/05/13(水) 00:09:51なんで1メッシュまるごとぶち込むソース書くヤツ多いんだマジで
0772デフォルトの名無しさん
2009/05/13(水) 00:25:35言葉の意味はよくわからんが
とにかく凄い自信だ
0773デフォルトの名無しさん
2009/05/13(水) 00:27:26でもこれだけで240/256を使っちゃうから現実的じゃない。
色々なエフェクトとかでレジスタ使うことを考えると
[60]くらいを上限にして180/256って所だろう。
当然1メッシュでこれ以上のボーンを使っている場合に描画できなくなるから
事前にボーンの本数の上限にあわせてメッシュを分割しておく必要がある、と。
0774デフォルトの名無しさん
2009/05/13(水) 00:29:321メッシュまるごと
同じじゃないのか
0775デフォルトの名無しさん
2009/05/13(水) 00:39:52ちがうだろ
256も使うなんてどう考えてもおかしいだろ
ぶち込んだメッシュが影響するボーンの本数が256ってことだろ?
本当にそんなモデル作ったならそのデザイナクビでいいと思う
ちゃんとプログラム組めば
1つのメッシュに影響するボーンの数なんて5か6でも多いぐらいだろ
0776デフォルトの名無しさん
2009/05/13(水) 00:43:41なんで質問スレに書き込んだのかは謎だが
0777デフォルトの名無しさん
2009/05/13(水) 00:47:24「ホントにプロなの?」ってメールで暴言吐いたらちゃんと直してくれたなw
0778デフォルトの名無しさん
2009/05/13(水) 00:56:181メッシュに6本とか人体モデルもだせねぇw
0779デフォルトの名無しさん
2009/05/13(水) 00:58:58俺のPC古いから出来ない
テラうらやましす
0780デフォルトの名無しさん
2009/05/13(水) 01:08:19はぁ?
膝曲げてもフトモモとふくらはぎぐれーだろ影響あるの?
妙にリアルに仕上げるデザイナがいてもその周辺使うぐらいだろ?
だからお前、1メッシュで人体全部ぶち込むからそーゆー妙な制限生まれるんだろ?
関係あるところだけきっちりわけて渡せよw
0781デフォルトの名無しさん
2009/05/13(水) 01:34:130782デフォルトの名無しさん
2009/05/13(水) 01:51:09そういうアプローチは、今まで有効じゃなかったが
今後はどうなるかねぇ
ララビーとか、メッシュブツ切りにしてもボトルネックに
ならなそう
なんとなく
0783デフォルトの名無しさん
2009/05/13(水) 02:32:39ワンスキンで作らずにパーツごとにメッシュを分けて作れば
一つのモデルでも分割して描画することができるだろ
一つのXファイルの中にMeshは一つじゃないといけない理由なんてないぞ
0784デフォルトの名無しさん
2009/05/13(水) 02:47:55誰か持ってない?
0785デフォルトの名無しさん
2009/05/13(水) 09:21:55お前勘違いしてるだろ・・・。
1頂点に対する影響ボーンの数の話じゃなくて
メッシュ全体に対するボーン数の話だぞ・・・。
いまどきの頂点シェーダーならアホみたいにデータの最適化して分割して
描画なんてするよりまとめて書いた方が圧倒的に早いのは常識だぞ。
>>782
ララビーつっても実用的になるまで3世代くらいかかるんじゃねぇ?
仕様見ててもあれでGTX285とかHD4870以上の速度が出るとはおもえねぇ。
そりゃコア数ふやせば早くなりますなんて説明されても消費電力は無視かよって感じ。
>>783
1つにするメリットはCPUの負荷を軽減できるから。
描画数がクリティカルにCPUの足を引っ張るからどこも躍起になって描画数を減らす工夫してるんだよ。
0786766
2009/05/13(水) 09:52:22http://www.dotup.org/uploda/www.dotup.org24171.jpg
特に異常は感じられない
0787デフォルトの名無しさん
2009/05/13(水) 09:58:48なら輪郭の抽出が間違ってんだろ
0788766
2009/05/13(水) 11:20:34なんでだろう?
0789デフォルトの名無しさん
2009/05/13(水) 12:23:02単純に精度が足りてないとか
Z値を書き込んでるテクスチャのフォーマットは何?
D3DFMT_R32F?
あと書き込んでるZ値ってZ値そのまま?
W成分で割ってる?
0790デフォルトの名無しさん
2009/05/13(水) 13:09:250791766
2009/05/13(水) 13:42:44D3DFMT_A8R8G8B8からD3DFMT_R32Fに変えたらいけたサンクス!
ちなみにZ値はWで割ってる
0792718
2009/05/13(水) 13:49:07これ多分モデルを描画するときのポリゴンの重なりを考慮してだとおもうんだけど、
ビルボードをアルファブレンドしたいときはどうすればいいんですか?
0793766
2009/05/13(水) 13:57:56ちなみにスキンじゃない普通のメッシュは大丈夫だった
http://www.dotup.org/uploda/www.dotup.org24447.jpg
0794766
2009/05/13(水) 14:21:07シーンを書き込んだテクスチャを描画せずに輪郭用のテクスチャのみ描画するとこうなる
0795デフォルトの名無しさん
2009/05/13(水) 14:51:48View空間のにしたらどうかね?
深度は0〜1の範囲に収まらないので、適当に閾値を調整して
0796デフォルトの名無しさん
2009/05/13(水) 15:56:34とりあえずわかったことは
・tinyのテクスチャが一面に張り付いてるのはスキンメッシュクラスでデバイスからテクスチャをセットしていたため
・背景を白にすると輪郭線が現れない場所が出るのは、Z値テクスチャに淡すぎて書き込まれていて背景との境に大きなZ値差を検出できなかったため
0797デフォルトの名無しさん
2009/05/13(水) 16:30:26w(view空間のz)で割る射影空間だと、z方向が非線形にマップされるから
アンタの言う’Z値の変化の大きい場所’の検出が一様には出来ないと思われる。
そこが間違ってると想像。だから一様に検出が容易なView空間ベースで処理したら、
ということ。
>・背景を白にすると輪郭線が現れない場所が出るのは、Z値テクスチャに淡すぎて書き込まれていて背景との境に大きなZ値差を検出できなかったため
これがそう
0798デフォルトの名無しさん
2009/05/13(水) 16:32:341.aviを再生途中からフェードアウト、フェードアウトし始めと同時にtgaがフェードイン、
2.しばらくしたらtgaがフェードアウト、フェードアウトし始めと同時に別aviがフェードイン、
この1と2の動作の繰り返しするソフトを作りたい
aviを再生、tgaファイルを表示する所まではできたのですが、
レイヤーの制御とフェード・キーチャンネルの制御の仕方が分かりません。
aviの終わり40フレーム手前からフェードアウト(tgaはフェードイン)し始めて、tgaに乗り替わりたいのですが
どうやったら出来るのでしょうか?
再生にはDirectX.AudioVideoPlaybackのVideoクラスを使っていますが、これでは出来ないのでしょうか?
0799デフォルトの名無しさん
2009/05/13(水) 18:21:15D3DFMT_R32Fテクスチャに
z/wを書き込んで変化量の多い所に線を描くって方法でこの程度はでるよ
書き込みか輪郭検出のアルゴリズムがどっかおかしいのでは?
特に輪郭線書いてるところのピクセルシェーダを検証しる
ttp://www5b.biglobe.ne.jp/~mya_a/DirectX/Line.wmv
0800デフォルトの名無しさん
2009/05/13(水) 18:41:08おー、これおもしろいな。
0801デフォルトの名無しさん
2009/05/13(水) 18:55:51はぁ?
それじゃバンプかけるところとバンプ+環境マップあるところと
適用できねーじゃん
マテリアルチェンジする必要がある時点でボコボコシェーダー代わるんだから
今更ワンスキンなんてこだわってんじゃねぇよ
髪の毛だってシェーダ別だぞ
服もパーツごとにシェーダ違うし(アップになったときは)
もう速度なんて完全に捨てたぜ
汎用性重視
モデリングソフトと連携してることのが大事
こんだけふんだんに使っても全然速度大丈夫だし
0802デフォルトの名無しさん
2009/05/13(水) 18:58:280803792
2009/05/13(水) 19:53:39これ誰かタノム!
0804デフォルトの名無しさん
2009/05/13(水) 20:01:260805792
2009/05/13(水) 20:19:40左が元画像(40x40)で右がDrawPrimitiveUp後です死にたい
描画処理↓
int x2 = x + texWidth - 0;
int y2 = y + texHeight - 0;
SETVERTEX(v[0], x, y, 0.0f, 1.0f, 0xffffffff, 0.0f, 0.0f);
SETVERTEX(v[1], x2, y, 0.0f, 1.0f, 0xffffffff, 1.0f, 0.0f);
SETVERTEX(v[2], x, y2, 0.0f, 1.0f, 0xffffffff, 0.0f, 1.0f);
SETVERTEX(v[3], x2, y2, 0.0f, 1.0f, 0xffffffff, 1.0f, 1.0f);
device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
device->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
device->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
device->SetTexture(0, texture);
device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
device->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);
hr = device->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, v, sizeof(D3DVERTEX));
0806デフォルトの名無しさん
2009/05/13(水) 20:23:47またこれか
>>85をちぇき
0807792
2009/05/13(水) 20:27:14サンクス試してみる!
過去レス読まない俺を罵ってください
0808デフォルトの名無しさん
2009/05/13(水) 20:32:00このバカチンがっ!!
がんばれよ!
0809792
2009/05/13(水) 21:20:32ttp://uproda.2ch-library.com/127951kK2/lib127951.png
若干よくなったけど後一歩なのか、うちのグラボ(PX8800GT)が悪いのか・・
device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT); // New
device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT); // New
device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT); // New
device->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP); // New
device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP); // New
device->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
device->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
device->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
device->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
device->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
0810デフォルトの名無しさん
2009/05/13(水) 21:36:420811792
2009/05/13(水) 22:02:08ゴクリ・・・近づいている気がする!!!!!
・クライアント領域サイズをAdjustするの忘れてたので修正しました
・CreateTextureFromFileExのフィルターパラメータをNONEに修正しました
>>810
ぐぐってみます!!!!!
0812792
2009/05/13(水) 22:42:44解決しました。助言してくれた方(達)ほんとサンクス。
参考になるかもしれんので、俺がひっかかったところ列挙しときます。
・サンプラーステートのフィルタ系パラメータをPOINTにする
⇒device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);
⇒device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
⇒device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
⇒device->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
⇒device->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
・クライアントウィンドウとバックバッファのサイズが違った
⇒AdjustWindowRectでサイズ計算したらちゃんとなってるか確認する
・CreateTextureFromFileExのフィルタ系パラメータをDEFAULTにしてた
⇒Filter → D3DX_FILTER_POINTにする
⇒MipFilter → D3DX_FILTER_NONEにする
・2のべき乗じゃないテクスチャーは使わない(前回までは40x40のテクスチャでした。今回32x32)
以上連投失礼いたしました
0813792
2009/05/13(水) 22:45:07・プリミティブの4頂点はそれぞれ-0.5しておく
⇒テクセルの不一致対策
以上です
0814デフォルトの名無しさん
2009/05/13(水) 23:33:320815デフォルトの名無しさん
2009/05/14(木) 00:05:55どのように作ったらいいか悩んでます。
キーを押すごとに変わるようにしたいんですが・・・
いい案をください。
初心者で申しわけありません
0816デフォルトの名無しさん
2009/05/14(木) 00:27:54getchar();
printf("選択肢");
getchar();
printf("解答");
getchar();
ん?DirectX と何の関係があるの?
0817デフォルトの名無しさん
2009/05/14(木) 00:36:110818デフォルトの名無しさん
2009/05/14(木) 00:43:250819792
2009/05/14(木) 01:12:12まじかwwwww
これから反転や回転を組み込もうと思ってたのにどうしよう
回転ヤバス
0820デフォルトの名無しさん
2009/05/14(木) 01:24:330821デフォルトの名無しさん
2009/05/14(木) 01:41:30float u_offset = 0.5f / texWidth;
float v_offset = 0.5f / texHeight;
SETVERTEX(v[0], x, y, 0.0f, 1.0f, 0xffffffff, 0.0f + u_offset, 0.0f + v_offset);
SETVERTEX(v[1], x2, y, 0.0f, 1.0f, 0xffffffff, 1.0f + u_offset, 0.0f + v_offset);
SETVERTEX(v[2], x, y2, 0.0f, 1.0f, 0xffffffff, 0.0f + u_offset, 1.0f + v_offset);
SETVERTEX(v[3], x2, y2, 0.0f, 1.0f, 0xffffffff, 1.0f + u_offset, 1.0f + v_offset);
0822デフォルトの名無しさん
2009/05/14(木) 11:02:15元々ステレオなサウンドをモノラルで再生したりステレオで再生したり、
切り替えるにはどうすればよいですか?
WAVEFORMATEX の nChannels は元のファイルがモノラルかステレオかに依存しますよね?
0823デフォルトの名無しさん
2009/05/14(木) 11:44:11WAVデータのほうをいじればいいんじゃないの
16ビットwavなら(L + R) / 2にしてLとRに同じデータ送る
0824デフォルトの名無しさん
2009/05/14(木) 12:49:321Byte L
1Byte R
1Byte L
1Byte R
...
みたいに並んでますか?
0825デフォルトの名無しさん
2009/05/14(木) 13:39:03http://www.kk.iij4u.or.jp/~kondo/wave/
0826デフォルトの名無しさん
2009/05/14(木) 14:08:290827デフォルトの名無しさん
2009/05/14(木) 23:23:34D3DXCreateTextureFromFileInMemoryEx系だとMipFilterを指定できるわけだが、
他のAPIでは同じフラグが見当たらないような気がする。
テクスチャが拡大・縮小される際の挙動をある程度こちらで指定したいんだけど、
いい方法はないだろうか。
SetRenderState()などで変えられるんだろうか?
0828デフォルトの名無しさん
2009/05/14(木) 23:53:37SetSamplerStateで
D3DSAMP_MIPFILTER
D3DSAMP_MINFILTER
D3DSAMP_MAGFILTER
あたり
0829デフォルトの名無しさん
2009/05/15(金) 00:36:10ありがとう。さっそくそれを試してみることにするよ。
0830デフォルトの名無しさん
2009/05/15(金) 11:47:330831デフォルトの名無しさん
2009/05/15(金) 12:54:40を使用しているのですがビルドを実行した所、
>fatal error C1083: include ファイルを開けません。'dsound.h': No such file or directory
というエラーが出てきました。
過去レスを参考にしてIncludeファイル内にdsound.hを探してみたのですが見当たりませんでした。
DXSDKの古いバージョンをインストールし直せばいいのでしょうか?
C言語、プログラムの知識は授業の一貫でテンプレに沿ってシューティングゲームを作った程度ですので
特に環境面?(VCの初期設定等)はあまり詳しくありません。
0832デフォルトの名無しさん
2009/05/15(金) 13:14:26DirectXSDKのインクルードファイルとライブラリファイルへの
パスを設定したのかい?
0833831
2009/05/15(金) 13:28:37http://uproda.2ch-library.com/128654eXA/lib128654.png
>>832
現状こんな感じです
0834デフォルトの名無しさん
2009/05/15(金) 13:42:16なにその中途半端なパスは
それは$(WindowsSdkDir)じゃないのか
普通にインストールしたら
C:\Program Files\Microsoft DirectX SDK (November 2008)\Include
C:\Program Files\Microsoft DirectX SDK (November 2008)\Lib\x86
になるよ
0835831
2009/05/15(金) 14:13:23http://uproda.2ch-library.com/128681Lo5/lib128681.png
>>834
早速、ご指摘の通り直してみたのですが同様に
>fatal error C1083: include ファイルを開けません。'dsound.h': No such file or directory
とエラーが吐かれます。
0836766
2009/05/15(金) 14:15:14作られてたバックバッファテクスチャ・Z値テクスチャがnの2乗だったから画面に合わせて縦横比を調節しなければならないというオチだった
0837デフォルトの名無しさん
2009/05/15(金) 14:16:170838デフォルトの名無しさん
2009/05/15(金) 14:32:06エクスプローラで本当にその場所にdsound.hがあるか確認してみて。
ちゃんと確認した?
0839デフォルトの名無しさん
2009/05/15(金) 15:06:070840831
2009/05/15(金) 15:24:14>fatal error C1083: include ファイルを開けません。'dsound.h': No such file or directory
のエラーは無事解決しました。
dsound.hの存在も確認しました。
今度は
>error C2664: 'CreateMutexW' : 3 番目の引数を 'char [2048]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
のようなエラーが58個出てきました。
エラーログをクリックしたところel.hを参照したのですが、el.hが古い型なので対応してないという事なのでしょうか?
0841デフォルトの名無しさん
2009/05/15(金) 15:30:31全般の設定項目の中の文字セットを
「Unicode文字セットを使用する」を
「マルチバイト文字セットを使用する」に変更する
てゆうか、すでにDirectX以前の問題だらけじゃね?
0842デフォルトの名無しさん
2009/05/15(金) 15:37:18俺も最初そうだったし
0843831
2009/05/15(金) 15:39:17>error C2664: 'CreateMutexW' : 3 番目の引数を 'char [2048]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
のエラーは解決できました、ありがとうございます。
やはり私のような者には向いていないようですので諦めようと思いますレスありがとうございました。
0844デフォルトの名無しさん
2009/05/15(金) 15:43:02上記の変更以外にいろいろ追加したり
たりないlibファイルとか引っ張ってこないといけなかったりするから
初心者には逆に辛いかもね
素直に初心者サイトで勉強するか
現在もサポートされてる簡易ライブラリを探した方がよさそう
0845デフォルトの名無しさん
2009/05/15(金) 15:52:450846デフォルトの名無しさん
2009/05/15(金) 16:11:15el.hをインクルードした時点で出るエラーだからしゃーないんじゃない?
すでに未公開だからうろ覚えだけどEasyLinkLibraryって
5万行近いel.hという一つのファイルににすべてが書き込まれた
ラッパー関数群だからこの中から必要なものだけを取り出すなんて初心者には無理でしょ
0847デフォルトの名無しさん
2009/05/16(土) 03:31:410848デフォルトの名無しさん
2009/05/16(土) 03:32:200849デフォルトの名無しさん
2009/05/16(土) 19:42:220850757
2009/05/16(土) 22:30:02シェーダー以前の問題があるようなんです。シェーダー未適用の状態で
一切表示されなかったんですが、それが駄目なのかもしれません。
頂点位置の後にブレンドの重みと行列インデックスを置くというルール、無視できないんでしょうか?
何をしようかとしているというと、Irrlichtという3Dエンジンに
ハードウェアスキニングを実装しようとしています。それで新たに構造体S3DVertexWeightを作ろうとしました。
初めはIrrlichtに元からある構造体S3DVertexの派生クラスとして作ろうとしたんですが、
そうすると頂点位置の後にブレンドの重みと行列インデックスを置くことが出来ません。
かといって派生させないで作ろうとすると、基底クラスにキャストしたりしている部分があるため
落ちたりなどいろいろ問題がおきます・・。
0851757
2009/05/16(土) 22:32:53メッシュを分割するのは簡単そうですが
複数マテリアルがあると難しそうです・・。
0852デフォルトの名無しさん
2009/05/16(土) 23:01:20よくDirect3Dの基本も分かってない状態で、そんな面倒なことに手を出そうとするなぁ。
各成分の順番も自由だし、1つの構造体である必要すらない。
データ数さえ揃っていれば、成分ごとに別のバッファに分けてもいい。
0853デフォルトの名無しさん
2009/05/16(土) 23:06:50音出したいなら素直にXAudio2使っとけ
0854757
2009/05/16(土) 23:50:28もしかして
D3DVERTEXELEMENT9の方を使うんでしょうか?こっちは順番の制限が無い?
(今までFVFを使っていました。IrrlichtのコードがFVF使っているので・・)
移行するのが大変そうですがやってみます。
0855デフォルトの名無しさん
2009/05/17(日) 12:33:54ご存知でしょうか?
移動範囲すべてを一気にロードしたらポリゴン数がすごいことになると思いますし、
平地でポリゴン数は少なくできても、テクスチャの解像度が問題になると思います。
このあたりをどう処理するのかが知りたいです。
もちろん、いろいろなアプローチの仕方はあるでしょうけど、何か基本となる考え方、方針、
実現例を知ることができればうれしいです。
よろしくお願いします。 m(_ _)m
0856デフォルトの名無しさん
2009/05/17(日) 12:41:54普通にマップをモデルデータとして作る。
ツールで特定の範囲単位に切断する。
切断したブロック単位でロードや表示をする。
テクスチャの解像度とかはまったく別の話。
1枚のテクスチャを真上から貼るわけじゃないし。
0857デフォルトの名無しさん
2009/05/17(日) 13:57:10D3DXMatrixIdentity(&matWorld);
D3DXMatrixScaling(&matScale,Size,Size,Size);
D3DXMatrixMultiply(&matWorld,&matWorld,&matScale);
pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
で拡大縮小できなくなりますが
どうすればいいのですか?
0858デフォルトの名無しさん
2009/05/17(日) 14:23:260859デフォルトの名無しさん
2009/05/17(日) 14:30:19音出したいんじゃなくてキャプチャして再生したい
0861デフォルトの名無しさん
2009/05/17(日) 14:44:240862デフォルトの名無しさん
2009/05/17(日) 14:46:550863デフォルトの名無しさん
2009/05/17(日) 14:53:280864857
2009/05/17(日) 16:30:27頂点シェーダーでやるの?
0865デフォルトの名無しさん
2009/05/17(日) 17:10:39もちろんその通り
0866857
2009/05/17(日) 18:20:16どこかに解説ないかな?
0867855
2009/05/17(日) 18:33:05ありがとうございます。
分割して、あとはワールド座標系の位置に応じて適宜マップモデルをロードする形式で
いこうと思います。
テクスチャについてもう少しお聞きしたいです。
>1枚のテクスチャを真上から貼るわけじゃないし。
そうだと思ってました(汗)
10km四方のマップなら10km四方分のテクスチャが要ると思ったのですが、違うのでしょうか?
土や草、岩肌をそれぞれ単独え表現したテクスチャを組み合わせて貼り付けるようなカタチで
テクスチャ容量を削減しながらもそれらしく見えるようにするのでしょうか??
ttp://image.blog.livedoor.jp/oreno/imgs/6/5/652b59d0.jpg
コンバット系のゲームを見ると、非常に広範囲を表現した大量のテクスチャを持っていそうに
見えるのですが・・・
0868デフォルトの名無しさん
2009/05/17(日) 20:23:13そんな広大な範囲のマップをテクスチャ1枚で解像度が足りない。
ならテクスチャを増やすしかないのは当然だと思うが。
0869デフォルトの名無しさん
2009/05/17(日) 21:31:160870855
2009/05/17(日) 21:50:420871デフォルトの名無しさん
2009/05/17(日) 23:10:47有名なGame Programming GemsやGPU Gems、あるいはShaderX等お持ちの方、それらには
掲載されていないでしょうか?
0872デフォルトの名無しさん
2009/05/17(日) 23:12:10テクスチャをそこまで細かく作る必要はないな。
エスコン4の地形は4096のテクスチャ張ってるだけだったっけ?
まぁあれはPS2時代だからああいう方法だったんだろうけど。
0873デフォルトの名無しさん
2009/05/18(月) 23:53:46頂点バッファとインデックスバッファを持ち、初期化、描画、解放を行うクラスがあって
そのクラスを派生させて平面の生成と描画を行うクラスを作り、それを使って描画させてみたんですが、何も表示されません
http://monoganac2.sakura.ne.jp/src/milktea25467.txt
クラスの部分のソースです
Plane plane;って感じで定義して、初期化の部分でplane.Create( 1, 1, pd3dDevice );こんな感じで生成して
plane.Draw( pd3dDevice );これで描画させたいんです
0874デフォルトの名無しさん
2009/05/19(火) 00:28:50sizeof(vertices)、sizeof(&index)で返ってくる値がおそらく想定されたものではない
と流し読みをしてレスしてみる
0875デフォルトの名無しさん
2009/05/19(火) 00:35:58解決しました!ありがとうございます!!
0877デフォルトの名無しさん
2009/05/19(火) 01:14:19d3dDevice->SetRenderState(D3DRS_WRAP0, D3DWRAPCOORD_0);
でテクスチャラッピングに成功したのですが、テクスチャの大きさが2の累乗でない時に端の方がおかしくなります。
また、テクスチャの一部を球に貼り付けることも出来ません。どうにかならないでしょうか?
0878デフォルトの名無しさん
2009/05/19(火) 03:52:20DirectSoundで音を再生するクラスを作りました。
この時点で音がなったので満足したので次に音量を調整できるようにしたいのですが
音量の調節ができません。
bool CSound::Load(char *name, long vol){
//音楽読み込み
LPDIRECTSOUNDBUFFER8 p;
//音読み込み自作関数
p = CreateSoundObj(name,DSBCAPS_CTRLVOLUME,GUID_NULL);
if(p == NULL){
return false;
}
else{
//コレクションに追加
p->SetVolume(vol);
this->SoundCollect.push_back(p);
}
return true;
}
CreateSoundObj内ではFlagにきちんとセットしてるはずですが
音の大きさが変化しません、なんででしょうか?
0879デフォルトの名無しさん
2009/05/19(火) 03:57:32とやって、retの値がどんなエラー値になっているか調べろ
0880878
2009/05/19(火) 04:25:480881878
2009/05/19(火) 04:32:32ボリュームに0以外をセットするとE_INVALIDARGが返ってきました。
調べてみたところ構造体のdwSizeを初期化しないとそうなる可能性が多いとの事ですが
どうやら初期化はしてあったみたいです
DSBUFFERDESC dsbdesc;
ZeroMemory(&dsbdesc,sizeof(DSBUFFERDESC)); //0クリア
dsbdesc.dwSize = sizeof(DSBUFFERDESC); //構造体のサイズ
0882デフォルトの名無しさん
2009/05/19(火) 06:32:12移動させるにはどうすればいいでしょうか?
0883デフォルトの名無しさん
2009/05/19(火) 06:37:15何がしてぇんだよ
入力した方向にキャラ向けりゃいいじゃん
0884デフォルトの名無しさん
2009/05/19(火) 06:40:000885882
2009/05/19(火) 07:02:59現在のキャラの向いている方向から、入力された方向への回転をどうすれば良いでしょうか?
現在の向いている方向へのベクトルと、向きたい方向へのベクトルが
一致するまでRotationするとかでしょうか?
0886デフォルトの名無しさん
2009/05/19(火) 07:13:30古めのSDKを入手して、DirectSoundのサンプルを眺めてみたら?
DirectSoundはcreateしてSoundBufferつけて書き込んだだけじゃ音はならないよ。
0887デフォルトの名無しさん
2009/05/19(火) 07:15:00アークタンジェント使え
0888デフォルトの名無しさん
2009/05/19(火) 09:29:16そりゃもう算数の話だ。
DirectX関係ねぇ。
0889デフォルトの名無しさん
2009/05/19(火) 10:02:09ストリームのスレッドの存在もほとんど意識する必要ないし。
コールバック中でSourceVoiceの破棄がかけられないところくらいか。
ところで、DirectSoundとXAudio2ってPCにかかる負荷ってどれくらい違うんだろう。
XPとVistaで変わってくると思うんだけど。
0890デフォルトの名無しさん
2009/05/19(火) 11:32:42ID3DFont::SetTransform() みたいなのがほしいんですけど....
0891デフォルトの名無しさん
2009/05/19(火) 11:39:29明らかにD3DXSprite系は通常の空間座標変換を無視して描画してる。
まあたぶんrhw使って直に書いてるんだろうけど。
0892デフォルトの名無しさん
2009/05/19(火) 12:39:41g_pEffect->SetTextureって何が違うのですか?
今、blenderでuvマッピングしたtgaファイルの指定の入ってるxファイルの物体を
g_pMesh->DrawSubset( 0 )で表示させたいのですが物体すら表示されません、どうしてでしょうか?
0893デフォルトの名無しさん
2009/05/19(火) 13:11:33下はシェーダーにテクスチャのデータ渡してるだけ
質問内容から推測すると、まだシェーダーを扱うレベルに達していないみたいだから
普通にpd3dDeviceの方にしとけ
0894デフォルトの名無しさん
2009/05/19(火) 13:19:53シェーダは難しそうだから飛ばしてたのですが、勉強したほうが良いですか?
何か必然性を感じなかったのですが
0895デフォルトの名無しさん
2009/05/19(火) 13:36:260896デフォルトの名無しさん
2009/05/19(火) 14:08:17g_pEffect->SetTexturだとuvテクスチャは張れないわけ?
いろいろ書き直すの超面倒くせえ
0897デフォルトの名無しさん
2009/05/19(火) 14:10:11をお願いします
0898デフォルトの名無しさん
2009/05/19(火) 14:20:39まずは板ポリを作ってそれを正面から眺めながら考えればいいんじゃね?
ヒント: テクスチャー座標
0899デフォルトの名無しさん
2009/05/19(火) 14:22:48拡張された所に何が入るかは知らないけどそれが見えてる
二の累乗に自前で事前に拡大しとけ
0900デフォルトの名無しさん
2009/05/19(火) 14:38:47ありがとうございます。
テクスチャのフィルターをD3DX_FILTER_LINEARにしたら、希望通りの動作になりましたが、これは、どの環境でも同じく動くのでしょうか?
0901デフォルトの名無しさん
2009/05/19(火) 14:40:52>テクスチャ ラッピングに [0.0, 1.0] の範囲外のテクスチャ座標が含まれないようにすること。
>このような座標が含まれている場合の結果は不定である。
ヘルプにもこうあるから、
>また、テクスチャの一部を球に貼り付けることも出来ません。
これはちょっと出来そうに無いな。
プリサンプルシェーダとかあればまた別なんだが。
素直にテクスチャを作り直すとか。
0902デフォルトの名無しさん
2009/05/19(火) 14:43:16まあ、[0.0, 1.0]以外を想定した作りになっていないってことで
0903デフォルトの名無しさん
2009/05/19(火) 15:11:19球用に新しくテクスチャを作ることにします。ありがとうございます。
0904デフォルトの名無しさん
2009/05/19(火) 15:27:210905デフォルトの名無しさん
2009/05/19(火) 16:11:260906デフォルトの名無しさん
2009/05/19(火) 16:26:45blenderで作った物体をサンプルのチュートリアルの虎の奴でやったらうまく張り付かないっていう
2個ビューア持ってるんだけど1個は暗くて見えなくて、1個では完璧っていう
0907デフォルトの名無しさん
2009/05/19(火) 17:08:080908デフォルトの名無しさん
2009/05/19(火) 17:11:370909デフォルトの名無しさん
2009/05/19(火) 17:16:072つ持ってるxファイルビューアのうち一つではちゃんとテクスチャの貼られた作った通りの物体が表示される
しかしもう一つでは物体が真っ暗になって表示されない
サンプルのチュートリアルのタイガーの部分に移植したら色はついてるが思ったとおりの座標で貼られてない
なんで?
0910デフォルトの名無しさん
2009/05/19(火) 17:21:420911デフォルトの名無しさん
2009/05/19(火) 17:23:08〈〈〈 ヽ
〈⊃ }
/ニYニヽ | |
/( ゚ )( ゚ )ヽ ! !
/::::⌒`´⌒::::\ | /
| ,-)___(-,| / <これっていうwwwwwwwwwwwwwwwwwwwwww
、 |-┬-| /
/ _ `ー'´ /
(___) /
0912デフォルトの名無しさん
2009/05/19(火) 18:16:38D3DX_FILTER_LINEAR は、D3Dが有効なら必ずサポートされていることになっている。
が、2の累乗ではないサイズのテクスチャが取り扱えるかどうかは環境依存。
動的に作られるテクスチャの場合、GetDeviceCapsで予め調べて、サポートされて
いなければ2の累乗で作成する。なおテクスチャの一辺の長さも環境依存なので調べてから使え。
0913デフォルトの名無しさん
2009/05/19(火) 18:19:35すまん嘘書いた。>>912
必ずサポートされているのは、_POINTだった。
でも、DX9が出て以降登場したカードに、_LINEARがサポートされてないのは見たことない。
0914デフォルトの名無しさん
2009/05/19(火) 19:19:13とりあえず、Normalベクトルが全部0だよ。
こいつを無視するようにしたら、自前のビューワでは
ちゃんと表示できたよ。
しかしNormalを全削除しても
SDK付属のビューアでは真っ黒表示だな。
これはよくわからん。
0915デフォルトの名無しさん
2009/05/19(火) 19:31:12SDKのサンプルにキャプチャサンプル(キャプチャしてwaveファイルに書き込む)なるものが入っていてそれを改造しています。
キャプチャバッファに音声データ部分が&pbCaptureData、&pbCaptureData2の2種類あって、&pbCaptureData部分だけに音声データが収納されているようなのです。
(&pbCaptureData2を削ってもちゃんとwaveファイルが作成されていた。&pbCaptureData2はバッファより大きい場合のために用意されている?)
&pbCaptureDataを再生バッファに送っても先頭部分にしか書き込まれておらず、再生バッファ周期でブツブツ途切れています。
再生バッファの新しい書き込み位置は古い&pbCaptureDataのすぐ後になるはずですがどうしてこうなるんでしょうか。
0916デフォルトの名無しさん
2009/05/19(火) 19:43:02サンクス!
まさに今できた!
0917デフォルトの名無しさん
2009/05/19(火) 20:04:420918デフォルトの名無しさん
2009/05/19(火) 20:15:00不要だと思えば使わなければいい
0919デフォルトの名無しさん
2009/05/19(火) 20:17:36使ってない方が評判が良い様な気もするし
0920デフォルトの名無しさん
2009/05/19(火) 20:33:250921デフォルトの名無しさん
2009/05/19(火) 20:40:220922デフォルトの名無しさん
2009/05/19(火) 21:11:57いや、俺が勝手にそう思ってただけ
0923デフォルトの名無しさん
2009/05/19(火) 21:19:41>>915
再生バッファのロック開始位置が常に0なんだから先頭部分にしか書き込まれないんじゃ?
0924デフォルトの名無しさん
2009/05/19(火) 22:25:56キャプチャ---------------------------------------------
○○○○○○◎◎◎◎◎◎△△△△△▲▲▲
白抜き:すでに読み込んだデータ
三角黒:未読
◎:ロックされたデータ
この◎◎◎◎◎◎を再生バッファにコピーして
再生バッファ---------------------------------------------
◎◎◎◎◎◎△△△△▲▲▲▲▲
◎:ロックしたデータ
◎◎◎◎◎◎△△△△:用意したバッファ
こうやって書き込んだら次のロック開始位置は自動的に
◎◎◎◎◎◎△△△△▲▲▲▲▲
↑ここ
になるんじゃないの?
0925デフォルトの名無しさん
2009/05/19(火) 22:43:49DXUTとういのが難しいと聞いたのですが
DXUTはどういうメリットがあるのですか?
479 :名前は開発中のものです。 :sage :2009/05/19(火) 12:47:11 ID:dNq8QNpp
ウインドウの生成やそれに伴うメッセージ処理、DirectXの初期化など
面倒くさいところを引き受けてくれる
これすら難しいならs
480 :名前は開発中のものです。 :sage :2009/05/19(火) 12:56:35 ID:4UcrHdRs
つまり面倒さが
DXUTにそういう処理を引き受けさせるための処理>ウインドウの生成(ryのための定番処理
だから嫌われてるの?今DXUTで作ってるんだが…
481 :名前は開発中のものです。 :sage :2009/05/19(火) 14:05:59 ID:vLQKBLqv
>>480
『 誰に 』 嫌われてるの?
482 :名前は開発中のものです。 :sage :2009/05/19(火) 14:12:04 ID:4UcrHdRs
>>481
2ちゃんねらーに悪口言われてカワイソス
483 :名前は開発中のものです。 :sage :2009/05/19(火) 14:34:46 ID:yVfOUj6/
何事もなかったことにして次行った方が良さそうだね
0926デフォルトの名無しさん
2009/05/19(火) 22:48:08ならない
0927デフォルトの名無しさん
2009/05/19(火) 22:57:00pSprite->Begin( D3DXSPRITE_ALPHABLEND | D3DXSPRITE_OBJECTSPACE );
pSprite->SetTransform( &mWorld );
pFont->DrawText( pSprite, str, -1, &rc, DT_NOCLIP, col );
フォントのDrawTextの最初の引数にスプライトのポインタを指定すると
スプライトのSetTransformでセットしたワールド変換で文字表示されます。
スプライトのBeginにD3DXSPRITE_OBJECTSPACEを指定すると3D空間表示に
なります。
0928デフォルトの名無しさん
2009/05/19(火) 23:26:08再生バッファ->SetCurrentPosition();でオフセットするのかな?
0929デフォルトの名無しさん
2009/05/20(水) 00:08:150930デフォルトの名無しさん
2009/05/20(水) 00:36:47再生バッファ->GetCurrentPosition( &point, 0 );
if ( point > 前回のロック長);
でもいいよね?
0931デフォルトの名無しさん
2009/05/20(水) 00:56:21GetCurrentPosition()で取得できるのはバッファ上の再生カーソルの位置のチョイ後ろ
その上かなりアバウトな値吐いてくるぞ
0932デフォルトの名無しさん
2009/05/20(水) 00:59:53途切れ途切れがなおらない上にマイク入力から0.数秒のラグが付くようになった
0933デフォルトの名無しさん
2009/05/20(水) 01:17:25D3DXMatrixMultiply(&matWorld,&matWorld,&matScale);
m = matWorld * matView * matProj;
m_pEffect->SetMatrix( m_hmWVP, &m );
シェーダーの時のサイズ変更はこれでいいんだね?
0934デフォルトの名無しさん
2009/05/20(水) 01:21:240935デフォルトの名無しさん
2009/05/20(水) 01:31:32間違いではないが、意図してるのはこっちじゃないか
D3DXMatrixMultiply(&matWorld,&matScale,&matWorld);
0936デフォルトの名無しさん
2009/05/20(水) 01:34:19XfileのパスとしてUnicode文字列を渡すと失敗する。
もしかして、日本語のパスってサポートしてない?
0937933
2009/05/20(水) 02:06:05D3DXMatrixMultiply(&matWorld,&matWorld,&matScale);
どっちも同じ結果になるけど?
0938デフォルトの名無しさん
2009/05/20(水) 02:39:51まあそうかもな。
例えば、SizeをXYZ軸で分けたときとか、
matWorldに平行移動成分が入ってるとき
違いが出る。
0939915
2009/05/20(水) 05:19:22マイクで音を拾う→再生→再生した音をキャプチャが拾う→再生・・・・(永久ループ)
ってなってバッファ分の音がだんだん大きくなって耳とPCを壊すところだった・・・
0940デフォルトの名無しさん
2009/05/20(水) 08:07:130941デフォルトの名無しさん
2009/05/20(水) 20:19:52板ポリ作って自前でやるの?
0942デフォルトの名無しさん
2009/05/20(水) 20:39:430943デフォルトの名無しさん
2009/05/20(水) 22:11:29// pDev にはあらかじめ単位行列を SetTransform してあるので、
// pDev 行列にさらに pSprite の行列がかかったとしても、最終的な変換行列は pMatrix に一致するはず
RECT rect = {0, 0, 0, 0};
D3DXCreateSprite(pDev, &pSprite);
pSprite->Begin(pSprite, D3DXSPRITE_ALPHABLEND);
pSprite->SetTransform(pSprite, pMatrix);
pFont->DrawText(pSprite, s, -1, &rect, DT_NOCLIP, WHITE);
pSprite->End(pSprite);
pSprite->Release(pSprite);
// 上記と同じ pMatrix を使って四角形を描画
v[0].pos = D3DXVECTOR3(0, 0, 0); v[1].pos = D3DXVECTOR3(8, 0, 0);
v[2].pos = D3DXVECTOR3(0, 8, 0); v[3].pos = D3DXVECTOR3(8, 8, 0);
pDev->SetTransform(D3DTS_WORLD, pMatrix);
pDev->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, v, sizeof(VERTEX));
てやると、あきらかに別々の場所に表示されるんだけど、どうして
表示位置が一致しないの???
0944デフォルトの名無しさん
2009/05/20(水) 22:42:11マジでそんな担当者殴りたい仕様になってるの?
俺ならそんな関数作ったやつ関数修正するまで殴るのやめないけど
0945デフォルトの名無しさん
2009/05/20(水) 22:56:34Cから呼ぶときはthisポインタを第1引数に渡す。
よく分からんのが、943の前半はC形式で、後半がC++形式なとこ。
あと、pMatrixもよく分からんな。普通はそんな使い方しないと思うが。
0946デフォルトの名無しさん
2009/05/20(水) 23:05:40pSprite->End();
pSprite->Release();
のまちがい。手元のプログラムは全部Cだから、
pSprite->lpVtbl->End(pSprite) とか書いてあるんだけど
C++のほうがシンプルで見やすいかと思って変換しながらスレに書き込んでた。
それよりも pMatrix の使い方の違和感についてkwsk
0947デフォルトの名無しさん
2009/05/20(水) 23:16:09余計まぎらわしいよ
余計なことすんな
そのまま貼り付けろ
0948デフォルトの名無しさん
2009/05/20(水) 23:20:20pFont->DrawText(pSprite, s, -1, &rect, DT_NOCLIP, WHITE);
v[0].pos = D3DXVECTOR3(0, 0, 0); v[1].pos = D3DXVECTOR3(8, 0, 0);
v[2].pos = D3DXVECTOR3(0, 8, 0); v[3].pos = D3DXVECTOR3(8, 8, 0);
pDev->SetTransform(D3DTS_WORLD, pMatrix);
なんかこれあやしいよ
ソース間違ってるからさらにあやしい
なにが見やすいだバーカ
動かねぇんじゃ意味ねーんだよバーカ
0949デフォルトの名無しさん
2009/05/20(水) 23:26:30サンプル見る限りどう考えてもスクリーン座標用に見えるけど?
必要な変換わかってるか?
ワールド変換 → ビュー変換 → 射影変換 → ビューポート変換
だぞ
スプライトがSetTransformの影響を受けないとしたら
上記変換が必要になる
っていっても上記情報はすでにそろっているはずなので
順番に変換していけばいいだけ
0950デフォルトの名無しさん
2009/05/20(水) 23:39:07ワールド変換 → ビュー変換 → 射影変換 → ビューポート変換
の各行列はすでに Device に SetTransform でセットされているとして、
それを GetTransform で取得しながら積を求めて最終的な行列を求め、
それを Sprite::SetTransform に渡す必要があるってこと?
0951デフォルトの名無しさん
2009/05/20(水) 23:55:29>Sprite::SetTransform
それ動いてる?
0952デフォルトの名無しさん
2009/05/20(水) 23:56:33Sprite::SetTransformってそもそも同じなの?
0953デフォルトの名無しさん
2009/05/21(木) 00:03:27仮にスクリーン座標とワールド座標の書き分けをこのスプライトクラスでやろうと思ったら
どうやればいいの?
っていうか酷くあいまいじゃない?
これは酷いウンコクラスであると予想
やっぱり
ワールド変換 → ビュー変換 → 射影変換 → ビューポート変換
必要なんじゃないかなぁ・・・
0954デフォルトの名無しさん
2009/05/21(木) 00:07:43--
ID3DXSprite *pSprite;
D3DXMATRIX *pWorld, proj, view, m1, m2;
RECT rect = {0, 0, 0, 0};
MyVERTEX v[4];
/* 行列の準備 */
pWorld = ID3DXMatrixStack_GetTop(g_dev->matstack);
IDirect3DDevice9_GetTransform(g_dev->device, D3DTS_PROJECTION, &proj);
IDirect3DDevice9_GetTransform(g_dev->device, D3DTS_VIEW, &view);
/* ポリゴンを描いてみるテスト(画面の中心に出る) */
MyVertex_InitArrayEx(v, 4, MyCOLOR_WHITE, 0);
v[0].pos = MyVector3i(0, 0, 0); v[1].pos = MyVector3i(8, 0, 0);
v[2].pos = MyVector3i(0, 8, 0); v[3].pos = MyVector3i(8, 8, 0);
IDirect3DDevice9_SetTransform(g_dev->device, D3DTS_WORLD, pWorld);
IDirect3DDevice9_DrawPrimitiveUP(g_dev->device, D3DPT_TRIANGLESTRIP, 2, v, sizeof(MyVERTEX));
--
次に続く
0955デフォルトの名無しさん
2009/05/21(木) 00:09:41--
/* 文字描画テスト */
D3DXMatrixMultiply(&m1, pWorld, &view);
D3DXMatrixMultiply(&m2, &m1, &proj);
D3DXCreateSprite(g_dev->device, &pSprite);
pSprite->lpVtbl->Begin(pSprite, D3DXSPRITE_ALPHABLEND);
pSprite->lpVtbl->SetTransform(pSprite, &m2);
ID3DXFont_DrawTextA(g_dev->font, pSprite, "HELLO", -1, &rect, DT_NOCLIP, g_dev->color);
pSprite->lpVtbl->End(pSprite);
pSprite->lpVtbl->Release(pSprite);
補足:
MyVector3i() は D3DXVECTOR3() と同じ
MyVertex_InitArrayEx は MyVERTEX の配列を初期化する関数
0956デフォルトの名無しさん
2009/05/21(木) 00:13:09pSprite->lpVtbl->SetTransform に渡す行列を m1 にすると、文字は左上に出ます。
ポリゴンと同じ場所に文字列を描画というのが目的なんですけど、
うまくいきません。
0957デフォルトの名無しさん
2009/05/21(木) 00:15:02それだと今度ビューポート変換なくねぇ?
とりあえずヘルプの仕様どおりにワールド座標から突っ込んでみたら?
0958デフォルトの名無しさん
2009/05/21(木) 00:19:41スプライトの元のワールド空間からのトランスフォームを格納する D3DXMATRIX へのポインターです。
このトランスフォームを使用して、スプライトのスケーリング、回転、またはトランスフォームを行います。
とかいってるけどビュー変換 → 射影変換 → ビューポート変換にはなにもいってねぇ
余計まぎらわしい
殴りたいなこのクラス作ったやつ
っていうかここまで苦労するならもう使わないほうがよくねぇw
なにかメリットあるの?これ?w
0959デフォルトの名無しさん
2009/05/21(木) 02:05:16考えやすいじゃないか。
実際、自作の3Dレンダラーと組み合わせるとき、デバッグ情報を画面に表示させるのが楽だったぞ。
0960デフォルトの名無しさん
2009/05/21(木) 06:13:45ふざけんなよw
だってこの仕様じゃDrawPrimitive使ったほうが楽じゃねぇかよ(笑)
なにこれ?ふざけてるの?
クラス作ったヤツ「このクラスは必要ありません」って言えよw
0961デフォルトの名無しさん
2009/05/21(木) 07:08:492D描画の世界はそういうものだ。
自分の世界だけで全て語れるというものではない。
0962デフォルトの名無しさん
2009/05/21(木) 10:33:52スプライトのBeginにD3DXSPRITE_OBJECTSPACEを指定すれは、
スプライトのSetTransformに渡す行列がワールド変換行列として扱われる。
pSprite->lpVtbl->Begin( pSprite, D3DXSPRITE_ALPHABLEND | D3DXSPRITE_OBJECTSPACE );
0963デフォルトの名無しさん
2009/05/21(木) 11:18:14pSprite->lpVtbl->Begin( pSprite, D3DXSPRITE_ALPHABLEND | D3DXSPRITE_OBJECTSPACE );
pSprite->lpVtbl->SetTransform( pSprite, pWorld );
0964デフォルトの名無しさん
2009/05/21(木) 12:53:54わかりずらいなぁ
なんでSetTransformの仕様を俺仕様にしたんだろ?
気持ち悪い人が作ってそうだよね
0965デフォルトの名無しさん
2009/05/21(木) 12:59:13D3DX
あとはわかるな
0966デフォルトの名無しさん
2009/05/21(木) 13:33:31Spriteにしても、サンプルひとつでもあればわかるんだが。
0967デフォルトの名無しさん
2009/05/21(木) 13:59:46お前が気持ち悪いわ
0968デフォルトの名無しさん
2009/05/21(木) 14:42:000969955
2009/05/21(木) 15:17:13ところで、ビューポートの行列を取得する関数ってないんですね。
GetViewport で取得した情報を元に自分で行列を作ったんですが、
もしかしてどこかに直接行列を取得する関数がありますか?
0970デフォルトの名無しさん
2009/05/21(木) 21:34:300971デフォルトの名無しさん
2009/05/21(木) 22:46:520972デフォルトの名無しさん
2009/05/21(木) 23:02:110973デフォルトの名無しさん
2009/05/21(木) 23:34:59なんか一個ずつズレてるんだけど原因わかりますか?
地形、飛行機と描画すると地形に設定したはずの行列が飛行機に適用されます
それ以降、オブジェクトを増やしても全部一個ずつズレます
なんとかして下さい
0974デフォルトの名無しさん
2009/05/21(木) 23:43:030975デフォルトの名無しさん
2009/05/22(金) 03:02:51馬鹿発見
0976デフォルトの名無しさん
2009/05/22(金) 10:07:56「DirectXにスプライトなどない(キリッ)」っとか言っちゃうのかな
プッ
0977デフォルトの名無しさん
2009/05/22(金) 12:24:390978デフォルトの名無しさん
2009/05/22(金) 13:36:11俺用語を使っている奴は勉強不足の上、指摘すると直すどころか逆ギレする。
0979デフォルトの名無しさん
2009/05/22(金) 13:38:490980デフォルトの名無しさん
2009/05/22(金) 13:42:46Direct3Dも広義には持ってると言えるし
狭義には持ってないとも言えるし
0981デフォルトの名無しさん
2009/05/22(金) 14:31:500982デフォルトの名無しさん
2009/05/22(金) 14:40:27494 :名前は開発中のものです。 :sage :2009/05/22(金) 14:12:09 ID:WlLdGHRw
正しい用語を使っても相手に伝わらなければ無意味だけどな
勝てないと分かって姉妹スレに逃げた奴
0983デフォルトの名無しさん
2009/05/22(金) 14:43:010984デフォルトの名無しさん
2009/05/22(金) 14:47:33やっぱり動作を軽くするにはテクスチャとかを削るのが一番なの?
0985デフォルトの名無しさん
2009/05/22(金) 14:59:460986デフォルトの名無しさん
2009/05/22(金) 15:02:100987デフォルトの名無しさん
2009/05/22(金) 15:17:32おしえてエロい人
0988デフォルトの名無しさん
2009/05/22(金) 15:45:31炭酸飲料
0989デフォルトの名無しさん
2009/05/22(金) 16:06:19"ハードウェア上で"2Dグラフィックを合成して出力する映像技術
ただコンシューマー畑では長い間
大きく分けて、BG(背景)とスプライト(キャラクタ)の二つのレイヤーを合成して
ゲームを作るという概念が一般的であり
現在もニンテンドーDSなどの携帯機でも現役の技術であるために
ハードの進化に伴い
プレイステーション以降のポリゴンによる2D表現
いわゆる疑似スプライトが一般的になってきた現在でも
2Dによるキャラクタ描画を特に区別することなく「スプライト」という場合が多い
スプライトが無いと言ってる派は
「ソフトウェアスプライトは厳密にはスプライトじゃねぇ」
それと叩いてるのは
「こまけぇことはどうでもいいんだよ!」
ということだと思われる
0990デフォルトの名無しさん
2009/05/22(金) 16:06:440991デフォルトの名無しさん
2009/05/22(金) 16:08:09「ソフトウェアスプライトは厳密にはスプライトじゃねぇ」
→ 頭が固い
「こまけぇことはどうでもいいんだよ!」
→ 現実派
こんなとこかね。
0992デフォルトの名無しさん
2009/05/22(金) 16:21:20>>995 よろしく
0993デフォルトの名無しさん
2009/05/22(金) 16:32:00と3D画面に2Dの板を入れるみたいな感じだと思ってた
0994デフォルトの名無しさん
2009/05/22(金) 16:32:20【C++】 DirectX初心者質問スレ Part23 【C】
http://pc12.2ch.net/test/read.cgi/tech/1242977486/l50
0995デフォルトの名無しさん
2009/05/22(金) 17:18:39っていうだけ。
0996デフォルトの名無しさん
2009/05/22(金) 17:24:47ソフトウエアスプライトはスプライトだろ。
問題は仮想的にでも背景とキャラクタを別レイヤで扱う機能を、
包括的に持っているかどうか。
だから
>「ソフトウェアスプライトは厳密にはスプライトじゃねぇ」
こんなことを事例に挙げてしまっている時点で、
頭が硬いという問題ではなく、>>989自体がただの馬鹿。
0997デフォルトの名無しさん
2009/05/22(金) 17:28:240998デフォルトの名無しさん
2009/05/22(金) 17:31:170999デフォルトの名無しさん
2009/05/22(金) 17:34:251000デフォルトの名無しさん
2009/05/22(金) 17:35:5610011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。