トップページ⇒tech
996コメント274KB

鬱だ氏のう DirectX 2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
どんどんバージョンが上がる DirectX について
マターリと技術情報交換しましょう。

前スレ「鬱だ氏のうDirectX」
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=966655286

関連スレ「初心者はここで聞け!DirectX相談室」
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=991795568
0322デフォルトの名無しさんNGNG
>>321
俺も同じようなことをしたいと思ってた。
とりあえず、COMプログラミングから勉強始めてみたよ。
0323鬱だ氏のうNGNG
バージョン多すぎ。テスト工数も多すぎ。
0324デフォルトの名無しさんNGNG
Easy Link
http://www3.justnet.ne.jp/~botchy/el.htm
ってどう?
0325デフォルトの名無しさんNGNG
>>321
俺もDirectShowでそんなことをやろうとしているところ
>>322
良い参考書あった?
0326デフォルトの名無しさんNGNG
DirectX8.1SDKにサンプルグラバフィルタのソースが付いてるみたいだよ。
独自のフィルタ作成する際には参考になるかも。
0327デフォルトの名無しさんNGNG
DX8のXfileの事で。メッシュやらマテリアルやらテクスチャやらを読み込んで
保持する構造体 へのポインタをたくさん作って中身を入れて、
複数のキャラを登場させるためにそれらのポインタを配列変数に入れて使っています。これって
メチャメチャメモリを使ってるんです(・・・か?)よね。
それで終わったらその格納されたメッシュとテクスチャとへのポインタだけ(Xファイル関係では)を
DXのリリース処理に渡してるんですけどこれでいいんでしょうか。
一応ちゃんと動いて、ちゃんと終了したように見えるのですがとても怖いです。
0328デフォルトの名無しさんNGNG
なんだ違うのか
DirectX 2 機能限定スレッドかと思って期待して入ってしまった(マジ)
0329デフォルトの名無しさんNGNG
>>328
違うのだ。「 鬱だ氏のう DirectX 」 のパート2。
0330デフォルトの名無しさんNGNG
DirextX9のβ当選のメールがきたYO!
0331デフォルトの名無しさんNGNG
>>330
お祝いにみんなに一杯おごれYO!
0332デフォルトの名無しさんNGNG
>>330
早速流出しろYO!
0333デフォルトの名無しさんNGNG
>>332
ほしけりゃ自分で応募しろYO!
最初の募集で応募すれば誰でも当選するYO!
0334 NGNG
winMXだ!
0335デフォルトの名無しさんNGNG
あれって当選とかそういうもんか?
応募者全員に来たのかと思った。テストしてやるんだし。
国際FAXさせられたぞ
0336デフォルトの名無しさんNGNG
>>335
東京のマイクロソフトでいいんでないの?
0337デフォルトの名無しさんNGNG
DirectXをつかって、自分用に簡単なモデリングツールを作っているのですが
コロコロ変わる頂点の扱い方について、うまい方法が、どうも思いつきません。

今は、丸め誤差対策にintかなんかで、データを別場所に持ち
[0] [1] [2] [3] ....  ←可変長ベクトル(DrawPrimitiveに渡すバッファ)
↑ ↑ ↑ ↑
ptr ptr ptr ptr   ←各データオブジェクトがintデータを渡すためのポインタ

なんてやっているのですが。可変長ベクトルが縮んだりした場合の処理が厨で…
初心者丸出しの質問ですが、もしこんなの組んだ方いらっしゃましたらアドバイスお願いします。
0338デフォルトの名無しさんNGNG
>>337
データの格納自体にはSTL使って、表示データをそこから生成するように
してみれば?
033966NGNG
正直すまんかった >>TBS
0340 NGNG
厨房でスマンが 丸め誤差対策にIntで持つって有効なの?
解説本でも見たことないなぁ

同じビット数なら大差ないような気がしないでもない
(ある程度、数値の上限下限が決まってればfloatよりbitを効率よく使えそうだけど)
0341337NGNG
>>338
レスありがとうございます。
えっと、別場所int格納のオブジェクト管理にSTLを使い、
描画毎に、表示データを生成する、ということで良いのでしょうか?
0342337NGNG
>>340
すいません、私本当に初心者なので間違っていると思います。

実はすでにfloatで頂点データ持つ様なの作ったんですよ。
で、この頂点を、たとえば0.1ずつ動かすようなコマンドがあるのですが、
これを50回実行したあと、-0.1ずつ50回動かしても、元の値には戻らない。

