■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

鬱だ氏のう DirectX (Part 4)
501 名前:名前は開発中のものです。 :02/05/23 00:27 ID:???
>>500
サーフェスをLockして自分で計算して結果を書きこむ

502 名前:498 :02/05/23 00:39 ID:???
>>501
Bltにそういう機能はないのですか・・・
自作関数作でも作ってみます。
ありがとうございました。

503 名前:名前は開発中のものです。 :02/05/23 07:15 ID:CX9eFXSY
and程度なら、DCゲットしてBitBltでフラグ指定すればいいのでは?

504 名前:名前は開発中のものです。 :02/05/23 10:28 ID:???
>>503
絵の半透明処理とも書いてあるからBitBltでは無理ではないでしょうか。

505 名前:名前は開発中のものです。 :02/05/23 10:58 ID:???
and演算を行うbitbltなんて無い

506 名前:名前は開発中のものです。 :02/05/23 10:58 ID:???
bitbltじゃなくて、半透明だ

507 名前:名前は開発中のものです。 :02/05/23 13:35 ID:???
>転送時に転送先サーファイスにANDしながら転送するには
ANDらしいが?

508 名前:498 :02/05/23 13:36 ID:???
503を見てとりあえずBitBltでやってみたんですが、
下になる絵の色がおかしくなるのでダメみたいです。
これやるには下の絵の色+重ねる絵の色をやらないといけないみたいですね。
これからバイトに行かないといけないんでバイト中にちょっと考えてみます。
半透明処理が無いのなら結局501の言うようになると思いますが・・・

509 名前:名前は開発中のものです。 :02/05/23 13:49 ID:???
半透明じゃなくて色抜き転送したいんじゃないの?
マスクパターンを作ってAND/ORで転送じゃなかった?

510 名前:名前は開発中のものです。 :02/05/23 16:28 ID:???
何がやりたいのかはっきり言えーーーーーー!!!!

511 名前:名前は開発中のものです。 :02/05/23 18:31 ID:???
言うのならできるけど文章にはできん

512 名前:名前は開発中のものです。 :02/05/23 18:32 ID:???
結 論
W i n G を 使 え

513 名前:名前は開発中のものです。 :02/05/23 18:52 ID:???
結 論
W i n G L を 使 え

514 名前:498 :02/05/23 23:18 ID:EcEbM6h2
はっきり言わなかった為混乱させてしまいすみません。
初めに透過処理とか言ったのがいけなかったみたいです。
初めはANDで半透明処理が出来るのでは・・・と思っていたので。
ANDではそれっぽく見えるけど下の絵がはっきりわからなくなります。
要は書き込む絵を半透明にして下の絵と重ねたいと言う事なので、
色抜き転送ではありません。

515 名前:498 :02/05/23 23:20 ID:EcEbM6h2
で、ちょっと組んでみたんですが・・・

void CMyApp::TranslucentBlt( LPDIRECTDRAWSURFACE lpS_Point,int PointX1,int PointY1,int PointX2,intPointY2,LPDIRECTDRAWSURFACE lpS_Source,int SourceX,int SourceY )
{
DDSURFACEDESC ddsd1,ddsd2;
short *lpsSource = NULL;
short *lpsPoint = NULL;

ZeroMemory( &ddsd1,sizeof( DDSURFACEDESC ) );
ZeroMemory( &ddsd1,sizeof( DDSURFACEDESC ) );
ddsd1.dwSize = sizeof( ddsd1 );
ddsd1.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
ddsd1.dwWidth = WinXMax;
ddsd1.dwHeight = WinYMax;
ddsd2.dwSize = sizeof( ddsd2 );
ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
ddsd2.dwWidth = WinXMax;
ddsd2.dwHeight = WinYMax;

lpS_Source -> Lock( NULL,&ddsd1,DDLOCK_WAIT,NULL );
lpS_Point -> Lock( NULL,&ddsd2,DDLOCK_WAIT,NULL );
lpsSource = ( short * )ddsd1.lpSurface;
lpsPoint = ( short * )ddsd2.lpSurface;
lpsSource += SourceX + ( SourceY * WinXMax );
lpsPoint += PointX1 + ( PointY1 * WinXMax );

516 名前:名前は開発中のものです。 :02/05/23 23:20 ID:???
厨な質問で申し訳ないが、8.0のSkinnedMeshサンプルが理解し切れない…。

他に、スキンメッシュのサンプルコードや解説してる本があったら教えてくだされ。

517 名前:498 :02/05/23 23:21 ID:EcEbM6h2
for( int i = 0 ; i < ( PointY2 - PointY1 ) ; i++ )
{
for( int j = 0 ; j < ( PointX2 - PointX1 ) ; j++,lpsSource++,lpsPoint++ )
{
*lpsPoint = ( *lpsPoint + *lpsSource ) / 2;
}
lpsSource += ( WinXMax - PointX2 ) + PointX1;
lpsPoint += ( WinXMax - PointX2 ) + PointX1;
}
lpS_Point -> Unlock( 0 );
lpS_Source -> Unlock( 0 );
}
これだと色がおかしくなるので、一度色を要素別に分け、
それらを足してから2で割り、色データに変換しないといけないような気がします。
しかし、色データをRGBの要素別に分けるのにはどうすればいいのでしょうか?
その辺の解説をしていただけると助かります。

518 名前:498 :02/05/23 23:22 ID:EcEbM6h2
あ”−なんだか変になってる

519 名前:名前は開発中のものです。 :02/05/24 02:30 ID:rNrOyBCE
>>516
ない、多分。
はっきり言って
SDKのSkinnedMeshサンプルは
ソースが汚い。
俺も読む気が失せたが、気合で読んだ。

520 名前:名前は開発中のものです。 :02/05/24 02:49 ID:???
なんかSkinnedMeshサンプルのスキニングウエイトの扱いって変なん
だよなぁ。Maxからコンバートしてるんだけど、どう考えても有り得
ない曲がり方しやんの。どっかでウエイト数値が補正されてると思う
んだけど、チンプンカンプン。
 ちょいとわかる方いましたら教授頂きたいです。

521 名前:名前は開発中のものです。 :02/05/24 06:50 ID:???
>>517
この手の自力半透明は一昔前に流行ったから、検索すると参考ページが結構出てくるぞ

522 名前:名前は開発中のものです。 :02/05/24 08:44 ID:???
結 論
W i n G を 使 え

523 名前:名前は開発中のものです。 :02/05/24 08:53 ID:???
今時WinGを使えとは言わんが、VRAMのSurfaceをLockするくらいなら
DIBの方がラクだし速度も出るぞ。

524 名前:名前は開発中のものです。 :02/05/24 11:47 ID:???
>>520
いや俺の場合は大丈夫だけど。
自作クラスでアニメーションさせてるけど
tiny.x以外の2種類のXFILEも普通に動いてるよ。

525 名前:516 :02/05/24 13:24 ID:???
レス感謝。

やはり、このソースを解読するしかないということか…。
とりあえずmload.cppとmdraw.cppを切り離してクラス化し、
自作プログラムの中にでも組み込んで見ます。

526 名前:名前は開発中のものです。 :02/05/24 17:39 ID:sqwn/yLQ
DirectX8にて256以上のサイズのテクスチャーを読み込みたいのですが、
何かうまい方法はないでしょうか?

527 名前:y2kbest@k9.dion.ne.jp :02/05/24 17:56 ID:???

「高性能ビデオスタビライザー」です↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA

店頭販売価格は、13900 円なんですが、
今回だけ、破格の 7700 円に設定して
おります。

購入希望の方は、メールを下さい。

不安な方は、落札をして頂いても
構いません。

528 名前:名前は開発中のものです。 :02/05/24 18:36 ID:???
>>526
普通に読み込めてるんだけど?

