鬱だ氏のう DirectX (Part 8)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
03/03/03 16:25ID:bb2JYtGF初心者用相談室では扱わないような少し高度な話題も受け持つ。
■ 過去スレ
Part 1 http://piza.2ch.net/tech/kako/966/966655286.html (プログラム板)
Part 2 http://pc3.2ch.net/test/read.cgi/tech/997101556/ (プログラム板)
Part 3 http://game.2ch.net/gamedev/kako/1005/10051/1005119775.html
Part 4 http://game.2ch.net/gamedev/kako/1016/10162/1016276254.html
Part 5 http://game.2ch.net/test/read.cgi/gamedev/1027351925/
Part 6 http://game.2ch.net/test/read.cgi/gamedev/1033920036/
Part 7 http://pc2.2ch.net/test/read.cgi/gamedev/1039509250/
0202あぼーん
NGNG0204名前は開発中のものです。
03/03/18 23:18ID:xLSGhw1c全サンプルソースの「デバイスの作成」「ディスプレイモードの変更」などの
共通する部分は、sample\c++\common ディレクトリ以下にあるファイルを参照してる。
つまりは、どのサンプルでも同じソースを見ることに。
英語が辛くても、クラス名・変数名・関数名で、とりあえずは解読していけると思う。
0205あぼーん
NGNG0206名前は開発中のものです。
03/03/19 04:38ID:jHAIC5hU再生できることは分かったのですが、アニメーションデータを使って決め打ちの
動作を再生せずに、プログラムからモデルの関節の角度を自由に動かしたいと思
っています。ボーンの名前を指定して、角度とか行列がセット出来れば最高なの
ですが、どうすればいいのでしょうか?
DirectX9でやってます、よろしくお願いします。
0207名前は開発中のものです。
03/03/19 04:38ID:jHAIC5hU0208あぼーん
NGNG0209名前は開発中のものです。
03/03/19 08:41ID:bp6EwTfmきれいにアンチエイリアスしたいのなら二倍解像度、四倍解像度、八倍解像度がいいと思われ。
まあ、自前でやるよりもドライバにやってもらったほうがいいと思うけど。
0210名前は開発中のものです。
03/03/19 12:34ID:WVppOME9オーダードグリッドスーパーサンプリングは
サンプル数の割に効果少ないからお勧めできない。
素直にドライバにまかした方がずっと綺麗だね。
0211あぼーん
NGNG0212名前は開発中のものです。
03/03/19 19:09ID:8P+p/kIxあれはどうやってんの?
0213名前は開発中のものです。
03/03/19 19:12ID:pffW96EZD3DPRIMITIVETYPE Type,
INT BaseVertexIndex,
UINT MinIndex,
UINT NumVertices,
UINT StartIndex,
UINT PrimitiveCount
);
の引数の NumVertices の意味がわかりません。
ヘルプにある
「MinIndex パラメータと NumVertices パラメータで、IDirect3DDevice9::DrawIndexedPrimitive の呼び出しごとに使用する頂点インデックスの範囲を指定する。」
の説明はどういう意味でしょうか?
0214あぼーん
NGNG0215213
03/03/19 19:24ID:4N+gcRlO自己解決しますた。
MaxIndex - MinIndex + 1 で頂点数が指定できました。
DrawIndexedPrimitive の呼び出しを最適にするには、
この値が小さくなるようにすればよいのでしょうか?
0216名前は開発中のものです。
03/03/19 19:36ID:aROLcDnZインデックスバッファ中の数値を[MinIndex,MinIndex+NumVertices)に抑えろって事。
0217あぼーん
NGNG0218名前は開発中のものです。
03/03/20 02:54ID:DoFguFYd0219あぼーん
NGNG0220名前は開発中のものです。
03/03/21 00:57ID:UlBOOJk6これって何を指してるんですか?マウスとかキーボードとか、機械(デバイス)の
クラスかと思ったんだけど、なんか違うみたいで。
で、なんでデバイスオブジェクトは「ロスト」したりするんですか?ロストしたらリストアしなく
ちゃいけないのはどうして?何で自動でリストアしてくれないの?オシエテ!!
0221あぼーん
NGNG0222名前は開発中のものです。
03/03/21 08:58ID:FEOEW09Iデバイスドライバのアーキテクチャが規定する、
アクセス単位という意味合いかなあ。
どうせハードウェアは直接は見えないんだから、
ファイルハンドルとかとあんまり変わらんと思う。
ロストについては、DirectXの方針しか言いようがないねえ。
DirectXは、ハードウェアを排他的に利用することを許しているから、
というのが直接の理由かな。
複数のDirectXアプリが動作した場合、
どちらかが追い出されるわけだ。これが「ロスト」状態。
んで、競合があった場合は、フォアグラウンドアプリに
獲得権(リストア権)を与えるという方針になっているんだと思う。
0223名前は開発中のものです。
03/03/21 09:15ID:pfc8C9hq0224あぼーん
NGNG0225名前は開発中のものです。
03/03/21 22:50ID:UlBOOJk6なるほど、あるがとうございますた。
ロストするかもしれないオブジェクト(デバイス依存のオブジェクト)が、
デバイスオブジェクトって理解でいいでしょうか。
0226あぼーん
NGNG0227名前は開発中のものです。
03/03/21 23:49ID:ohI3hpLrDirectX9です
0228名前は開発中のものです。
03/03/21 23:55ID:y3uVaxqx0229225
03/03/22 01:08ID:K2G4FdQTちゃんと動いてる・・・
どういう事をしたい時に、リストアとかが必要になるんですか?ウィンドウ−フルスクリーン切り替えに
対応させたい時??教えて偉い人!!
0230あぼーん
NGNG0231名前は開発中のものです。
03/03/22 01:31ID:/2Zh/v8O0232名前は開発中のものです。
03/03/22 21:47ID:ZHJp6X2x1. Dx9SDKヘルプで、"デバイスの消失" を検索。
2. http://www.google.com/search?num=25&hl=ja&ie=UTF-8&oe=utf-8&q=%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9+%E3%83%AD%E3%82%B9%E3%83%88+%E5%8E%9F%E5%9B%A0+DirectX&btnG=Google+%E6%A4%9C%E7%B4%A2
0233名前は開発中のものです。
03/03/22 22:52ID:K2G4FdQTおおっ、ありがとうございやす〜
まさにこの記事です、読みたかったのは
0234あぼーん
NGNG0235名前は開発中のものです。
03/03/22 23:54ID:/jCFCq3E0236..
03/03/23 00:18ID:pLhQwnwC●浮気素行調査
彼氏、彼女、妻、夫の浮気を調査致します!!
●盗聴器盗撮機発見
あなたの部屋に誰かが仕掛けているかも!!
●行方調査
行方不明になっている家族の消息を調査致します!!
●電話番号から住所割り出し
一般電話、携帯から住所を割り出し致します!!
●ストーカー対策
社会問題ともなっているストーカーを撃退致します!!
その他人生相談からどんなお悩みでも解決いたします!!
直通 090−8505−3086
URL http://www.h5.dion.ne.jp/~grobal/
メール hentaimtt@k9.dion.ne.jp
グローバル探偵事務局
0237あぼーん
NGNG0238名前は開発中のものです。
03/03/23 04:56ID:px9BKvzsシェーダーは使えますか?
0239あぼーん
NGNG0240名前は開発中のものです。
03/03/23 09:14ID:Fc2ha5K40241名前は開発中のものです。
03/03/23 09:26ID:lA19ERQJもうそろそろノートPCにも現世代のビデオチップが載りはじめるよ。
ATIもNVIDIAもようやく本腰入れてきたから。
http://pc.watch.impress.co.jp/docs/2003/0317/cebit08.htm
http://pc.watch.impress.co.jp/docs/2003/0319/nvidia.htm
0242あぼーん
NGNG0243名前は開発中のものです。
03/03/23 14:40ID:CQpRIuegスレと直接関係のない質問で恐縮ですが、98SEでSSEの命令を使った
プログラムが動くかどうか、ご存知の方がいらしたら教えてください。
何故、こんなことを聞いているかと言うと、私の作ったプログラム
(VC6+SP4+プロセッサパック) が、SSE命令を使った時に2000だと動き、
98SEだと動かないからです(SSE使用部分を外すと動きます)。
デバッグ出力に
D3DX: (INFO) Using SSE Instructions
の記述があるので、多分98SEでもOKなのでしょうが、念のために聞いて
おきたいと思いまして。
0244名前は開発中のものです。
03/03/23 16:11ID:b/1zdTweWin98からは、SSE サポートしてるはず。
動的メモリ割り当てしたオブジェクトのアライメントとかじゃねーんかな?
Win2k では、運良く16バイトアライメントされた所に確保してくれたとか。
というか、聞くスレを間違ってるかもしれん。
↓この辺か
アセンブラヽ(`Д´)ノモルァ
http://pc2.2ch.net/test/read.cgi/tech/1040297337/l50
0245名前は開発中のものです。
03/03/23 16:24ID:1J/iDgWnSSE命令ってOSじゃなくてCPUによるんじゃないの?
最近はCeleronでもSSEだけじゃなくてSSE2もサポートしてる
ちなみに私のノートPC 2001年5月もので
CPU Celeron700MHzでMMX, SSEをサポートしてる(SSE2は駄目
cpuid命令使ってCPUがMMX, SSE, SSE2をサポートしてるかどうか分かるよ
0246名前は開発中のものです。
03/03/23 16:26ID:1J/iDgWnこのあたり参考になるかも
ttp://blackphase.hp.infoseek.co.jp/BPProgram/SSE.htm
0247名前は開発中のものです。
03/03/23 17:40ID:ZmvH3kEVマルチタスク環境下では
レジスタやモードの切り替え処理がいるのでOSの対応も必要
0248名前は開発中のものです。
03/03/23 17:44ID:Y8YRCUVC0249名前は開発中のものです。
03/03/23 17:49ID:ZmvH3kEVカリングを無効にするだけでは駄目なのか?
0250名前は開発中のものです。
03/03/23 18:05ID:Y8YRCUVC0251名前は開発中のものです。
03/03/23 18:12ID:WvjtL6/50252名前は開発中のものです。
03/03/23 18:13ID:ZmvH3kEVそういえば放線の問題があったか
ということはもう一個作らないと無理
0253名前は開発中のものです。
03/03/23 18:23ID:Y8YRCUVC何か間違ったこと言ってますかね?
>>251
やっぱりそうですか。
OpenGLは両面ライティングやってくれるんですがねえ。
0254名前は開発中のものです。
03/03/23 19:01ID:WJQLPb2zお前ちょっともちつけ!
両方とも251へのレスになってる。
0255243
03/03/23 20:24ID:CQpRIuegスレ違いは分かっていたのですが、244が紹介してくださったようなスレは
知らなかったし、一応プログラム自体はDirectXのものなので(まあ言い訳に
過ぎませんが)良識的な人の多い、このスレで質問させていただきました。
ご迷惑でしたら、ごめんなさい。
で、結果なのですが
#defineALIGNE_SIZE16
#define ALIGNED__declspec(align(ALIGNE_SIZE))
ALIGNED D3DXVECTOR4配列
この配列のアドレスの下一桁が0になっていないのが原因でした。2000だと
0なんですけど、やり方が間違ってるのか、98seだと下一桁が0じゃないものが
出来てしまいました。
しょうがないので
movaps //アラインメントが必要菜mov
を
movups //アラインメントが不要なmov
に置換することで解決となりました。パフォーマンスは少し落ちたのかも
しれませんが、計測できるほどではないようなので。
もし、正しいアラインメントのやり方をご存知の方がいらしたら、
アドバイスしてくださると助かります。それともスレ違いの話題なので、
244さんの紹介してくださったスレに行った方が良いでしょうか。
0256243
03/03/23 20:26ID:CQpRIueg#define ALIGNE_SIZE 16
#define ALIGNED __declspec(align(ALIGNE_SIZE))
ALIGNED D3DXVECTOR4 配列
です。
0257あぼーん
NGNG0258名前は開発中のものです。
03/03/23 21:22ID:MZF0GWXnピクセルシェーダで、光源との間に他のポリゴンがあれば影がつく、みたいな感じで
計算してみたのですが、遅くて使い物になりませんでした。
こう、ランプを動かすと影が大きく動く、みたいな演出をしたいのですが・・・
0259名前は開発中のものです。
03/03/23 21:54ID:qJiQfefa馬鹿は氏ね
0260名前は開発中のものです。
03/03/23 22:07ID:NJ/JST+zこうやってみると、スクリプト荒らしって罪がないもんだな
0261名前は開発中のものです。
03/03/23 22:53ID:WvjtL6/5ワラタ
0262名前は開発中のものです。
03/03/23 23:49ID:NuCtkpvs0263名前は開発中のものです。
03/03/24 00:18ID:mg4yMaQDDirectX関係のサイトを見て回ると、ステンシルテストが微妙な所は縞々になったりとか
微妙な問題が多いみたいなんですけど、どうやったらいいんでしょうか。
DirectXの影サンプル(飛行機の奴)は問題無いようにみえるんですけど、これってその
まま使っても大丈夫なんでしょうか。教えてください
0264244
03/03/24 01:22ID:2/FCNweI文法はあってると思うので、やっぱり動的メモリ割り当てしたオブジェクトが問題なんじゃないかと。
次のようなコードがあるとアウト。
ALIGNED D3DXVECTOR4* pV4 = new D3DXVECTOR4;
この場合 new したオブジェクトが アライメントしてくれる保証は無い (はず) なので
代わりに _aligned_malloc( ) を使って、アライメント済みのメモリを確保すると良い。
ただ、
ALIGNED D3DXVECTOR4 V4;
と、自動変数でアライメントが狂うとなると、ちとわからん。
私もそんなに asm を使いこなしているわけではないので、
アセンブラスレで聞いたほうが、正確な情報が聞きだせると思う。
Dxの話題でもなくなってきてるし。
0265名前は開発中のものです。
03/03/24 01:24ID:l1Ng8fS8とか、よくしらないのにいってみるテスト。
0266名前は開発中のものです。
03/03/24 01:28ID:ICdF9SLs0267あぼーん
NGNG0268名前は開発中のものです。
03/03/24 02:20ID:FvGoC6eMSDKのサンプルも縞々してるぞ
0269あぼーん
NGNG0270名前は開発中のものです。
03/03/24 06:45ID:mg4yMaQDナイスなサンプルはどっかにないでしょうか。DOOMとかキレイですけどどうやってるんでしょうか
0271あぼーん
NGNG0272243=255=256
03/03/24 08:29ID:KE3EBdJ/やはりスレ違いですよね。失礼しました。もう少しチェックして
分からなかったらアセンブラスレのほうに行ってみたいと思います。
0273名前は開発中のものです。
03/03/24 19:41ID:QS00uNc2//D3DXMATRIX matWorld //ワールド座標に変換する行列が設定されている
void CGraphics::_DrawImage(CTexture* img,FRECT src){
CUSTOMVERTEX* cv1;
m_pVB->Lock( 0, 4*sizeof(CUSTOMVERTEX), (void**)&cv1, 0 ) ;
cv1[2].x=0.0f;
cv1[2].y=0.0f;
cv1[3].x=src.right - src.left;
cv1[3].y=0;
cv1[1].x=src.right - src.left;
cv1[1].y=src.bottom - src.top;
cv1[0].x=0.0f;
cv1[0].y=src.bottom - src.top;
//img->Width・・・読み込み後のテクスチャの横幅//img->Width・・・読み込み後のテクスチャの縦幅
cv1[0].tu = src.left / img->Width ;
cv1[0].tv = src.top / img->Height ;
cv1[1].tu = src.right / img->Width;
cv1[1].tv = src.top / img->Height ;
cv1[3].tu = src.right / img->Width ;
cv1[3].tv =src.bottom / img->Height;
cv1[2].tu = src.left / img->Width ;
cv1[2].tv =src.bottom / img->Height ;
m_pVB->Unlock();
m_pd3dDevice->SetStreamSource( 0, m_pVB, 0, sizeof(CUSTOMVERTEX) );
m_pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
m_pd3dDevice->SetVertexShader(NULL);
m_pd3dDevice->SetTexture(0,*img->GetPicture());
m_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld);
m_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2 );}
0274名前は開発中のものです。
03/03/24 19:41ID:QS00uNc2四角形ポリゴンにテクスチャを張ってイメージを描画しようとしたのですが
視点を変えていくとある程度離れたらテクスチャ座標が変な座標になってしまいます。
ある距離に達するまではイメージの指定した範囲が描画されるのですが、それ以後は一部分が極端に拡大されて描画されます。そして離れるほどにどんどん描画される部分が変わっていきます。
何か変なことをやったのでしょうか。教えてください。
0275名前は開発中のものです。
03/03/24 19:53ID:Iua7lzGb0276名前は開発中のものです。
03/03/24 19:58ID:QS00uNc2struct CUSTOMVERTEX
{ FLOAT x, y, z;
DWORD color;
FLOAT tu, tv;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1)
こうなっています。
0277名前は開発中のものです。
03/03/24 20:32ID:Iua7lzGb0278名前は開発中のものです。
03/03/24 20:36ID:QS00uNc2m_pd3dDevice->CreateVertexBuffer(4*sizeof(CUSTOMVERTEX),
D3DUSAGE_WRITEONLY,D3DFVF_CUSTOMVERTEX ,
D3DPOOL_MANAGED, &m_pVB, NULL );
CUSTOMVERTEX* v;
m_pVB->Lock( 0, 0, (void**)&v, 0 );
v[0].z=0;
v[0].color=0xffffffff;
v[1].z=0;
v[1].color=0xffffffff;
v[2].z=10;
v[2].color=0xffffffff;
v[3].z=0;
v[3].color=0xffffffff;
m_pVB->Unlock();
このように初期化しています。
0279278
03/03/24 20:39ID:CCQez5lK0280あぼーん
NGNG0281名前は開発中のものです。
03/03/24 23:09ID:FvGoC6eMとりあえずSDKのサンプルを実装してみろ
DOOMVの方法は、^c氏
http://www.radiumsoftware.com/
のちょっと前の日記を読むといいんじゃないか
0282名前は開発中のものです。
03/03/24 23:25ID:mg4yMaQD情報どうもです。SDKの解析からやりたいと思います。
0283名前は開発中のものです。
03/03/24 23:54ID:jv9g5fuNこれではだめ?テクスチャ座標の指定を間違えてると思ったんだけど。
cv1[0].tu = 0.0f;
cv1[0].tv = 0.0f;
cv1[1].tu = (src.right-src.left)/ img->Width;
cv1[1].tv = 0.0f/ img->Height ;
cv1[3].tu = (src.right-src.left)/ img->Width ;
cv1[3].tv = (src.bottom-src.top)/ img->Height;
cv1[2].tu = 0.0f;
cv1[2].tv = (src.bottom-src.top)/ img->Height ;
0284名前は開発中のものです。
03/03/25 00:23ID:OH59+Xxkオプションでスキニングメソッドをいろいろ選べるようになってるんですが、
これってどれを使うのがいいんですか?
それぞれ長所短所とかあれば教えてください誰か
0285名前は開発中のものです。
03/03/25 02:20ID:I69aqFveDirectX7ハードを基準に頑張んなきゃならない哀れな人以外は頂点シェーダ。
0286名前は開発中のものです。
03/03/25 02:27ID:OH59+Xxkレスどうもです!
ついでに教えて欲しいんですが・・・
D3D Indexed(VS)とHLSL Indexed(VS)は何が違うんでしょうかか?
あと、頂点シェーダを使った場合、GeForce2MXとかで動かなくなっちゃいますか?
0287名前は開発中のものです。
03/03/25 02:40ID:csMMviHw要するに頂点全部に対して処理をするだけ。
ハードにやらせるかソフトでやるかが違う。
0288あぼーん
NGNG0289名前は開発中のものです。
03/03/25 02:46ID:I69aqFveソフトウェア頂点シェーダで最低限遊べる程度に動かすことは可能。
まあハードウェア頂点シェーダ前提で作るなら当然取るべき安全策。
HLSLは、まあ自分で調べてみてくれ。それを使うことによって
開発効率が上がると思うならならいいかもな。
0290名前は開発中のものです。
03/03/25 07:37ID:O3JDezbeGeForce2MXで動かなくなります。
かなり普及してるビデオカードなので対策はしといた方が良です。
0291名前は開発中のものです。
03/03/25 07:50ID:JEbuRyBg動いてるよ。
GeForce2MX
おまいの作ったもんだけだろ?
0292名前は開発中のものです。
03/03/25 07:52ID:zlUqGGxa0293あぼーん
NGNG0294278
03/03/25 12:58ID:NIBqNt/Z解決しました。原因は
SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT )
でした。
どうもありがとうございました。
0295あぼーん
NGNG0296名前は開発中のものです。
03/03/25 17:04ID:PU/p1Hnkオフスクリーン専用のレンダラを作りたいのだ
0297名前は開発中のものです。
03/03/25 17:17ID:LewSLoG3http://pcweb.mycom.co.jp/news/2003/03/25/11.html
0298名前は開発中のものです。
03/03/25 17:39ID:j2FktYH0FF対応版か?
いずれにせよ、これでようやく人様に
ランタイムのインストールを堂々と奨められるよ。
0299名前は開発中のものです。
03/03/25 18:55ID:GuJgoDva残念だがそれはできないのだよ。
というわけで、不可視のウィンドウでも作ってくれたまえ。
0300あぼーん
NGNG0301名前は開発中のものです。
03/03/25 19:56ID:AW42iDBpウィンドウからフォーカスが外れたら止める仕様のためってことは
理解できるんだが、コンソールアプリからみると不必要な手間がかかって
面倒な仕様だと思うよ…。
■ このスレッドは過去ログ倉庫に格納されています