しょうがないのでデータは整数できっちり持って、
描画時には適当な値で、それを割ったのを使おうと思ったんです。
0343デフォルトの名無しさんNGNG
>>341
(インデクスの?)int以外に、頂点のセレクションデータとか、ユーザーデータとか持つ場合の
情報を構造体とかに収めて、それをSTLの任意のコンテナで管理しておくという感じのを想像
してました。
描画毎、というよりはデータの更新や変更がある度にモデラーに表示するデータを更新して
やればOKかと。(実際の管理データと、プレビュー上に表示するためののデータを分けて
やるってことですね。)
0344デフォルトの名無しさんNGNG
>>342
doubleで持っていても精度に問題あります?
0345337NGNG
>>343
言葉足らずですいません。上記のintはインデクス管理のintではなく、頂点データそのものです。
そうなんです、管理データと、描画データ(DirectXのfloatバッファ)を分けて考えたくて…。

描画バッファをフラッシュせずに処理することばかり、考えてました。
お勧めに従い、変更あるたびにバッファデータを全更新してみます。
御陰様で、しがらみから解放されたような、清々しい気分です(^ ^)

>>344
double d = 0.0; int i;
for( i=0; i<1000; ++i ) d += 0.1;
for( i=0; i<1000; ++i ) d -= 0.1;