529 名前:名前は開発中のものです。 :02/05/24 18:52 ID:???
>>526
3Dfx?

530 名前:名前は開発中のものです。 :02/05/24 19:02 ID:???
ウチのSPECTRAくんは2048x2048までのテクスチャが使えると言ってきてます

531 名前:名前は開発中のものです。 :02/05/24 23:03 ID:???
>>526
マジレス。
ビデオカード変えれ。
数世代前のうちのTNT2ですら2048x2048まで扱える。

Voodoo?ナニソレ。オイシイ?

532 名前:名前は開発中のものです。 :02/05/25 00:58 ID:???
TNT2?ナニソレ。オイシイ?

533 名前:名前は開発中のものです。 :02/05/25 01:15 ID:???
>>524
 んー、微妙に意図するスキニング結果が得られないのよねぇ。間接とか
きちゃなく曲がるし。四肢の付け根はガタガタになるやがるし。MAX側の
スキキングがそのまま再現出来る訳じゃないのかなー?

534 名前:名前は開発中のものです。 :02/05/25 06:48 ID:???
ふつうに読め
■■■終了■■■

535 名前:516 :02/05/25 10:53 ID:???
>>533
それ、もしかしてtiny.xがゾンビ化して表示されるという現象デスカ?
(全身の骨をプレス機で粉々に砕いたかの如き姿で表示される)
だったら今の漏れと同じ状況(藁

skinnedmeshサンプルをそのまま流用しようとしてるんだけど、
その中のSetProjectionMatrixの使い方が怪しいと睨んでる。

536 名前:705 :02/05/25 13:30 ID:???
よく見たら、そんな基本レベルの問題じゃないね(w
スマンす。

537 名前:名前は開発中のものです。 :02/05/25 17:42 ID:???
当方DirectX8.1にてRPGの見下ろし型のスクロールを
やりたいのですが、クリッピングが上手くいきません。
画面から少しでもはみ出すと表示されないようです。

何か良い方法ありますか?

538 名前:名前は開発中のものです。 :02/05/25 17:46 ID:???
DX9beta1きたね

539 名前:名前は開発中のものです。 :02/05/25 18:42 ID:???
もうDX9か。GeForce2ダメかなぁ
SPECTRA高いし、どうするか。

540 名前:537 :02/05/25 18:52 ID:???
>>537
http://www.cong.ac.jp/~maeda/directx8/directx8.htm
ここを参考に2DのRPGを作ってます。

541 名前:名前は開発中のものです。 :02/05/25 19:08 ID:???
ぶっちゃけた話DX9って 何が売り?
シェーダーとか現状じゃ扱いづらいので、あんまいらん

542 名前:名前は開発中のものです。 :02/05/25 23:16 ID:???
>>540
>DirectX を使うと Windows のシステムに邪魔されることなく、グラフィックボードや入力機器に 直接アクセスすることが可能になり、
見てみたが、これを筆頭に間違いだらけだぞ

543 名前:名前は開発中のものです。 :02/05/25 23:54 ID:???
>>541
シェーダーのC風高級言語や、VSに統合されるデバッガとかがあるよ。
Vertex Shaderは条件分岐やループも使えるようになって、かなりマシになるかも。
あと、何気に2D機能が復活したっぽいのが嬉しい(詳細不明)

544 名前:名前は開発中のものです。 :02/05/26 01:46 ID:XI5aVJYk
DirectX9βテスタの皆様、やっぱりEULAの関係上、
ここでDX9スレとかは立て無いの?
まだ立って無いみたいだけど。
公式のニュース鯖も、まだ全然活動してないみたいだし。

545 名前:名前は開発中のものです。 :02/05/26 03:24 ID:???
スレ立てる必要あるの?

546 名前:537 :02/05/26 11:49 ID:???
>見てみたが、これを筆頭に間違いだらけだぞ
まじですかヽ(`Д´)ノ ウワァァン
画面一杯(例えば640*480全体)に表示してスクロールするのは上手くいかなかったので
画面の一部(例えば320*240)に表示してそのまわに枠をつけることでなんとか
妥協しました。

ご指摘ありがとうございした。他に良さそうなDirectX8の入門ページ探してみます。

547 名前:名前は開発中のものです。 :02/05/26 12:32 ID:???
 技術を盗みたいシナは、あまり無茶はできません。苛められたら撤退すりゃいいだけのこと。

そうか?ロックして取得したアドレスで内容書き変えれるだから 直接アクセス という表現をしてもいいんじゃないか?
チップのレジスタに直で触れるわけではないが

548 名前:名前は開発中のものです。 :02/05/26 12:33 ID:???
あぁ 変なコピペしちゃった。

>DirectX を使うと Windows のシステムに邪魔されることなく、グラフィックボードや入力機器に 直接アクセスすることが可能になり、



549 名前:名前は開発中のものです。 :02/05/27 04:52 ID:???
>>547
実はものによってはUnlockの時点で転送してるので本当に直接アクセス
してるわけではない罠

550 名前:名前は開発中のものです。 :02/05/27 12:51 ID:???
>>544
>ここでDX9スレとかは立て無いの?

何故すぐに新スレを立てたがるのか、小一時間問い詰めたい。

551 名前:名前は開発中のものです。 :02/05/27 15:35 ID:???
>>549
そんな1Byte1Byteいちいちアクセスしてどうなる。
DirectXのいう直接アクセスというのは、
直アクセス並に柔軟な扱いが可能になるということであり
Windowsの厚いレイヤーを通さずにすむという意味も兼ねている。
>>540のリンク先もそんなにおかしなことを言っている訳でもない。

552 名前:549 :02/05/27 18:40 ID:???
>>551
いや、別にDirectXがどうとか540のリンク先がどうとか言う気はなくて
たんに547にツッコミを入れただけだが。そのツッコミは547にしてよ。

ところで537は画面全体をCopyRectsか何かで転送してるの?

553 名前:名前は開発中のものです。 :02/05/27 18:44 ID:hVSF2hTA
>実はものによってはUnlockの時点で転送してるので本当に直接アクセス

ものって具体的にはなに?
どうやってポインタの先書き換えを記録してんの?

554 名前:名前は開発中のものです。 :02/05/27 19:20 ID:???
>>553
Lock した時点で主記憶にコピーを作って、Unlock で主記憶から VRAM にコピー
なのでは? 知らんけど。

555 名前:名前は開発中のものです。 :02/05/27 19:29 ID:hVSF2hTA
あーそーなのかーLock重いのは、タイミング待ちかなにかと思ったら
コピー時間なわけね。つーことはデカイバッファは比例して重いのか?

VGAとUXGAで6倍程違うが、それだとちょっと差がありすぎで困りそうだね
サーフェイス系は違うのかな

556 名前:名前は開発中のものです。 :02/05/27 19:38 ID:???
>>555
そういう物もありうる(あるの?)って話だろ。
実際にウチだとLock先のポインタにさわるの自体がえらく遅いんで、
Lockで帰ってきたのはメモリマッピングされたVRAMのアドレスだと思われ

557 名前:nyamo :02/05/27 23:25 ID:0dHGsNog
 DX7を使っています。
 Bltでサーフェイスをコピーするとき、srcRectとdstRectの大きさが
違っていると自動でリサイズしてくれますが、ウチのビデオカード(GeForce256
16ビットカラーモード)だとバイリニア法っぽくボンヤリ拡大してくれます。
 ニアレストネイバー法でカチカチに拡大して欲しいのですが、Lockして
1ピクセルずつちまちまコピーするプログラムを書くのが常套でしょうか。
なんかオプション渡せばやってくれそうな気がします。ご存知の方
おしえてくだちぃ

558 名前:名前は開発中のものです。 :02/05/27 23:30 ID:???
遅くなるけどシステムメモリにサーフェス確保しる。

559 名前:名前は開発中のものです。 :02/05/27 23:30 ID:???
厨質問で申し訳ないが、DX7のDirectDrawのWindowモードで画面左側にはみ出すようにBlt転送すると、
戻り値はDD_OKで返ってくるのに画面に反映されていないのは、クリッパーの仕様?
それくらいは自分で転送元/転送先共に設定してやれって事なのかな?
ちなみに、画面右側がはみ出ていてもきちんと反映されている。
あ、転送先Windowのクライアント領域の座標は取得してます。

560 名前:名前は開発中のものです。 :02/05/27 23:33 ID:???
MSのヘルプだかFAQでそういう話を見たことはあるな。
DirectX登場以前のチップだとメモリ配置がDirectDrawの想定しているのと
違う可能性があるからそういうチップならそういう実装もあったんじゃない?
16色の頃はプレーンごとに分かれてる方が普通だったじゃん。
今でもひょっとすると一部のOpenGL向けのチップはそういう特殊な実装をして
いるかもね。

ところで最近のDirectXのヘルプには、Lockの説明にバンクメモリ云々の注意
事項が書いてないね。もうそんなチップ無いから無視していいってこと?

561 名前:nyamo :02/05/27 23:57 ID:0dHGsNog
>558
早速試すでつ

562 名前:nyamo :02/05/28 00:12 ID:U/sOJx5k
>>558
できたよ!ほんとだ!dstサーフェイスをシステムメモリに配置したところ
ニアレストネイバーのカチカチ拡大になりました。そうかビデオカード使わ
なきゃいいんだ。。。

563 名前:名前は開発中のものです。 :02/05/28 01:25 ID:???
遅いという罠

564 名前:名前は開発中のものです。 :02/05/28 01:55 ID:???
それが嫌で某エミュではDirect3D化しました

565 名前:名前は開発中のものです。 :02/05/28 02:17 ID:???
それ,起動する時に解像度が一瞬変わるのやめてホスィねw

566 名前:名前は開発中のものです。 :02/05/28 04:27 ID:???
それってどれのこと?

567 名前:名前は開発中のものです。 :02/05/28 04:33 ID:bqsf0q/I
今時DDRAW使うなよといいたい

568 名前:名前は開発中のものです。 :02/05/28 06:13 ID:???
>>567
じゃあ何を使えと?DGraphicsでも同じだぜ?

569 名前:名前は開発中のものです。 :02/05/28 06:20 ID:???
2dもD3dつかえと

570 名前:名前は開発中のものです。 :02/05/28 07:17 ID:???
>569
低スペックマシンでうごかねぇじゃん。
アフォか。

571 名前:名前は開発中のものです。 :02/05/28 08:50 ID:???
ん?3Dにしてテクスチャのフィルターカットで描画するって事?

572 名前:名前は開発中のものです。 :02/05/28 08:51 ID:sdv9PJPc
DX8のID3DXSprite::Drawで、スケール設定してもビデオカードによっては機能しない
のがあって萎え。
色々な環境で調べた方が良いね・・・

573 名前:名前は開発中のものです。 :02/05/28 08:52 ID:???
低スペックを相手にしてるエログラマはいらないよ。
もう氏んだら

574 名前:名前は開発中のものです。 :02/05/28 09:49 ID:???
最近はノートPCのビデオチップも少しずつまともになりつつある罠

575 名前:名前は開発中のものです。 :02/05/28 09:55 ID:???
D3Dで2Dやるとラスターエフェクトとかが使えない罠

576 名前:名前は開発中のものです。 :02/05/28 10:34 ID:???
時代はピクセルシェーダという罠

577 名前:名前は開発中のものです。 :02/05/28 10:35 ID:???
pixelShader 対応は流石にまだ少ない罠

578 名前:名前は開発中のものです。 :02/05/28 10:42 ID:???
PixelShaderに対応しているビデオカードってどれくらいあるの?
Geforce3、4(not MX)、Radeon8500、他には?

579 名前:名前は開発中のものです。 :02/05/28 16:54 ID:???
むむ、DX9でGetDC復活してんのか
XBOXにwindowsが載る日は近いのかー?(適当。そうなの?

580 名前:名前は開発中のものです。 :02/05/28 17:48 ID:???
>>579
もう組込用Win2kが乗ってるけど

581 名前:名前は開発中のものです。 :02/05/28 17:56 ID:???
カーネルでなくて、window表示周り つーことを察してください

582 名前:名前は開発中のものです。 :02/05/28 21:15 ID:PCwwkiQQ
世の中、超高価なビデオカードを頻繁に取り替えては
宝の持ち腐れ状態にしている人が大勢いるのに
俺にはPixelShader実行環境なんて永久に手が届かない罠。

583 名前:名前は開発中のものです。 :02/05/28 23:57 ID:???
>>582
そんなあなたにWinG。
もう環境に振りまわされないで済みますよ

584 名前:名前は開発中のものです。 :02/05/29 00:26 ID:???
>>582
そんなあなたにリファレンスラスタライザ。
もう時代に取り残されないで済みますよ

585 名前:名前は開発中のものです。 :02/05/29 08:41 ID:???
>>583-584=フェードアウター

586 名前:名前は開発中のものです。 :02/05/29 12:06 ID:???
MacDXどうよ
http://www.coderus.com/

587 名前:名前は開発中のものです。 :02/05/29 17:33 ID:5A.rxik2
だむぇだぁDirectInput教えてくだされ。
ジョイパッドの軸入力をバッファリングモードで取得してるんだけど
ずっと十字キーを押してるのに、押した瞬間の1回しか反映されず
それ以降は0になってしまいます。
軸の範囲が-100〜100だとすると
100、0、0、0 みたいな感じです。
100、100、100、100 という風にしたいんです。
サンプルと見比べてみたんですが、設定し残しは特に見当たらない感じです。

588 名前:名前は開発中のものです。 :02/05/29 18:18 ID:WglpNvG.
バッファに収めときゃいい

589 名前:587 :02/05/29 19:27 ID:SjTOp7to
>>588
解決しますた。
バッファの使い方がよくわかってませんでした。
アクションマップは便利だけど、バッファがうざいですね。
ありがとうございました。

590 名前:名前は開発中のものです。 :02/05/29 23:43 ID:/Fl9zVk.
DX7 で作るか DX8 で作るか悩んでます。
より多くの人に見てもらうには、やはり DX7 でしょうか?

作ろうとしているのは、簡単なポリゴンのデモです。

591 名前:名前は開発中のものです。 :02/05/29 23:45 ID:???


592 名前:名前は開発中のものです。 :02/05/29 23:57 ID:???
>>590
別にDirect3Dを使うんなら
7でも8でも差は無いでしょ。

593 名前:名前は開発中のものです。 :02/05/30 01:00 ID:???
>>590
ころころ仕様が変わるDirectXは無視してOpenGLを使いなさい

594 名前:名前は開発中のものです。 :02/05/30 01:06 ID:???
機種依存しまくりのOpenGLなんて使い物にならん

595 名前:名前は開発中のものです。 :02/05/30 02:19 ID:3VHBqsV2
D3DXのC++拡張機能は便利だ。
D3Dは別に使わなくていいけど、
D3DXQUATERNIONとかは使った方がいい。

596 名前:名前は開発中のものです。 :02/05/30 02:27 ID:???
よく593みたいな事言う人いるけど、新しいバージョンが出たら古いのは
使えなくなると思ってるのかな?

597 名前:名前は開発中のものです。 :02/05/30 03:03 ID:???
>>595
おまえひねくれ者だな。
D3DXを使ってラスタライザは自前かよ
普通自前でラスタライザを書くならfloatじゃなくてdoubleを使うから
基本floatのD3DXは使い物にならん

598 名前:名前は開発中のものです。 :02/05/30 04:32 ID:???
DDraw+自作3dエンジンでえーんでないの
簡単なデモなら

599 名前:名前は開発中のものです。 :02/05/30 04:36 ID:OepbMKuk
>>597
違う違う、別に強制はしないよという意味。
座標系の違いがあったかどうかは忘れたけど
OpenGL+D3DXでもいいんじゃないのみたいな。

>普通自前でラスタライザを書くならfloatじゃなくてdoubleを使うから
これはちょっとわからん。精度の問題?
floatで問題になるケースがあるとは思えないけど。

600 名前:名前は開発中のものです。 :02/05/30 08:15 ID:???
OpenGLの仕様は変わらないというけど
ハードが変わるとコードを変えなきゃなんないから(エクステンション等)
結局DXと変わらないという罠

601 名前:名前は開発中のものです。 :02/05/30 10:27 ID:???
OpenGLはもうすぐ仕様が変わりそうという罠

602 名前:名前は開発中のものです。 :02/05/30 11:38 ID:???
doubleでラスタライザ書くなんて人は初めて見た。レイトレ?
固定小数点使う方が一般的だと思うけど。

>>600
まだ統一規格のあるDirect3Dの方がマシかも。

603 名前:名前は開発中のものです。 :02/05/30 14:26 ID:???
貧乏な漏れのノートPCはレガーシなんで
8はまともに動かん、で7キボンヌ。

604 名前:名前は開発中のものです。 :02/05/30 14:59 ID:???
なるほどー、特にノートだと、最新のドライバが提供されなかったりとかありそうだね。デスクトップでも、いろんなチップメーカーが消えていったもんなぁ・・・・

605 名前:259 :02/05/30 17:04 ID:???
実際、DX8って大半のノートじゃ動かんだろ。
なのに、なんでDX8用のソフトを作ろうとするわけ?

コピペ

606 名前:名前は開発中のものです。 :02/05/30 17:16 ID:???
>>605
Direct3D7.0が動く環境ならDirect3D8.0も当然動く。
D3Dを使う分には7を選ぶメリットはない。GetDCぐらい?

607 名前:名前は開発中のものです。 :02/05/30 17:22 ID:???
そもそも3Dやるのにノートを眼中に入れることが間違い。

自虐的なノート使いの戯言だが。

608 名前:名前は開発中のものです。 :02/05/30 17:32 ID:???
PC9801VX対応。これ最強。

609 名前:名前は開発中のものです。 :02/05/30 18:27 ID:???
>>608
RXの方が名機だけど?

610 名前:名前は開発中のものです。 :02/05/30 18:29 ID:???
>>609
608じゃないが、98ソフトといえばVX対応だろ〜(笑

611 名前:名前は開発中のものです。 :02/05/30 19:14 ID:???
ノーマル98と言えば高嶺の花
PC-9821An/C9Tしか無いだろ。

612 名前:516 :02/05/30 23:15 ID:???
スキンメッシュって、HAL T&L(D3DCREATE_HARDWARE_VERTEXPROCESSING)を使っては
いけないんでしょうか?
skinnedmeshサンプルのcreatedevice関数で、ココいじるとモデルが崩壊
するようなんですが(´Д`;

私の勘違いでなければ、VGAの機能の大半が役に立たなくなってしまうのでは…。
回避策があるようでしたら、ヒントだけでもいいので教えてくださいませ。

613 名前:名前は開発中のものです。 :02/05/30 23:17 ID:???
>>606
フィードバックエフェクトやろうとすると、8はBltないのが痛いよ。

614 名前:名前は開発中のものです。 :02/05/31 00:21 ID:???
CopyRectsがあるじゃん

615 名前:名前は開発中のものです。 :02/05/31 01:27 ID:???
>>612
それはモデルのウエイト数が、
Direct3DHALのジオメトリブレンディング能力の
キャパシティを超えている為だと思う。
バーテックスブレンドなら、ひとつの面にかかるウエイト数。
インデックスブレンドなら、ひとつの頂点にかかるウエイト数になる。
D3D8CAPS見てみ。
ソフトウェアTLの場合は最大で4つ。
ハードウェアTLの場合はGPUによる。
GeForce256ならバーテックスブレンドが2つで
インデックスブレンドが0、
GeForce2GTS以降なら多分バーテックスブレンドが4つで
インデックスブレンドが0になる。
それ以上のウエイトを使うようなモデルだと、
ID3DXSkinMeshの変換メソッドが失敗するか、表示が崩れる。

616 名前:名前は開発中のものです。 :02/05/31 01:30 ID:???
つーか何でSkinnedMeshサンプルは450FPS出るのに
自分のプログラムだと300FPS以下しか出ないんだ・・。
単純にドロープリミテブ繰り返してるだけなのに。
むかつくぜ。

617 名前:名前は開発中のものです。 :02/05/31 02:08 ID:6a0xSIHk
環境変えたら LNK1106 エラーが出てリンク通んねぇ・・・
鬱・・・

618 名前:名前は開発中のものです。 :02/05/31 03:44 ID:???
>>614
Stretchできないから使い物にならない>CopyRects
IDirect3DDevice9::StretchRectはちゃんとハードウェアで実行してくれるのかな?

619 名前:名前は開発中のものです。 :02/05/31 06:09 ID:???
スキンメッシュいじってる人アニメーションどうやって作ってるの?
やっぱLW7とかmax4なんかな。

620 名前:516 :02/05/31 09:56 ID:???
>>615
超感謝。ありがとうございます。

tiny.xそのまま再現させてたんで、ウェイトかかりまくってると思われるので。

621 名前:名前は開発中のものです。 :02/05/31 10:38 ID:???
つーか、おまえら
DX7とDX8の違いをおさえてないだろ。
両者のメリットとデメリットを言ってみ。

622 名前:名前は開発中のものです。 :02/05/31 11:03 ID:???
まず貴方様の素晴らしい知識をご開陳いただきたく。

623 名前:名前は開発中のものです。 :02/05/31 12:15 ID:???
skinMeshのサンプルって、ハードのブレンド数の上限にあわせて、分割表示してなかったけ?

624 名前:615 :02/05/31 15:43 ID:???
>>623
いや、1頂点にかかるウエイト数の問題だから
メッシュを分割してどうにかなるもんでもない。
tiny.xは、1頂点あたり4ウエイトのモデルだがそれを
2ウエイトのモデルに変換しょうとしても出来ない。
ID3DXSkinMeshの変換は超高速だが、あんまり親切じゃない。

625 名前:名前は開発中のものです。 :02/05/31 15:45 ID:???
thank you

626 名前:名前は開発中のものです。 :02/05/31 21:40 ID:gCpEEKqg
草原ってどうやって表現しる?

627 名前:名前は開発中のものです。 :02/05/31 22:38 ID:???
1年くらい前のMSDNマガジンで頂点シェーダの
スキンメッシュやってた記憶があるが、
どんなのだったっけ。

628 名前:名前は開発中のものです。 :02/05/31 22:43 ID:???
>>627
全然参考にならなかったような
sdk sampleの方がマシでは

629 名前:名前は開発中のものです。 :02/05/31 23:27 ID:???
頂点シェーダを使う場合、頂点ストリームを複数入れるようにして
1本は普通のFVF、残りはウエイトの塊っていうふうにすれば
事実上ウエイトの制限はなくなるよねえ。
つーか、MAXでは1頂点につき16x256Bのデータが使えるので
1頂点つきそれぞれ別々のライト10個使用なんてのも出来るね。
速度を無視すれば何でもありってこと?

630 名前:名前は開発中のものです。 :02/06/02 22:24 ID:???
Direct3Dで、一部ポリゴンを平行投影しようと思っているのですが、
投影行列を平行に指定した途端、ちゃんと描画されなくなってしまいます。

w 0 0 0
0 h 0 0
0 0 Q 1
0 0-QZ0

が透視投影行列で

w 0 0 0
0 h 0 0
0 0 Q 0
0 0-QZ0

が平行投影行列で良いんですよね?3行4列目の数値を0に下途端
何も出なくなってしまうのですが、D3Dで平行投影は可能なのですか?

631 名前:名前は開発中のものです。 :02/06/02 22:24 ID:YU8oew0w
age忘れました。すみません。

632 名前:名前は開発中のものです。 :02/06/02 22:31 ID:???
w 0 0 0
0 h 0 0
0 - 1 0
0 0 -Q 0

633 名前:名前は開発中のものです。 :02/06/03 04:48 ID:???
>>630
もう少しだけ、もう少しだけ頭を使えばいい。

634 名前:名前は開発中のものです。 :02/06/03 13:13 ID:???
>>630
ベクトルのw成分を0にしちゃいかんよ。

635 名前:名前は開発中のものです。 :02/06/04 21:55 ID:QedpiA6w
DirectX8.0a使ってます。

D3DXCreateSpriteやlD3DXSprite::Drawを使ってスプライトを行うとき、
D3DXCreateTextureFromFileなどを使い使用する画像ファイルを読み込むわけですが、
外部に配布するゲームなどで、ファイルの中身を簡単には見られたくない場合、
D3DXCreateTextureFromFileじゃダメですよね?
画像ファイルを暗号化して、それを読み込めるようにして
…って理屈はわかるんだけれども、こんな場合どうすりゃいいんだろう…。

プログラム暦浅いのでこんなんでスマソ。

636 名前:名前は開発中のものです。 :02/06/04 21:57 ID:???
>>635
一番目の方法としてID3DXSpriteの使用をやめる
それが嫌なら
DibSectionなりをつかって独自フォーマットを一時的にbmpに置き換えて
それを読みこませる。
まぁVRAM復帰で死ぬけど。

637 名前:名前は開発中のものです。 :02/06/04 22:00 ID:???
>>636
うそだった、
Textureをlockして書きこめばよかった…

鬱死

638 名前:名前は開発中のものです。 :02/06/04 23:33 ID:z0uR.zsQ
>>635-636
D3DXCreateTextureFromResource

639 名前:名前は開発中のものです。 :02/06/04 23:48 ID:???
おのれでファイルを開き、全部メモリに読み込んでから
D3DXCreateTextureFromMemory
後から暗号化するのも変更点少ないからこれにしとき。

640 名前:名前は開発中のものです。 :02/06/05 08:03 ID:ci2rQ1FE
DirectX9β1でたよね。runtimeだけ?SDKは?

641 名前:名前は開発中のものです。 :02/06/05 09:13 ID:???
2ch来てるような 同人STG作者には関係ないということで・・・終了

642 名前:名前は開発中のものです。 :02/06/05 10:04 ID:???
>641口から泡出てるヨ。

643 名前:名前は開発中のものです。 :02/06/05 12:52 ID:8Vcze9a.
同人シューティングって、なんでRay Force/Stormみたいのが多いの?

644 名前:名前は開発中のものです。 :02/06/05 12:54 ID:???
えを多く用意しなくて良いから

645 名前:名前は開発中のものです。 :02/06/05 13:22 ID:???
マクロスみたいな 誘導ミサイル を3Dゲームに落とし込むのか企画屋の夢だったから
RAYシリーズで見事やられちゃったけど、未だにその夢の残骸を追いつづけてる

646 名前:名前は開発中のものです。 :02/06/05 13:24 ID:8Vcze9a.
システムだけじゃなくて絵とかまでくりそつじゃん。

647 名前:名前は開発中のものです。 :02/06/05 21:11 ID:???
>>643
それしか知らないから

648 名前:名前は開発中のものです。 :02/06/06 00:37 ID:???
レイでなければ東亜系だが、ダサすぎて売れずに轟沈

649 名前:名前は開発中のものです。 :02/06/06 03:47 ID:???
3Dシューティングでボンバー搭載のもちょっと見たい
ボンバーの演出燃えそう

650 名前:名前は開発中のものです。 :02/06/06 07:57 ID:3HfZgzKI
省ポリゴンで3D縦シュー作るとなぜかレイストームになっているという罠

651 名前:名前は開発中のものです。 :02/06/06 09:04 ID:???
ストーリーも、とってつけ方がレイなのが多いな。
絶望的戦局の最後の希望とかなんとか。

652 名前:名前は開発中のものです。 :02/06/06 11:06 ID:???
DirectX8にて、画面が16ビットモードなら問題なく初期化できるのですが、
24ビットモードで同じプログラムを実行すると初期化に失敗します。
D3DPRESENT_PARAMETERSのBackBufferFormatにちゃんとディスプレイモードを
セットしているのですが、失敗します。
どなたか教えていただけないでしょうか?

653 名前:名前は開発中のものです。 :02/06/06 11:12 ID:VX129WA.
VRAMがたりてないとか。解像度どうよ?
最近のビデオカードだとありえないとも思うけど、
トリプルバッファでやってるとか。

654 名前:名前は開発中のものです。 :02/06/06 11:49 ID:???
レイシリーズは好きだけど、バックストーリィは知らなかった。

655 名前:652 :02/06/06 11:58 ID:???
>>653
即レスありがとうございます。
トリプルバッファはやってません。
VRAMは足りているはずです。
解像度は今、変えてみましたが、24ビットではうまくいきません。
他に考えられる原因がありましたらよろしくお願いいたします。

656 名前:名前は開発中のものです。 :02/06/06 12:02 ID:???
実は32ビットモードだと上手く行くとか

657 名前:名前は開発中のものです。 :02/06/06 14:00 ID:???
>>655
ビデオカードは?
24ビットモードが無いだけのような気がする。

658 名前:名前は開発中のものです。 :02/06/06 17:53 ID:???
画面モードを列挙しる!

659 名前:652 :02/06/06 18:18 ID:???
24ビット時に取得したディスプレイモード(D3DDISPLAYMODE::Format)の
値はD3DFMT_R8G8B8 = 20 です。

660 名前:名前は開発中のものです。 :02/06/06 19:30 ID:VX129WA.
フルスクリーンモードで初期化するとうまくいく罠

661 名前:名前は開発中のものです。 :02/06/06 20:06 ID:RxPMJbQM
RPGみたいなマップチップを敷き詰めて表示するプログラムやってます。

DirectX8.0aで組んでいたプログラムをDirectx8.1でコンパイルしてみたら
なぜかマップチップ同士の継ぎ目が見えちゃうようになったんですが…

なんででしょ? lD3DXSprite::Draw使ってます。

662 名前:名前は開発中のものです。 :02/06/06 20:15 ID:???
ID3DXSpriteを使うなってことだろ。
ファイルをテクスチャにロードする際に
2^nのサイズに補正されてロードされるから、
イメージの補完式が変わると当然結果も違ってくる。

663 名前:名前は開発中のものです。 :02/06/06 22:02 ID:AuhGqnfs
mmioOpenを使ってWavファイルを読み込んでいますが、
Wavファイルの中身を簡単には見られたくない場合どのようにしたら
いいのでしょうか?

664 名前:名前は開発中のものです。 :02/06/06 22:08 ID:???
winnt\system32\dllcacheとかに紛れ込ませる

665 名前:名前は開発中のものです。 :02/06/06 22:18 ID:???
>>662
テクスチャサイズは大丈夫なはず。
やっぱ自前でSprite組んだ方が良いのかな

666 名前:名前は開発中のものです。 :02/06/06 22:20 ID:???
>>663
読み込んだデータを自前の形式でセーブすれ

667 名前:名前は開発中のものです。 :02/06/06 22:56 ID:???
>>665
テクスチャの問題ということじゃなくて。
テクスチャの幅と高さが2^nのサイズになるように引き延ばされてロードされるから、
当然bi-linearだったりその他アルゴリズムで補間(画像を変形される)される。
Spriteとして描画するときはその都度縮小描画をするんだけど、
ロード時にすでに元絵が崩れているから、綺麗にならない場合がある。

で、8.0で正常に表示できていて8.1でダメになったと言うことは、
そのときの補間式が変更になって、1dot単位で厳密に絵があわなくなったって事じゃないの?

668 名前:名前は開発中のものです。 :02/06/06 23:54 ID:???
>>667
512x512の画像を読み込んで、そこから48x48単位で
切り出してマップチップとして使ってます。

で、48が2^n単位ではないからおかしくなってる、
って事かな?

669 名前:名前は開発中のものです。 :02/06/07 00:31 ID:???
DIRECTDRAWSURFACE7のサーフェスのメモリを直接操作したいのですが、
LPSURFACEDESC2 sd;
pBmp1->Lock(NULL,sd,DDLOCK_SURFACEMEMORYPTR ,0);
こうやると、DDERR_INVALIDPARAMSが返されて、サーフェスをロックできません。
pBmp1にはLoadImage("",LR_FROKFILE);で読み込んだイメージをpBmp1のHDCを取得してBitBltしたイメージが入っています。
WEB上のさまざまなサンプルの組み合わせを試しましたが、原因がわかりません。

670 名前:名前は開発中のものです。 :02/06/07 00:46 ID:???
DDSURFACEDESC2 sd;
ZeroMemory( &sd, sizeof(sd) ); < これはいらないかも
sd.dwSize = sizeof(DDSURFACEDESC2);

pBmp1->Lock(NULL,&sd,0,NULL);

これで出来んか?

671 名前:名前は開発中のものです。 :02/06/07 01:12 ID:???
>670
できました。どうもありがとうございました。

672 名前:名前は開発中のものです。 :02/06/07 23:54 ID:???
DirectXでワイプインをしたいのですが,どのようにやればできるでしょうか?

値を少しずつ減らしていくのはわかるんですが

673 名前:名前は開発中のものです。 :02/06/08 04:03 ID:I7s5cA6M
SkinMeshのデーターを作りたいんですが、IDXSkinMeshってLoadだけですよね?
どうやったら、IDSkinMeshで読める形のデーたーが作れるでしょうか?

なんか、SkinMesh用に拡張されたXファイルのヘッダー情報がどっかにあったけど、
それみて、自前でやるしかないんでしょうか?

ツールの出力プラグインも使えない状態です。出力プラグインのソースって公開されてます?

674 名前:名前は開発中のものです。 :02/06/08 04:23 ID:???
>>673
>出力プラグインのソースって公開されてます?
これは?
http://www.asia.microsoft.com/downloads/release.asp?ReleaseID=33783

675 名前:名前は開発中のものです。 :02/06/08 04:36 ID:I7s5cA6M
あ、どうも。MAXとMAYAで共通なソースファイルのないですね〜(萎え
勉強しまふ

つか、実は結構、大変そうな予感

676 名前:名前は開発中のものです。 :02/06/08 11:06 ID:???
DirectXでワイプインをしたいのですが,どのようにやればできるでしょうか?

値を少しずつ減らしていくのはわかるんですが

677 名前:名前は開発中のものです。 :02/06/08 11:09 ID:???
値って何の値だよ?主語をはっきりさせろ

678 名前:名前は開発中のものです。 :02/06/08 11:18 ID:I7s5cA6M
画面いっぱいの半透明ポリゴン
またはMMXでゴリゴリ計算

679 名前:名前は開発中のものです。 :02/06/08 11:36 ID:???
>>678
それは単なるαブレンド。
ワイプじゃない

680 名前:名前は開発中のものです。 :02/06/08 14:27 ID:Mv7t19VY
>>675
これで判らなかったらあきらめと毛。
http://www.dstorm.co.jp/developer/download/lwlib.html

681 名前:名前は開発中のものです。 :02/06/08 14:38 ID:I7s5cA6M
サンキュ。 そういえばMAX版はバグってるつー話聞いたけど
一生懸命、バグ付ソース読むのは切ない…
LightWaveのはちゃんとうごくのかなぁ

682 名前:名前は開発中のものです。 :02/06/08 15:00 ID:???
そもそもそんな高級アプリに手が出せない

683 名前:名前は開発中のものです。 :02/06/08 18:09 ID:???
LwのDirectX Export
WeightMap関係のいろいろな値を見てない。
WeightMapなし、WeightMapあり、
WeightMapMapOnlyなしが混じってるとダメ。

684 名前:名前は開発中のものです。 :02/06/08 19:42 ID:???
サンクス。まともなXファイルExporterは存在しないのかー?

685 名前:名前は開発中のものです。 :02/06/14 21:48 ID:???
>>681
MAX用プラグインで出せるスキンはphysiqueのBoneのみ(readme.txtに書いてあるけど)
MAXはVer.Upを重ねてブクブク太りすぎなので他のBoneを使ってると落ちます。
座標系も直さず吐き出すから不便。

686 名前:名前は開発中のものです。 :02/06/15 00:23 ID:???
>>685
さんくす。鬱になってきました

687 名前:名前は開発中のものです。 :02/06/18 10:51 ID:321WPTBQ
┗(゚д゚;)┛age

688 名前:名前は開発中のものです。 :02/06/18 11:23 ID:???
DirectX Audio を使ってMIDIを鳴らしているんですが
ボリューム調整(フェードイン/アウト)ってどうやるんでしょうか。

検索してサンプルソース探してみたんですが、ありそうで
ありません。参考になるサイトや知ってるって方いらっしゃいましたら
教えてください。

689 名前:名前は開発中のものです。 :02/06/18 17:46 ID:???
>>688
IDirectMusicPerformance8->SetGlobalParam(GUID_PerfMasterVolume,&Volume,sizeof(long));

690 名前:名前は開発中のものです。 :02/06/18 17:57 ID:???
マスターボリュームいじるなコノヤロウ!

691 名前:名前は開発中のものです。 :02/06/18 21:12 ID:???
688です。
マスターボリュームは全体のボリュームですか?
いくつかのセグメントがあって、それぞれのボリュームを動的に
コントロールしたいんですが、セグメント単位でボリュームを
コントロールできる方法をご存知でしたら、ぜひ教えてください。

692 名前: :02/06/18 23:42 ID:???
最近DirectX+LightWaveで開発はじめてみますた。
LightWaveのDirectX Exportを調べてみたのですが
WeightMapを1枚でも使用すると全てのBoneにUseWeightMapOlnyの
チェックが入ったのと同じ状態で出力されるようです。(合ってます??)

なので現状の回避策としては
・WeightMapを使用しない
・全BoneをUseWeightMapOnlyにする→BoneごとにWeightMapを用意する(´Д`;)
マジ使えない状況です...

しょーがないのでObject,Scene Libraryに含まれるDirectXコンバーターの
ソースに手を加えているトコロです...だりぃ....

693 名前:689 :02/06/19 01:01 ID:???
>>691
マスターボリュームは全体のボリュームです
セグメント単位で変えたいのであれば

IDirectMusicAudioPath8->SetVolume(Volume,0);

としてあげましょう

694 名前:名前は開発中のものです。 :02/06/19 01:02 ID:???
>>692
私もdxskm.cppに手を加えてWeightMap対応にしたかったが
挫折中。成功したらあなたは神

695 名前:名前は開発中のものです。 :02/06/19 04:31 ID:???
とある本にDirectXのライトは重いので使うなと書いてあったのですが実際のところどうなんでしょうか。

696 名前:692 :02/06/19 05:14 ID:???
>>694
成功しますた。
私はいまんとこUseWeightMapOnlyは使ってないので、ソレには対応させてないですが。

あと、このプログラム(含plugin)、張力計算も変ですね。
ミョーにパキパキ曲がるカンジ。FallOffをでかくしすぎたのに近いかな?
今はそっちの調節をしてみてます。

697 名前:名前は開発中のものです。 :02/06/19 05:20 ID:99tvqaKY
面手

698 名前:名前は開発中のものです。 :02/06/19 07:27 ID:???
>>695
いつの時代だ。ただ俺もどこか見た覚えがある。
洋ゲーではフォーセーケン(自前ライト)
国産ではミッドガルドの頃か

699 名前:名前は開発中のものです。 :02/06/19 08:46 ID:???
>>695
ソフトウェアだった頃は事実重かった。
Hardware TnL になってからは、気にならない。
パイプラインに組み込まれてるからか、フィルレートが壷首だからか。

700 名前:名前は開発中のものです。 :02/06/19 08:55 ID:???
つか、昔のゲームは、ライティング計算 簡素な方法で近似してたじゃん。
DXは真面目に計算してたし重いのはある意味当たり前

最近はどうなんだろう?シェーダ−で簡素化しても、昔と違って
ハイポリだし、誤差の見えるおかしな絵になちゃうなんてことある?

701 名前:名前は開発中のものです。 :02/06/19 15:18 ID:mOOoeDK.
シェーダ−でFixedTLのライトを実装しようとしたら
死ぬと思う。

702 名前:名前は開発中のものです。 :02/06/19 15:25 ID:j/iFmOMQ
D3DXVECTOR2の2Dベクトルを回転させるには何使えばいいんでしょうか?
D3DXMatrixRotationZで回転行列を作って積をとるの?

703 名前:名前は開発中のものです。 :02/06/19 15:33 ID:???
691です。
>>689さんありがとうございます。

それぞれのセグメントに対して次のようにして
IDirectMusicAudioPath8* audiopath を作ろうとしたのですが、
GetAudioPathConfig関数がエラーを返してオーディオパスを取得
することができませんでした。

IUnknown* config = NULL;
if (SUCCEEDED(segment->GetAudioPathConfig(&config))) {
 performance->CreateAudioPath(config, TRUE, &audiopath);
 config->Release();
}

他に、performance->GetDefaultAudioPath(&audiopath); でデフォルトの
オーディオパスを取得できたのですが、audiopath->SetVolume(vol, 0);
とすると全てのセグメントのボリュームが変わってしまいます。

どうしたものでしょう(泣

704 名前:名前は開発中のものです。 :02/06/19 17:10 ID:???
>>701
litっていうそのまんまの命令があるよ。
でも頂点シェーダー2.0では消えたみたい。

705 名前:名前は開発中のものです。 :02/06/19 21:53 ID:6L5LvgJg
>>704
いや減衰率とかスポットのコーンとかさ。

706 名前:名前は開発中のものです。 :02/06/20 02:34 ID:XwaxD532
 なぜか出し惜しみスレで締め出し食らったのでこちらに転載させて
頂きます。よろしくお願いします。

> ちょっと困っています。DirextXSDK付属のMAX用Xファイルプラグインです
>が、MAX4.2用にコンパイルし直すとテクスチャーが一切付いてこないのです。
>何方か原因解りませんか?上のほうだとうまく言ったという報告がチラホラ
>なんですが…。とほほ

ほんと、とほほです。

707 名前:名前は開発中のものです。 :02/06/20 02:58 ID:???
>>706
タイーホ

708 名前:名前は開発中のものです。 :02/06/20 07:16 ID:???
>>706
割れ物MAX使ってるのか。
通報しとく。

709 名前:名前は開発中のものです。 :02/06/20 08:27 ID:???
>>706はこの板から出てけ。

710 名前:名前は開発中のものです。 :02/06/20 21:47 ID:bvvsEuks
複数人で3Dの簡単なゲームを作成しようと思い、3Dアニメーション作成ツールを作りました。

ところが間抜けな失敗が…。1つのオブジェクトを中心とした
アニメーションならば問題ないのですが、2つ以上のオブジェクトが
関わってくるようなアニメーションのことをすっかり失念していたのです。

たとえば自分の周りを球がくるくる回った後、球が任意の敵座標に向かって
投げ出されるようなアニメーションなどが実現できません。
私がコード的に解決することはできますが、それだと担当の人がしょんぼりですし…。

市販のエディタツールを参考にしようとしても、相互に作用するものまで
踏み込んでいるものは無そうですし…どうしたら良いのか途方にくれています。
一般にはどうやっているのでしょうか?相談に乗って頂ければ嬉しいです。

711 名前:名前は開発中のものです。 :02/06/20 21:53 ID:???
親子関係を切り離せるようにする
または
球のスケールを0にして、別オブジェクトで新規球を作る
または
カメラに写らないほど遠くに球を移動して、逆に遠くに用意しておいた別オブジェクトを近くに持ってくる

712 名前:名前は開発中のものです。 :02/06/20 22:05 ID:???
>>706
座標軸が左手Yアップじゃない点を除けば問題無く出たと思うが。
テキスト形式で出して確認してみれば?

MAX使っててXファイルに書き出す必要に迫られる状況が思いつかん。

713 名前:名前は開発中のものです。 :02/06/20 22:22 ID:hTuEOYZY
>>710
そういう自分と球のような
関係が切り離されるものどうしは
はなっから親子関係で括らない。
球はあくまでワールド座標系での移動行為として
自分の周りをまわるようにする。

714 名前:710 :02/06/20 23:27 ID:???
>>711 >>713
お二人ともレスありがとうございます。
最初から、あるいはある時点から別のオブジェクトとして
扱うというのがセオリーなんですね。とても参考になりましたですm(_ _)m

しかし、そうなるとワールド座標の移動方法は、かなりコードの方で
補わなければいけないという認識で良いのでしょうか?
正直、イベントに対してその都度アニメーションを変える程度で
それなりにゲーム作れると思っていたのですが…甘かったです…。

うー、最初から設計し直しの予感です…いや、いっそ飛び道具禁止に…(´・ω・`)

715 名前:名前は開発中のものです。 :02/06/20 23:37 ID:???
アニメーションデーターに 親を切り替える等のコマンド組み込めば?
frameに連動した効果音の発生とかも必要になるでしょ

まぁ、アニメデーターと同じ構造体に入れるかは別問題だけど

716 名前:DirectXは知らないが、 :02/06/21 00:50 ID:vXM1TDO.
>710
ローカル・ワールド変換マトリックス作って、座標変換すればよいのだよ。
移動速度もワールド基準に変換するのを忘れ尿に名。

717 名前:名前は開発中のものです。 :02/06/21 03:45 ID:???
DirectInputのAcquire()が失敗します。原因を特定するにはどうすればいいんでしょうか…
コードはヘルプのをまんま使ってます。

718 名前:名前は開発中のものです。 :02/06/21 04:07 ID:???
>>717
戻り値を調べる

719 名前:717 :02/06/21 04:21 ID:???
>>718
戻り値が何を意味してるのかがわかんないんですよ…
エラー一覧みたいなのがないのか探しているんですが。

720 名前:名前は開発中のものです。 :02/06/21 04:32 ID:AR4pKO1Y
>>717
それは、先日
折れが遭遇したのに似てる。
それデバックビルドのEXEじゃない?
SetCooperativeLevelで
DISCL_EXCLUSIVE | DISCL_BACKGROUNDにしてみ。

721 名前:717 :02/06/21 04:45 ID:???
>>720
レスどうもです。やってみたんですがSetCooperativeLevelで失敗してしまいます。
デバッグビルドではあるのですが。

722 名前:717 :02/06/21 05:13 ID:???
とりあえずエラーがDIERR_OTHERAPPHASPRIOだということがわかりました。
さて、どうしたらいいものか…

723 名前:名前は開発中のものです。 :02/06/21 05:18 ID:???
DISCL_NONEXCLUSIVEを指定してみてはどうか

724 名前:717 :02/06/21 05:42 ID:???
とりあえずエラーを無視してGetDeviceStateの直前にもう一度Acquireしたら無事動きました。
いいのかな?これ。まあいいや、もう寝よ。

>>723
レスありがとうございます。
ヘルプのコードをそのまま使っているのでDISCL_FOREGROUND | DISCL_NONEXCLUSIVEを指定しています。

725 名前:名前は開発中のものです。 :02/06/21 16:33 ID:???
>>724
違うよ、DISCL_BACKGROUND| DISCL_NONEXCLUSIVEにしろってこったろ。
これで事実上優先レベルでの制限はなくなるから、エラーも出なくなるだろう。

726 名前:名前は開発中のものです。 :02/06/21 16:39 ID:ABfUs.Fk
つーかマジでD3DXMATHって
3DNow/SSEに対応してんのな。
折れブラフかと思って、
3DNow対応に書き直してたよ。
速めに気付いて良かった。

727 名前:717 :02/06/21 22:30 ID:???
>>725 >>723
あああ、そういうことですか、勘違いしてました。
そのとおりやってみたら問題なく動きました。どうもありがとうございました。

728 名前:名前は開発中のものです。 :02/06/21 22:42 ID:???
VC6だとD3DXMATRIXA16って本領発揮しないの?
.net買わないとだめ?

729 名前:名前は開発中のものです。 :02/06/21 22:47 ID:???
だめ

730 名前:726 :02/06/22 00:05 ID:Rtzwl2bk
>>728
プロセッサーパック入れれば
サポートされるよ。
つーか、既出だったらアレだけど
VisualC++6.0のスタンダートは
プロセッサーパックのサポート外なんだけど
無理矢理入れると、プロ並みにグレードアップする罠。
インライン展開や最適化、MFCの静的リンクも出来てしまう。w

731 名前:名前は開発中のものです。 :02/06/22 00:09 ID:???
#ifdefで区切られてるからどっちにしろダメだと思うが。
ヘッダを編集するのに抵抗がないならいいのか

732 名前:726 :02/06/22 00:20 ID:???
>>731
編集が嫌なら、#undefして
新たに定義し直してやりゃいい。
つーかアライメント16バイトって
何か意味あるの?

733 名前:名前は開発中のものです。 :02/06/22 01:54 ID:???
SSEでレジスタへ直接ロード出来るようになる

734 名前:名前は開発中のものです。 :02/06/22 04:25 ID:???
ここ見て思い出して
俺も8.0の頃に作ったasmのコード外したよ

735 名前: :02/06/22 17:17 ID:???
俺も自作行列ベクトルライブラリ使うのやめようかしらん。
こうしてMSの策略にはまっていく罠

736 名前:名前は開発中のものです。 :02/06/22 17:46 ID:jMNDBe2Q
DirectXの画面キャプチャってどうやってんの?

737 名前:名前は開発中のものです。 :02/06/22 18:18 ID:???
TRIANGLELISTで作った物体を簡単にワイヤーフレームで表示させる方法ってありますか?

738 名前:名前は開発中のものです。 :02/06/22 18:29 ID:???
>>737
どうした?遊んで欲しいのか?

739 名前:名前は開発中のものです。 :02/06/22 19:00 ID:???
>>735
はっきり言って
ベクトルだのマトリクスだの
そういった細かいレベルで
SIMDなりなんなりで最適化しようというのは
あんまり意味ないよな。
1つの関数にする時点で多少なりともオーバーヘッドが発生するし
MMXや3DNowだとFPU切替がイタい。
戻り値としてfloatやdoubleを返そうとすると
FPU切替は避けられないからな。

740 名前:名前は開発中のものです。 :02/06/22 19:01 ID:???
>>736
>>737
FAQ

741 名前:736 :02/06/22 19:36 ID:jMNDBe2Q
>>740
だからどうやってんの?

742 名前:名前は開発中のものです。 :02/06/22 19:38 ID:TTRL1PrI
尻文字で"F","A","Q"と書けば宇宙から託宣が下るよ。

743 名前:名前は開発中のものです。 :02/06/22 19:42 ID:???
>>739
SSEはEMMS命令必要ないから、切り替えのオーバーヘッドは無いよ。
MMXでfloatやdoubleの行列の計算する奴なんていないだろうよ。

実際にSSEで書いたコードとCでベタに書いたコードを比較すると1シーンで
使用する行列演算の回数によっては無視できないほどの差があるよ。

744 名前:名前は開発中のものです。 :02/06/22 20:55 ID:???
まあ、素人にとってはMMX=オナニーのネタってこった

745 名前:名前は開発中のものです。 :02/06/23 02:38 ID:???
どっちにしろD3DXが対応してるから自分で書くほどのものでもないわな。
MMXだと単純過ぎて面白くないけど、プリフェッチが絡んでくるSSEは
最高のオナニーネタだよ。

746 名前:名前は開発中のものです。 :02/06/23 19:54 ID:???
688です。
パフォーマンスオブジェクトを1つしか用意していなかったんですが、これを
セグメント毎に用意してそれぞれの SetVolume() を呼出すことで、セグメント
単位にボリュームを変えることができました。他にも方法があるかもしれま
せんが、一応解決しましたので報告します。

回答くださった方々ありがとうございました。

747 名前:名前は開発中のものです。 :02/06/24 11:33 ID:KZTjZaw2
#define WIN32_LEAN_AND_MEAN
#define INITGUID
#define DIRECTDRAW_VERSION 0x0700
#include <windows.h>
#include <ddraw.h>
#pragma comment( lib, "ddraw.lib" )

LPDIRECTDRAW7 g_lpDD = NULL;

void Hoge( void )
{
  HRESULT hResult;
  hResult = DirectDrawCreateEx( NULL, (LPVOID*)&g_lpDD, IID_IDirectDraw7, NULL );
}

上のコードを VC++ で C としてコンパイルすると次のようなエラーが出ます。

error C2115: 'function' : 互換性のない型が含まれています。
warning C4024: 'DirectDrawCreateEx' : の型が 3 の仮引数および実引数と異なります。

どうも IID_IDirectDraw7 が通らないみたいです。
ファイルの拡張子を .cpp にして C++ としてコンパイルすると問題ありません。

C で通す方法は無いのでしょうか?

748 名前:名前は開発中のものです。 :02/06/24 14:45 ID:???
GUID は、アプリケーションが C または C++ のどちらで書かれているかによって使い方が違うので注意する。
C の場合は、GUID (たとえば、&IID_IDirect3D) にポインタを渡すが、
C++ では参照を渡す (単に IID_IDirect3D)。

749 名前:747 :02/06/24 15:48 ID:???
hResult = DirectDrawCreateEx( NULL, (LPVOID*)&g_lpDD, &IID_IDirectDraw7, NULL );

これで通りました。
他にも C と C++ だとこんな違いがあるみたいですね。

C  IDirectDraw7_SetCooperativeLevel( g_lpDD, ... );
C++ g_lpDD->SetCooperativeLevel( ... );

レスありがとうございました。

750 名前:名前は開発中のものです。 :02/06/24 17:48 ID:???
DirectXのクラス、AppWizardが吐き出したのを使ってる?
自前で行こうかAppWizをベースにしようか今迷ってるとこ。


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.