鬱だ氏のう 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/
0158名前は開発中のものです。
03/03/17 22:28ID:Odh3Hm+mワラタ
0159名前は開発中のものです。
03/03/17 23:03ID:ZJJFntE0うちのモニタは320x200できるぜ。
0160名前は開発中のものです。
03/03/17 23:11ID:bYoYst8Tはいはいダウト
解像度を下げても速度は変わらないよ
勉強し直してまた来てね
0161名前は開発中のものです。
03/03/17 23:11ID:CC77FEGd157はマジレスだとおもうが。
0162名前は開発中のものです。
03/03/17 23:13ID:CC77FEGd解像度を低くすれば低解像度のテクスチャを使ってもあまり気にならんし、
普段よりもローポリゴンモデルを使ってもだませると思うんだが。
普通はやらんがナー
0163名前は開発中のものです。
03/03/17 23:17ID:bYoYst8Tはいはいダウト
解像度を下げごまかそうにもフルスクリーンでは意味無いよ
勉強し直してまた来てね
0164あぼーん
NGNG0165名前は開発中のものです。
03/03/17 23:21ID:F3tILkQF0166名前は開発中のものです。
03/03/17 23:26ID:bYoYst8Tはいはいダウト
あなたは159
勉強し直してまた来てね
0167149
03/03/17 23:48ID:ihVjtNNd0168名前は開発中のものです。
03/03/17 23:52ID:TEZKAErQこの発言、かなり謎
VSYNC待ちとかやっててFPSあがらなかったから意味が無いと勘違いした
位しかこんな発言をする状況がわからん
解像度を下げても速度は上昇しない が真であるとすると
解像度を上げても速度は低下しない も真になってしまう
これが真だったらすばらしい世の中になるんだが・・・
0169名前は開発中のものです。
03/03/18 00:07ID:LaTsV02p転送量減るから明らかに下がると思うんだけど……ってこれは2Dか。
3Dの場合はレンダリングの負担が減るから上がる?そうでもない?
0170名前は開発中のものです。
03/03/18 00:15ID:MB/llWqvポリゴン数が少なめで、αでの重ね描きが多いなら、速度の変化は大きいだろう。
逆にポリゴン数がむっちゃ多ければ、頂点転送がネックになるだろうから、
速度はそんなに変わらんだろうね。
解像度、というか描画されるときのピクセル数に応じて
モデルをLODしてあげるのがベスト。ああ、言うのは簡単。
0171名前は開発中のものです。
03/03/18 00:20ID:1abL5V3T0172名前は開発中のものです。
03/03/18 00:40ID:27p31k4Bあんたはやるのかい?
0173名前は開発中のものです。
03/03/18 00:43ID:MB/llWqvだから解像度で合ってると思うけど・・・
バックバッファを固定のピクセル数で描画して、
縮小bltすることでアンチエイリアスするとかいう話かな?
あんまりメジャーなやり方じゃないような気もするけど、
FFXIとかはやってるんだっけ。
0174あぼーん
NGNG0175名前は開発中のものです。
03/03/18 02:19ID:vu1bRTRv0176名前は開発中のものです。
03/03/18 02:23ID:vu1bRTRvhttp://developer.nvidia.com/docs/IO/4449/SUPP/GDC2003_PipelinePerformance.pdf
ここらへんに色々ヒントがあるんでないかい。
0177名前は開発中のものです。
03/03/18 02:24ID:JNOt4two真性のアフォか?
普通はやらんと書いてる上に突っ込み。
これだけでも見事だが、
>解像度を下げごまかそうにもフルスクリーンでは意味無いよ
はじめっから320*200でディティール潰れてるのにごまかすも糞もないというか
明らかに>159の言ってることを理解してないと思うんだが。
>うちのモニタは320x200できるぜ。
どう考えてもフルスクリーンの320*200って意味だろ?
それを前提に書いてるんだが・・・。
163は日本語勉強し直してまた来てね。
0178名前は開発中のものです。
03/03/18 03:15ID:yFGYF0mB技術の肥やしにもならんぞ。
0179名前は開発中のものです。
03/03/18 03:17ID:dmYl8h+P実際ゲームを組んだときに大きな効果があったのはこの二つだったな。
描かないってのはクリッピングやカリングやソートをしっかりやれってことだし。
グラボがショボイと機能のサポートはなんとかできるが速度のサポートはそんなにはできない。
じゃあなんとか速度をあげる工夫をしたいとこだけど描かない処理以上に効果が期待できるものはない。
0180あぼーん
NGNG0182155
03/03/18 13:26ID:wiJ8wouC0183名前は開発中のものです。
03/03/18 13:48ID:gYLRZrvG3Dデバイスからみた大きさとは関係ないということ
速度の問題ならバックバッファを小さくとって、
ビデオカードが表示可能な解像度に設定すればいい
>うちのモニタは320x200できるぜ。
とサポートが怪しい解像度を使う必要はない
0184155
03/03/18 14:54ID:wiJ8wouCオブジェクトを回転させようとすると、巨大化したり変な形になってしまいます。
D3DXMatrixOrthoLH(&matProj,320.0f,240.0f,0.0f,10000.0f);
m_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matProj);
float t_y=45.0f;
D3DXMATRIXA16 matworld;
D3DXMatrixIdentity(&matworld);
D3DXMATRIXA16 temp,res;
D3DXMatrixRotationY( &temp,t_y);
D3DXMatrixMultiply(&res,&matWorld,&temp);
matWorld=res;
float x=668f,y=64.0f,z=668.0f;
D3DXMatrixTranslation(&temp,x,y,z);
D3DXMatrixMultiply(&res,&matWorld,&temp);
matWorld=res;
m_pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld );
//メッシュ描画
m_pd3dDevice->DrawSubset(i);
こんなソースです。
t_yを0にすると正常に描画されます。たすけてください。
0185名前は開発中のものです。
03/03/18 15:05ID:gYLRZrvG>D3DXMatrixRotationY( &temp,t_y);
これでは出来なくて当たり前
0186155
03/03/18 15:10ID:wiJ8wouCすみません。3.14*t_y/180.0fでした。ソースではちゃんとなっていたんですがこっち(掲示板)には書き忘れました。
でもできないんです。
0187名前は開発中のものです。
03/03/18 15:48ID:M5e1mN7f『D3DXMATRIXA16 を D3DXMATRIX と解釈する。
実際には行列のアラインメントを行わないコンパイラでこの構造体を使うと、
アラインメントを無視してしまうというバグを発見できずに、
問題が起きることがある。』
あと、179は笑い所ではないと思うが…
0188名前は開発中のものです。
03/03/18 15:49ID:I/hIMVFOD3DXMatrixOrthoLH(&matProj,320.0f,240.0f,1.0f,10000.0f);
にしたら?
0189名前は開発中のものです。
03/03/18 15:59ID:ax2Oh+v0どこかにウィンドウモードからフルスクリーンモードへの
切り替えをするプログラムの良いサンプルは無いでしょうか?
作成環境はVC++.NET、DirectX9です。
0190名前は開発中のものです。
03/03/18 16:01ID:uxd6NOfDDirectX Graphics > プログラミングガイド > チュートリアル(…) >
> プログラミングのヒント > パフォーマンスの最適化
「最速のポリゴンは描画しないポリゴンであることを忘れないこと」
偉大なる指導者ゲイツ様もこうおっしゃっておられる。
プログラミング全般においても、バグを作らないためにはコードを書くなってのは
よく言われる鉄則だよな。
0191155
03/03/18 16:02ID:wiJ8wouCすみません、なんとt_yがintになっていました。dllでエクスポートした関数の回転部分の定義がintになっておりdllを使用するアプリケーションの定義との食い違いが発生していた模様です。
修正するとなおりました。
おさわがせしました。
0192あぼーん
NGNG0193名前は開発中のものです。
03/03/18 17:56ID:GviPNe6yいや、だからさ、実際の解像度よりも大きなレンダリングターゲットを用意する必要があるのかと
アンチエイリアスだわ〜いわ〜い。などと言ったところで何の意味があるのかと
ニュアンスとして当然解像度下げる=レンダリングターゲットのサイズを小さくする
なわけで、重箱の隅つつきもいいかげんにしたほうがいいと思われ
0194名前は開発中のものです。
03/03/18 18:10ID:gYLRZrvG小さな方なら意味があると言っているんだが、なぜ大きい方にこだわるんだ?
もう一度言うが速度の問題ならバックバッファを小さくとればいいだけで
転送先の解像度は関係ない
>ニュアンスとして当然解像度下げる=レンダリングターゲットのサイズを小さくする
>なわけで、重箱の隅つつきもいいかげんにしたほうがいいと思われ
間違いを認めるのならそれでいい
次からは解像度と言わないように気を付けろよ
0195
03/03/18 19:10ID:rJ5Ix6yq0196あぼーん
NGNG0197名前は開発中のものです。
03/03/18 19:42ID:MB/llWqv解像度の比率はどれくらいがいいんだろ。
0198名前は開発中のものです。
03/03/18 20:15ID:LsVxoaNv日本のMSのサイトにあるやつ、もううごかねーでやんの。
0199名前は開発中のものです。
03/03/18 21:03ID:H/UNWxeVhttp://hkwr.com/
http://hkwr.com/bbs
0200あぼーん
NGNG0201名前は開発中のものです。
03/03/18 21:18ID:xLSGhw1cDx9 のサンプルソースを見るとよろしい。
私は、それを参考にして、Window <-> FullScreen を実装した。
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あぼーん
NGNG■ このスレッドは過去ログ倉庫に格納されています