今、VC++6でこんなの試してみましたが、やはり完全な0.0には
戻らないみたいです(T-T なにか私が勘違いしている気がしてきました…
0346 NGNG
そもそも0.1って2進数で表現すると循環小数で正確に表せないヤバゲな数字では?
0347337NGNG
>>346
サンクス、そうみたいですね(T-T
BCD演算とかよく分からないですし、描画は相対的なつじつまさえ
合えばいいので、やはり整数でデータ保持の方向で行ってみます。
0348名無しさんNGNG
来年にはDirectX9が出るそうですが、何がどうなりますか?
0349デフォルトの名無しさんNGNG
>>348

サイズが増える
0350デフォルトの名無しさんNGNG
>>348
Windowsを切り捨てる。
0351デフォルトの名無しさんNGNG
>>347
0.1 じゃなくて、0.125 とか 0.06125 とか、
2の乗数だったら正確に計算できるはず
0352デフォルトの名無しさんNGNG
それはそれとして、普通浮動小数点の同値判定には
閾値を設けるものではないかね。
0353デフォルトの名無しさんNGNG
>>348
.Netに対応する
0354Kusakabe YouichiNGNG
>>352 デフォルトの名無しさん wrote:

> それはそれとして、普通浮動小数点の同値判定には
> 閾値を設けるものではないかね。

というか「してはいけない」のでは?
0355デフォルトの名無しさんNGNG
うむ。
0356デフォルトの名無しさんNGNG
>>354
閾値って知ってる?(笑
0357Kusakabe YouichiNGNG
>>356 デフォルトの名無しさ wrote:

> >>354
> 閾値って知ってる?

先日すっぽんのを飲みましたよ :)

で、a > 0.0 とか b < 3.5 ってのはOKだけど、
a == 0 のかわりに 0 - d < a && a < 0 + d みたいなのは
「やるべきではない」という話ですよ? > 前述の
(だからa == 0 にしろと言っているわけではない)
0358デフォルトの名無しさんNGNG
>>345

>double d = 0.0; int i;
>for( i=0; i<1000; ++i ) d += 0.1;
>for( i=0; i<1000; ++i ) d -= 0.1;

純粋に疑問なんだけど、こういうのをどういう目的につかっているの?
UNDOの為にこういうことをしているんだったら根本的に間違っている気が…。
0359Kusakabe YouichiNGNG
>>358 デフォルトの名無しさん wrote:
> >>345
> >double d = 0.0; int i;
> >for (i = 0; i < 1000; ++i) d += 0.1;
> >for (i = 0; i < 1000; ++i) d -= 0.1;
>
> 純粋に疑問なんだけど、こういうのをどういう目的につかっているの?

「こういうのはやっちゃいけない」という例題の目的では?
0360デフォルトの名無しさんNGNG
吾輩の幾何学クラス群にも==/!=演算子などない。
0361 NGNG
a == 0 のかわりに 0 - d < a && a < 0 + d みたいなのは
「やるべきではない」という話ですよ? > 前述の

えっ これダメなの?
0362デフォルトの名無しさんNGNG
出張サービスです。放置してください。
0363Kusakabe YouichiNGNG
>>361 wrote:
> a == 0.0 のかわりに 0 - d < a && a < 0 + d みたいなのは
> 「やるべきではない」という話ですよ? > 前述の
>
> えっ これダメなの?

それを「やるべし」という話だったんですよね?
まあ一般にはよくいわれるけど、
それを私は「そうではない」と主張したわけです。
(もちろんa == 0.0のほうが0.0 - d < a && a < 0.0 + dよりよいと
いっているわけじゃないですよ。勘違いしないように)
0364 NGNG
>>363 どう書けばいいのよ
0365デフォルトの名無しさんNGNG
どうでもいいけど、ヘミ猫の日下部さんですか?
0366デフォルトの名無しさんNGNG
>>361-364
スレを荒らしたくないなら、相手にするのはやめとけ。わざと曖昧な言葉を使って
混乱させるだけだから。

相手にすると、どのぐらい酷いことになるかは

”作ってわかるCプログラミング”でCを勉強 part5
http://pc.2ch.net/test/read.cgi/prog/1007204446/l50

このあたり参照。
0367  NGNG
へみ猫やめてギコ猫にしましょうよ
0368デフォルトの名無しさんNGNG
>>363
私も気になります。どう書けばいいか、
「作ってわかるCプログラミング」に書いてありますか?
0369デフォルトの名無しさんNGNG
なんかさっきから、内容の無いあいまいなレス返してるしてるヤツがいるなあと思ったら・・・ハァ。
たのむからプログラマ板に帰ってくれ、こっちまで汚さないで。
0370デフォルトの名無しさんNGNG
Knuth Sec. 4.2.2 pp. 217-8. を見ろって
いわれちゃうんだろうな。誰かクヌース先生の
原著持っている人、確認してください。
0371デフォルトの名無しさんNGNG
>>357
「閾値=しきいち」
0372Kusakabe YouichiNGNG
>>371 デフォルトの名無しさん wrote:
> >>357
> 「閾値=しきいち」

その慣用読み(まではまだ行ってないかなあ)ってどの時代にできたんでしたっけ?
0373デフォルトの名無しさんNGNG
「しきいち」と「いきち」ではどっちが一般的なんだろ?
0374デフォルトの名無しさんNGNG
>>372
DirectXスレッドにくるのはやめてください。ゲーム開発者に恨みでもあるのですか?
0375デフォルトの名無しさんNGNG
>>374
スレ違いな発言は無視でしょ。ここ DirectX スレなんだし、言語史はどうでも良い。
0376Kusakabe YouichiNGNG
>>373 デフォルトの名無しさん wrote:
> 「しきいち」と

「敷居値」とでも書くのですか? :)
0377デフォルトの名無しさんNGNG
MFCとATL、SDK・・・どれ使ってる?
0378デフォルトの名無しさんNGNG
SDK、場合によってVCL(笑
0379デフォルトの名無しさんNGNG
>>376
ウゼェ。
0380デフォルトの名無しさんNGNG
>>379
オマエモナー

Kusakabe 先生のスレ違い書き込みに対する苦情には専門のスレが用意されて
いるので、ム板では書かないようにお願いします。スレ違いな書き込みにコメント
をつけるのは、スレ違い書き込みをしている人間と一緒になって荒らし行為をし
てるのと変わりません。

日下部 陽一先生の隔離スレッド void ***
http://pc.2ch.net/test/read.cgi/prog/1006918877/

#同意も反論も不要。なんかあったら↑のスレで言ってくれ。
0381373NGNG
>>376
MS-IME98だと「しきいち」で「閾値」に変換されます。
閾値は「いきち」が普通だと思ってたけど、まさか「しきいち」でも変換できる
とは思ってなかった。
メルトダウンのATiのスライドでも「しきい値」ってのが出てきますね。
0382Kusakabe YouichiNGNG
>>381 373 wrote:
> >>376
> MS-IME98だと「しきいち」で「閾値」に変換されます。
> 閾値は「いきち」が普通だと思ってたけど、まさか「しきいち」でも変換できる

> とは思ってなかった。

まあMS-IMEですから。
VJE-Delta4.0ならまっとうですよ。
0383デフォルトの名無しさんNGNG
学生の時に使っていた電気回路、電子回路の教科書計10冊ではすべて
「しきいち」を使っていましたが、何か?
0384デフォルトの名無しさんNGNG
>>383
いいかげんにしろ。
0385デフォルトの名無しさんNGNG
>>381、>>383
お客様、展示品にはお手を触れないでいただけないでしょうか。
0386デフォルトの名無しさんNGNG
>>336
東京でいいの
あとMAILでおくる場合って、
やっぱり印刷したPDFをスキャナでスキャンして送るのかな?
0387デフォルトの名無しさんNGNG
>>386
東京の宛先ってMSのどこ?
0388デフォルトの名無しさんNGNG
うちに郵送で来たやつだと、川○さん宛てになってたけど。
0389デフォルトの名無しさんNGNG
>>388
郵送?メールじゃなくて?
0390デフォルトの名無しさんNGNG
X9のPDFはみんなアメリカまでファクースしてるの?
0391デフォルトの名無しさんNGNG
おれはファックスしてしまったよ・・
でも音沙汰無し
0392デフォルトの名無しさんNGNG
PDFを印刷して、書き込んで、スキャンして、
JPEGで添付してmailで送ったよ。
0393デフォルトの名無しさんNGNG
>>392
その後なんか連絡あった?
0394デフォルトの名無しさんNGNG
>>393
無いよ。
mailじゃダメなのかな?
どうしよう・・・
0395デフォルトの名無しさんNGNG
>>394
いや、俺はアメリカへFAXしたけれど、やっぱり連絡ない。
もう少し待ってればいいのかな
0396デフォルトの名無しさんNGNG
8.1インストールしたら起動しなくなった
どう対処していいのか分からず、OSからの再インストール・・・鬱だ
0397マジNGNG
 722 :Kusakabe Youichi :01/12/04 18:06
In article >>710, 710 仕様書無しさん wrote:
> > そんな変なことを言うひともいるんですね。
> そうですよね、ふつー上京は東京に行くことだし、

はつみみです。

 730 :仕様書無しさん :01/12/04 18:13
>>722
じょうきょう【上京】
地方から都へ行くこと。現在は,東京へ行くこと。
(新辞林 by 三省堂 @Yahoo! DICTIONARIES)
とありますよ。

「地方から都へ行くこと。」「東京へ行くこと。」のどちらが「普通」かと言
えば現在では後者といっておかしくないでしょう?

 744 :スバリ回答 :01/12/04 18:20
民明書房国語辞典
じょうきょう【上京】 [名][自サ]地方から都に出ること。京都へ出ること。

やはり、日下部氏は正しかった。

 752 :Kusakabe Youichi :01/12/04 18:27
In article >>741, 741 困った wrote:

> 清水国語辞典
> じょうきょう【上京】 ジヤウキヤウ[名][自サ]地方から都に出ること‥豕・惱个襪海函
>
> 誤植ですね。

民明書房国語辞典 じょうきょう【上京】 [名][自サ]地方から都に出ること。京都へ出ること。
0398396NGNG
8.0a入れても起動しなくなった・・・鬱だ
8.0にしてみるか・・・
0399デフォルトの名無しさんNGNG
>>386

え”、日本マイクロソフトでもよかったの?
レッドモンドまでエアメールで送ってしまったよ。。。
例のタンソ菌騒ぎで多分相当遅れるって郵便局で脅されたよ。。。
0400デフォルトの名無しさんNGNG
まーだーへんじがーなーいーよー
0401デフォルトの名無しさんNGNG
こないだイギリスで見たよ。
0402401NGNG
ってこんなギャグ誰が分かるんだよ。激しく後悔。
0403デフォルトの名無しさんNGNG
DirectX8ってデフォルトでは入っていないので、
DirectX7とVC++でゲーム作っているのですが、
メタセコイヤがDirectX8のラインタイムが無いと、一部動かないので
DirectX8のランタイムだけ入れたいと思います。
というわけで、DirectX7SDK+DirectX8ラインタイムっていう
組み合わせは吉でしょうか?凶でしょうか?
0404デフォルトの名無しさんNGNG
凶っぽいけれど、大丈夫かもしれない。
俺は8.1ランタイムで8.0aSDK開発してるよん。
いまのところ問題はない。
0405デフォルトの名無しさんNGNG
>>403
問題ナシ。

DirectX8SDK入れて、7のインターフェース使う場合とかは#defineが必要になる。
0406デフォルトの名無しさんNGNG
16ビット画面のフェードアウトがどうもうまく逝かんです
640*480でMMX233でMMXつかっても10fpsぐらいしか逝かんです
RGB各色ごとに処理してるから遅いと思われるのですが
なにかいいほうほうはないもんですか
0407デフォルトの名無しさんNGNG
>>406
自前描画ならそんなもんです。MMX233程度なら、60FPS出せとか誰も言いませんよ。
環境が許すなら、素直にハードウェア使いましょうや。
0408デフォルトの名無しさんNGNG
DirectMusic使ったことある人います?
設計おかしくないですか?
0409デフォルトの名無しさんNGNG
>>407

いや、10fpsはさすがに遅すぎだろ。MMX使ってるのに。
20〜25fpsは出るよ、がんばれば。
つか、フェードアウトなら60fpsも可能かも?
漏れ作ったのはクロスフェードで20fps以上出てたから。

>>406
その部分のコード見せてみ
ロジックそのものが悪いか、
パイプラインを考慮してないだけだと思う。
0410デフォルトの名無しさんNGNG
Xファイルで読み込んだモデルを描画する際、
そのポリゴン(プリミティブ?三角形の断片)数を
取得する関数ってありますか?
0411デフォルトの名無しさんNGNG
>>407
DirectX8の機能にフェードアウトできるようなものはないんですか??
フェードアウトって自前でないと実現できないんでしょうか。
0412デフォルトの名無しさんNGNG
画面全体に半透明ポリゴン重ねなさい。
0413406NGNG
movq mm0,[esi]
movq mm1,mm0
movq mm2,mm0

pand mm0,mm3// 赤マスク
psrlw mm0,[Rshift64] //赤を右にもってく
psubusw mm0,mm6//減算
psllw mm0,[Rshift64]//赤のビット位置戻し

pand mm1,mm4
psrlw mm1,[Gshift64]
psubusw mm1,mm7 //565を考慮して差を変化
psllw mm1,[Gshift64]

pand mm2,mm5
psubusw mm2,mm6

por mm0,mm1
por mm0,mm2
movq [esi],mm0

パイプラインなんて考えてないっす
つーかフェードアウトの意味違ってたらごめんなさい
画面が暗くなってくやつだよね?
0414デフォルトの名無しさんNGNG
>>408
結構使ったけど、何がおかしいですか?
私は合理的な設計に思えるけど。
0415デフォルトの名無しさんNGNG
>>406(>>413)
ttp://www.geocities.co.jp/SiliconValley-PaloAlto/5989/trans01.html
ここ,参考になりますか?
0416デフォルトの名無しさんNGNG
>>413
ふつーフェードアウトは乗算でやるけど、まぁ減算でもいいか。
413のソースをちょっと改良すると、
movq mm0,[esi]
movq mm1,mm0

pand mm0,mm3// 赤青マスク
psubusb mm0,mm6//赤と青を減算

pand mm1,mm4//緑マスク
psubusw mm1,mm7 //緑だけ減算

por mm0,mm1
movq [esi],mm0
こんなとこか?試してないから間違ってたらスマソ。

とりあえず、406はIntelの最適化マニュアルでも読んで、最適化の方針くらいは
覚えた方がいいかと。下手なアセンブラはCよりも遅いよ。
例えばレジスタに書き込む操作をした直後に読み出そうとすると遅くなる。
↑のソースの場合だと、pandの直後にpsubusbやpsubuswはまずいかと。
pand mm0,mm3// 赤青マスク
pand mm1,mm4//緑マスク
psubusb mm0,mm6//赤と青を減算
psubusw mm1,mm7 //緑だけ減算
こうした方がいい。

>>415
そこ見てみたけど、わざわざ色分けして解説するほど良い物じゃないなぁ。
教科書通りというか、406にちょっと毛が生えた程度のレベル。
0417406NGNG
>416
最適化マニュアルなんていいっすね
早速見させてもらいます

ちなみに赤と青を同時演算は考えたんだけど
青成分が0で赤成分が残って減算すると赤から借りが発生して
青成分がMAXになってしまうんですよ

乗算でやるともっと遅くなる気がするんですがどうなんでしょ?
0418416NGNG
>>417
赤青のところはpsubusbになっているのに注目
0419406NGNG
>>418
書き間違えだと思った
ためしたら成功しました
参考になります

ついでに質問なんですがメモリをロックするとき読みこみと書き込みを
別々にロックすると2倍くらい速度出るんだけど
それもメモリアクセスで読み書き両方すると遅くなるってやつ?
0420デフォルトの名無しさんNGNG
direct musicとか覚えるのめんどくさいから
SDKのクラスそのまま使うのってあり?
0421モハメドNGNG
あり。
■ このスレッドは過去ログ倉庫に格納されています