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


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

鬱だ氏のう DirectX (Part 9)
501 名前:デフォルトの名無しさん :03/07/19 22:13
>>488
> 白のテクスチャ無しポリゴンを0x80で重ね

ここから間違ってる余寒。
>>487をよく読もう。

502 名前:デフォルトの名無しさん :03/07/20 01:07
グレー(0x80)で塗りつぶしたテクスチャを使って
0x00〜0xff を 0x80〜0xff に圧縮する処理を、
DotProduct3 を行うテクスチャステージの前のステージでやればどうだろ?

503 名前:デフォルトの名無しさん :03/07/20 01:35
ARGB = 0x80ffffff で塗りつぶしたテクスチャで
D3DTOP_BLENDTEXTUREALPHA を行った後、
0xa6ca8d で DotProduct3 したらできた。

諧調は半分にはってるはずだが、
暗い部分が黒く潰れることも、明るい部分が白く飛ぶこともない。

504 名前:デフォルトの名無しさん :03/07/20 08:36
フルカラーの最下位ビットなんて人間には違いが分からないから気にする
必要ないって。
そもそも階調が落ちてなくてもグレースケール化する際のスケーリングで
最下位ビットは落ちてしまうし。

っていうか何も演算しないでテクスチャをそのまま描画するだけでも
GeForceは最下位ビットを落としてしまうし。

505 名前:デフォルトの名無しさん :03/07/20 10:07
TEXTUREFACTOR が 0xa6ca8d だと、元のピクセルが真っ白でも
演算誤差のせいで出力が 0xff まで到達しないので、
もう少し大きめの数に調整したほうがいいかも。

まぁ、どうせポリゴンに貼るときに変形&補間されてしまうし、
ライトにだって影響されるしね。
あんまり細かく考えてもしかたないか。

506 名前:476 :03/07/20 18:30
どうしても潰れる・・・

>ARGB = 0x80ffffff で塗りつぶしたテクスチャで
>D3DTOP_BLENDTEXTUREALPHA を行った後、
ここは、0x80ffffffのポリゴンを SRCALPHA/INVSRCCALPHAの
ブレンドで、塗りつぶしても同じ事ですよね?

507 名前:デフォルトの名無しさん :03/07/21 09:48
DotProduct3でグレースケールはできたけど、アルファでテクスチャの
透明度を変えるってのができない。ウワァァァァァン
D3DRS_ALPHABLENDENABLEをTRUEにするだけで全然グレースケールでもなくなるし・・・
なんだこりゃ

508 名前:デフォルトの名無しさん :03/07/21 10:12
それってもしかして単にALPHAOPの設定とかしてないだけだったりして?

509 名前:507 :03/07/21 13:00
各頂点のdiffuseに0x80ffffff;
テクスチャ0 グレースケールにしたい画像
テクスチャ1 白・不透明
D3DRS_TEXTUREFACTOR 0x00a6ca8d
D3DRS_ALPHABLENDENABLE, FALSE
D3DRS_SRCBLEND, D3DBLEND_SRCALPHA
D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA
0, D3DTSS_COLOROP, D3DTOP_BLENDDIFFUSEALPHA
0, D3DTSS_COLORARG1, D3DTA_TEXTURE
0, D3DTSS_COLORARG2, D3DTA_DIFFUSE
1, D3DTSS_COLOROP, D3DTOP_DOTPRODUCT3
1, D3DTSS_COLORARG1, D3DTA_CURRENT
1, D3DTSS_COLORARG2, D3DTA_TFACTOR
0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1
0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR
0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE
1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1
1, D3DTSS_ALPHAARG1, D3DTA_CURRENT
1, D3DTSS_ALPHAARG2, D3DTA_CURRENT
2, D3DTSS_COLOROP, D3DTOP_DISABLE
↑の条件でグレースケール。
さらにD3DRS_ALPHABLENDENABLEをTRUEにし、TEXTUREFACTORのアルファ部分に濃度入れれば
濃度変更可能と思ったのだがうまくいかない。
ちなみにGeForce3 ドライバ44.03。


510 名前:デフォルトの名無しさん :03/07/21 13:09
9は普及したと見ていいのだろうか?

511 名前:476 :03/07/21 14:57
その後色々弄った挙げ句に、LOCKしてのRGB/3と DOTPRODUCT3を
数フレーム毎に切り替えて見比べてたら、170でRGB/3ときっちり
同じになりました。

170て数字は何処からどう計算すると出てくるんだろう(´д`)

512 名前:476 :03/07/21 15:05
あ 170-128 *3は126だから このままa6ca8dにすれば良いのかな。

513 名前:デフォルトの名無しさん :03/07/21 15:53
日記は他所でやってくれんかのう(´・ω・`)

514 名前:デフォルトの名無しさん :03/07/21 17:37
たしかにうざったい

515 名前:デフォルトの名無しさん :03/07/21 20:56
もうちょっと他人の興味を引くことを書けっつーんじゃ。
面白いダジャレとか。

516 名前:デフォルトの名無しさん :03/07/21 21:29
誰とセックス?

517 名前:デフォルトの名無しさん :03/07/21 21:30
夏の煽りはキレもコクもないな。

518 名前:デフォルトの名無しさん :03/07/21 21:42
DajareX

519 名前:デフォルトの名無しさん :03/07/21 22:02
夏のネタはキレもコクもないな。

520 名前:デフォルトの名無しさん :03/07/21 23:28
そうか、夏休みに突入したのか。道理で。

521 名前:デフォルトの名無しさん :03/07/21 23:56
変なのが迷い込んできたな。

522 名前:デフォルトの名無しさん :03/07/22 20:59
C#でDirectXのインテリセンスが突然出なくなったんですが、
何か解決方法あるんでしょうか?(再起動しても無理でした)


523 名前:デフォルトの名無しさん :03/07/22 21:45
>>522
状況説明が少なすぎる。

C# は触ったこと無いんでわからないが、
C++ なら .ncb ファイルを削除して再起動すると直ることもある。

それでダメなら単純に構文が間違ってるとか。
コンパイルは通った?

.NET スレで聞いたほうが良いと思う。

524 名前:デフォルトの名無しさん :03/07/22 22:15
>>522
なんか上のほうの文で構文を間違えると下の方が影響受けて出なくなることがあるよ
とりあえず、コンパイルしてミスを直してもだめだったらお手上げ

525 名前:デフォルトの名無しさん :03/07/22 22:15
まー523と同じこといってるんだがw

526 名前:522 :03/07/22 23:13
コンパイルは通ります。
というか、つい直前までは普通に出てたんですよ。

DirectX関係のdllの参照を切って、参照しなおしたり、
C++のncbに当たるようなファイルを消して再起動もしましたが、
変化ありませんでした。

現在手元にないので、ファイルの詳細は分からないのですが・・・。
構文が長くなったり、変数が増えると表示できなくなる事があるんでしょうか?

527 名前:デフォルトの名無しさん :03/07/23 00:16
未だにDirectX7で書いています。
質問なんですが、DirectDrawCreateEx(...)の代わりにCoCreateInstance(...)を使用して
DirectDraw7インターフェイスを取得しているのですがDirectX7のインストールされていないPC
で実行するとCoCreateInstance(...)の所で落ちてしまいます。
エラーが帰ってくればエラーメッセージを表示して終了できるのですが。

開発環境はVC++ 7.0 professional.SDKはDirectX7。ランタイムはDirectX8。
落ちる環境はWindows98をインストールしたたけのPC。ランタイムはDirectX5?

...
 if (GetProcAddress(hModule, "DirectDrawCreateEx") == NULL) {
  // DirectX7が入ってないのでメッセージ出して終了
 }
...
とりあえず今はこんなコードで回避はしてますが根本的な解決には至ってません。
情報ください。


528 名前:デフォルトの名無しさん :03/07/23 00:19
開発ソフトが割れだと制限かかってたまに落ちるようだがそこは大丈夫?


529 名前:デフォルトの名無しさん :03/07/23 00:38
割れソフト使用してる当人じゃない所で発動するのか。 嫌な制限だな。藁

530 名前:デフォルトの名無しさん :03/07/23 00:46
開発してる人に質問なんですが、
テクスチャのサイズに制限とかかけてますか?

メジャーな物ではvoodoo系が256*256ですが、
それを除くとあらかた1024*1024に対応していますよね。
いいかげんvoodoo系捨てても問題なし?

531 名前:527 :03/07/23 01:09
今使ってるVS.NET2003はMSDNから送られてきたCDでインストールしたよ。
これが問題?

532 名前:デフォルトの名無しさん :03/07/23 02:08
俺は市販ゲーでVoodoo対象外にしたが
そのことで不具合がどうのと言ってきた奴はいなかった。


533 名前:デフォルトの名無しさん :03/07/23 02:26
>>527
::CoInitialize() してないってオチじゃないよね?

534 名前:527 :03/07/23 03:24
>>533
当然それは無いです。
それにCoInitialize()せずにCoCreateInstance呼んだらエラーリターンしてくると思いますが。

535 名前:527 :03/07/23 05:32
やれやれ誰も答えられないんですね。
プログラマが集まる板とは言っても所詮は2ちゃんねるですか。
少しでも期待した自分が馬鹿でした。

536 名前:デフォルトの名無しさん :03/07/23 06:52
>>534
気が早すぎ(;´Д`)
漏れも前にやったことがあって、DirectX7以降が入ってない時にDirectDraw7の
インターフェースを得ようとするとダメっぽいね。ドキュメント通りにやると。

これは試してないんだけど、IID_DirectDrawのインターフェースを取得してから
QueryInterfaceするとか、もしかしたらCoCreateInstanceの第一パラメータが
CLSID_DirectDraw7だったら逝けるのかもしれない。

バージョンチェックならSDKにサンプル入ってるからそれで調べると言う手も。

537 名前:デフォルトの名無しさん :03/07/23 07:01
とりあえず、問題の CoCreateInstance() の呼び出し部分を書くのが筋かと。
あと、なんでそこで落ちることが分かったのか。

単に同様の不具合を経験した人間から
お安く解決策を得たいだけなら、このまま消えたほうがいい。

538 名前:デフォルトの名無しさん :03/07/23 08:33
GetProcAddress以外にどうしろと?

539 名前:デフォルトの名無しさん :03/07/23 09:40
DirectX7のインストールされていないPC でDirectX7インターフェース取得しようとするとエラーになるって当然じゃない?バカ?ネタ?

540 名前:デフォルトの名無しさん :03/07/23 09:56
>>539
お察しください

541 名前:デフォルトの名無しさん :03/07/23 10:23
>>539
いや、CoCreateInstance がエラーを返さずに落ちるってことだろ。
仕様なら REGDB_E_CLASSNOTREG を返すはず。

VC++6のヘルプによると、このような記述がある。
>Passing into this function any invalid and, under some circumstances,
> NULL pointers will result in unexpected termination of the application.
だから、CoCreateInstance の部分を書いてほしかったのだが……

542 名前:デフォルトの名無しさん :03/07/23 10:27
ちなみに .NET 2003 MSDN ライブラリには >>541 の記述はないんだよね。
これが後に修正されたことを意味するなら、527 は Windows98 をアップデート
してみるといいかもいれない。

543 名前:527 :03/07/23 12:58
>>535
おいおい誰だお前は・・・。

544 名前:527 :03/07/23 13:24
コードはMSのサンプル、d3denum.cpp内DriverEnumCallbackを参考にしてるのですが
DirectDrawCreateEx()の部分をCoCreateInstance()系に変更しています。

>>534
ご指摘の場所、CLSID_DirectDraw を CLSID_DirectDraw7 にしたら落ちずにエラーが帰ってきました。
hr = CoCreateInstance(CLSID_DirectDraw7, NULL, CLSCTX_ALL, IID_IDirectDraw7, (LPVOID*)&pDD);

サンプルやドキュメントを鵜呑みにしてはダメですね。
みなさんありがと。

545 名前:527 :03/07/23 13:27
失礼。上のレス534でなくて536さんでした。

546 名前:536 :03/07/23 23:41
>>544
上手くいったんですな。ヨカタ。
しかし、何で一般保護エラーでるんだろ…(;´Д`)

547 名前:デフォルトの名無しさん :03/07/24 00:18
クラスが存在しない場合はエラーで返してくれるが
存在するクラスを使って存在しないインターフェイスを要求したら落ちるってことじゃね?

548 名前:デフォルトの名無しさん :03/07/24 00:25
535みたいな事をいう厨房なんか無視しろよ

無駄なライブラリつくって一生オナってろ


549 名前:548 :03/07/24 01:47
すいませんでした。言い過ぎました。一生とは長すぎました。一週間ぐらいで
いいです。ほんとにおさがわせしました。

550 名前:デフォルトの名無しさん :03/07/24 02:40
やっぱID欲しいな・・・。長期休暇期間限定でいいから。

551 名前:デフォルトの名無しさん :03/07/24 02:41
誰も掛からず、ついには自作自演か。

552 名前:デフォルトの名無しさん :03/07/24 10:01
以上、
>>522-551まで自作自演ですた。

553 名前:デフォルトの名無しさん :03/07/24 17:13
http://www.microsoft.com/downloads/details.aspx?FamilyID=a6dee0db-dcce-43ea-87bb-7c7e1fd1eaa2&DisplayLang=en

554 名前:デフォルトの名無しさん :03/07/24 18:24
9.0bのSDKマダァ?

555 名前:デフォルトの名無しさん :03/07/24 19:39
>>554
とっくにきてるけど?

556 名前:デフォルトの名無しさん :03/07/25 07:29
もう9.0bなんて出たの?

557 名前:デフォルトの名無しさん :03/07/25 07:55
開発キットに影響あるん?

558 名前:デフォルトの名無しさん :03/07/25 08:34
日付を見る限り、ランタイム等の更新だけのようだ

559 名前:デフォルトの名無しさん :03/07/25 09:59
誰か質問書けよ。暇でつまんねーから。

560 名前:デフォルトの名無しさん :03/07/25 10:43
9.0bインストールしたら
vs2003で
.NETアセンブリ'Microsoft.DirectX.dll'が見つかりませんと出て
ビルドエラーになります。



561 名前:デフォルトの名無しさん :03/07/25 10:57
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=ookazujp
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000001&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000002&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000003&pid=p000000244
http://www.adultshoping.com/index.cgi?id=1057809839
(屮゚∀゚)屮 キチャッタ↑
(;´Д`)ハァハァ(;´Д`)ハァハァ(;´Д`)ハァハァ(;´Д`)ハァハァ……ウッ!!
ガ━━(゚Д゚;)━━ン!

!!!!! ━━━━━━(゚∀゚)b━━━━━━ グッジョブ!!!!!


562 名前:デフォルトの名無しさん :03/07/25 11:05
>>560
"Microsoft DirectX.dll" をインストールしましょう。

以上

ほれほれ、もっと質問こいや!

563 名前:_ :03/07/25 11:08
http://homepage.mac.com/hiroyuki44/

564 名前:デフォルトの名無しさん :03/07/25 11:09
ああ、560がつまんねーレス返しそうなんで細かく教えとくか。
ランタイムのダウンロードページのインストール方法の項目をよく読め。

以上

565 名前:デフォルトの名無しさん :03/07/25 17:49
こんにちは。質問に来ました。うふふ。

LPD3DXFRAMEとか、頭についているLPって何の意味があるんですか?
ただのポインタなんだから、D3DXFrame*とかの書き方でもいいんじゃない
ですか?

うふふ。何分で答えが返ってくるかしら。

566 名前:デフォルトの名無しさん :03/07/25 18:40
お好きな方をお使いください

567 名前:デフォルトの名無しさん :03/07/25 19:25
答えになってません。 氏んで下さい。

568 名前:デフォルトの名無しさん :03/07/25 19:55
そんなの別にDirectXに限った事じゃないじゃん

569 名前:デフォルトの名無しさん :03/07/25 19:55
>>565
激しくスレ違い

570 名前:デフォルトの名無しさん :03/07/25 20:35
うふふ。答えがあるかしら、あら、566さん、あなたってはやいのね。

おかしいな。俺が聞いたことなのに、誰か知らん奴が答えになってないとか
言っておこってるぞ。

また来るわ。うふふ。

571 名前:デフォルトの名無しさん :03/07/25 21:25
文句はハンガリー大使館にどうぞ。

572 名前:デフォルトの名無しさん :03/07/25 21:29
マイクロソフトに聞きましょう

573 名前:デフォルトの名無しさん :03/07/25 21:55
'*'を隠したかったのかなぁ。
なんかパッと見、クラスでラップされてるように見えてカコイイ?から。
で、ずるずる規約として続けてるうちに
止めるに止められなくなって今に至ると。
クラスに憧れていたC時代の遺産。

574 名前:デフォルトの名無しさん :03/07/25 22:03
LPD3DXFRAME

D3DXFrame*
はかっこいいとかそういう問題ではなく、
複数の変数を作成する際に間違いを起こさないためのもの

D3DXFrame* frame1,frame2;
LPD3DXFRAME frame1,frame2;
違いは分かるよね?

575 名前:デフォルトの名無しさん :03/07/25 22:06
LPはFarポインタとNearポインタの名残だろう

576 名前:デフォルトの名無しさん :03/07/25 22:23
>>574
そういえば、そんな利点があったか。
普段ポインタ変数の複数宣言なんてしないから気づかんかった。

577 名前:デフォルトの名無しさん :03/07/25 22:32
C言語ポインタ完全性はにかいてあったような

578 名前:デフォルトの名無しさん :03/07/25 22:33
いまどき生のポインタを使うなんてナンセンスだね。

579 名前:デフォルトの名無しさん :03/07/25 22:59
>>574
真のC/C++プログラマはそもそも1行で複数のポインタ変数の宣言などしない。

580 名前:デフォルトの名無しさん :03/07/25 23:05
その根拠はどこから

581 名前:デフォルトの名無しさん :03/07/25 23:15
>>580
複数宣言する=初期化しない、だからじゃね?
よくわからんけど。

582 名前:デフォルトの名無しさん :03/07/25 23:28
  int* p = NULL; // お守り(^o^)v
  p = intarray;

583 名前:デフォルトの名無しさん :03/07/25 23:32
PじゃなくてLPなのはだなぁ、pだとバランスが悪いからlpを今でも使うんだよ。
俺は。

584 名前:デフォルトの名無しさん :03/07/25 23:44
真のDirectXプログラマはCComPtrを使う。

585 名前:デフォルトの名無しさん :03/07/26 01:42
>>583
lpだと lは上に凸、pは下に凸なのでバランス悪くない?とどうでもいいことを言ってみる

586 名前:デフォルトの名無しさん :03/07/26 02:12
エルピーダメモリの名前の由来考えればわかるだろ

587 名前:デフォルトの名無しさん :03/07/26 02:48
俺もこれに一票だな>>575
結局、オレが使い分ける前に、時代が変わってしまった…

588 名前:デフォルトの名無しさん :03/07/26 04:45
LPD3DXFRAMEとD3DXFrame*に関しては>>574が正解だろう。
「LP」については>>575が正解と。

今となっちゃロングポインタなんて・・・な。

589 名前:デフォルトの名無しさん :03/07/26 05:18
>>585
分かってねぇなぁ。
上に凸と下に凸で打ち消しあってバランスを取るんじゃねぇか。

590 名前:デフォルトの名無しさん :03/07/26 06:14
>>586
そうだったのか。一つ賢くなった。

591 名前:デフォルトの名無しさん :03/07/26 11:41
> D3DXFrame* frame1,frame2;

うそやー。C/C++でこんなことするヤツがいたら
一度に複数宣言するなと強制的に修正してやるぞ、俺は。
Doxygenとか使うときもアレだし。

/** frame1の説明 */
D3DXFrame* frame1;
/** frame2の説明 */
D3DXFrame* frame2;

592 名前:デフォルトの名無しさん :03/07/26 14:37
DirectX9を入れたら
DirectX7が見つかりません
というエラーが出て起動出来ないものが出てきたのですが
7をDLしてもインスコ出来ません(すでに新しいものがありますってエラーがでる)
どうやったら7に戻せますか?


593 名前:デフォルトの名無しさん :03/07/26 14:59
7に戻さないで、そのソフトの作者に連絡する。

594 名前:デフォルトの名無しさん :03/07/26 16:35
>>592
OSから再インストールしないと古いバージョンのDirectXは入らないよ。

595 名前:デフォルトの名無しさん :03/07/26 18:12
ランタイム、SDKともに古いバージョンなど使わせんという
ゲイツ様の強固な意志のあらわれです。

596 名前:デフォルトの名無しさん :03/07/26 18:29
bは今のところ不具合はない模様で…?
久々にOS再インスコするかな

597 名前:デフォルトの名無しさん :03/07/26 19:07
ID3DXAnimationControllerに新たなアニメーションを加えるためには、
どうしたらいいんですか?tiny.xで試しています。

ID3DXAnimationSetの新たなインスタンスを作り、
SetTrackAnimationSetで登録、
SetTrackEnableでトラックを有効にしてみたんですが、なんともならないです。

ID3DXAnimationSetのインスタンスは、
ID3DXKeyFrameInterpolatorの47個(tiny.xのフレームの数)の要素を持つ配列で
作りました。

ID3DXKeyFrameInterpolatorの配列の要素一つ一つは
名前は歩きのアニメーションのインターポレータからGetNameで得られるもの、
スケールはTime=0, Value=(1, 1, 1)のキー1個、
回転はTime=0, Value=(0, 0, 0, 1)とTime=1, Value=(1, 0, 0, 0)のキー2個、
移動はTime=0, Value=(0, 0, 0)のキー1個
で作りました。

うふふ。ヘルプだけの情報では分からないわ。

598 名前:デフォルトの名無しさん :03/07/26 21:10
>>596
b入れたら動画再生時のエラーが解消されて嬉しい。
何が原因だったのか分からないが・・・・。


599 名前:デフォルトの名無しさん :03/07/27 08:36
>>597
そのクォータニョンの値はどうやって出したのサ。

600 名前:デフォルトの名無しさん :03/07/27 09:48
>>599
回転しない状態からX軸まわりに180度の回転です。

ちょっと怪しいとこがあるけど、解決したわ。うふふ。一応、解決法書いておくわね。

601 名前:デフォルトの名無しさん :03/07/27 10:31
【問題】
ID3DXAnimationControllerに新たなアニメーションを加えるには。

【解決】
CloneAnimationControllerメソッドで登録できるアニメーションセットとトラックの
数を適宜増やす。
ID3DXAnimationSetの新たなインスタンスを作り、RegisterAnimationSetで登録。
SetTrackAnimationSetでトラックにも登録。
SetTrackDescで適宜、設定。

ID3DXAnimationSetは動かしたいフレームに対応するアニメーションを表す
ID3DXInterpolatorの配列から作られる。

ID3DXInterpolatorはスケールと回転と移動の変化を表すキーの配列から作られる。
<例>
LPD3DXKEYFRAMEINTERPOLATOR pInterpolator[1];
D3DXKEY_QUATERNION keyRotation[2];
keyRotation[0].Time=0.0f;
keyRotation[0].Value=D3DXQUATERNION(0.0f, 0.0f, 0.0f, 1.0f);
keyRotation[1].Time=1.0f;
keyRotation[1].Value=D3DXQUATERNION(1.0f, 0.0f, 0.0f, 0.0f);
D3DXCreateKeyFrameInterpolator("Bip01_Neck",NULL, 0, keyRotations, 2, NULL, 0, 1.0, &pInterpolator[0])
D3DXCreateAnimationSet("a", (LPD3DXINTERPOLATOR*)pInterpolator, 1, &pAnimSet);
以上のコードは首(tiny.xでは"Bip01_Neck")がY軸周りに180度回転する
アニメーションを作る。

602 名前:デフォルトの名無しさん :03/07/27 10:39
あら、クオータニオンが表す意図してた回転と実際の動作が違うわね。

クオータニオンが表す回転はX軸周りに180度回転のつもりだったのに、
実際の動作はY軸周りに180度回転してる。

まあいいわね。うふふ。また来るわ。

603 名前:デフォルトの名無しさん :03/07/27 12:05
vs2003いれて、雑誌についてたDirectX9SDKをインスコしたけど、
「新しいプロジェクト」のテンプレートのペインにDirectX9Wizardのアイコンが
出ません。

漏れのはハズレだったんでしょうか?

604 名前:デフォルトの名無しさん :03/07/27 14:40
ハズレだね。

そういえば10円ガムってハズレ自体がむかつくんじゃなくて
ガキがあっかんべーしてる絵がむかつくんだよね
そう思わない?>>603

605 名前:デフォルトの名無しさん :03/07/27 14:50
そもそもウイザードが吐くテンプレートを必要とする理由が分からん

606 名前:デフォルトの名無しさん :03/07/27 14:51
>>604
当たりの紙って店がメーカーに送ると換金してくれるの?


607 名前:デフォルトの名無しさん :03/07/27 17:17
>>603
過去ログを読むべし

608 名前:デフォルトの名無しさん :03/07/27 21:21
ひじょーに低レベルかつアホな質問で申し訳ないのですが...

ImageやらTextやらがイッパイ載ってるFormの一部領域だけを
別スレッドからDirectDrawで描画させたいんですが、不可能ですか?
(えぇ、Surfaceをputした瞬間に対象領域以外がブッ壊れました´・ω・`)

609 名前:デフォルトの名無しさん :03/07/27 21:51
Form上にPanelを置いて、そこを描画先にする

610 名前:デフォルトの名無しさん :03/07/27 22:04
回転行列からヨーピッチロール吐くにはどうしたらいいん?

611 名前:デフォルトの名無しさん :03/07/27 22:08
Form?VBか?


612 名前:デフォルトの名無しさん :03/07/27 22:10
YawPitchRollつっても
一度に回転しているわけではなく各軸について段階的に回転してるんで、
各軸について一つずつ解いていけば何とかなる気がする

613 名前:デフォルトの名無しさん :03/07/27 22:15
>>612
一つぽんと回転行列が来てそれについての各軸の角度なんだけど、
回転行列自体いろいろ癒着してるから良く分からないんですよ。
内積でいけるのかな?

614 名前:デフォルトの名無しさん :03/07/27 22:57
数学板いってきます

615 名前:デフォルトの名無しさん :03/07/27 23:06
>>609
Tnx! (ノД`)

616 名前:デフォルトの名無しさん :03/07/28 08:47
>>591
> D3DXFrame* frame1,frame2;

これの何がいかんのか分からん・・・ 教えて、エロイ人 ('A`)

617 名前:デフォルトの名無しさん :03/07/28 08:52
試してみりゃわかる。

618 名前:デフォルトの名無しさん :03/07/28 09:28
>>616
C言語からやり直し。

619 名前:デフォルトの名無しさん :03/07/28 09:31
D3DXFrame *frame1,frame2;
ってことだろ

620 名前:デフォルトの名無しさん :03/07/28 09:37
D3DXFrame* frame1;
D3DXFrame frame2;
こうすれば分かりやすい

621 名前:デフォルトの名無しさん :03/07/28 12:56
なるほど

(D3DXFrame*) frame1,frame2;

にしたらOK?

622 名前:デフォルトの名無しさん :03/07/28 13:02
>>621
全然理解していないのに何がなるほどなんだ?
OKなわけないだろ、基礎からやり直せ

623 名前:デフォルトの名無しさん :03/07/28 13:04
>>622
だまれキチガイ

624 名前:デフォルトの名無しさん :03/07/28 13:09
>>616
VisualC++.NETだと両方ポインタになるね。
挙動が変わってら。

625 名前:デフォルトの名無しさん :03/07/28 13:25
DirectX9.0aを入れたらフルスクリーン時のフレームレートが
60固定じゃなくなった・・・



626 名前:デフォルトの名無しさん :03/07/28 13:26
>>624
なるわけないだろ、基礎からやり直せ

627 名前:デフォルトの名無しさん :03/07/28 13:27
>>626
なるよ。試してから言え、ヴォケ。それとも金なくて環境ないのか?w

628 名前:デフォルトの名無しさん :03/07/28 13:34
>>627
C#では、の間違いだな。

629 名前:デフォルトの名無しさん :03/07/28 13:34
>>627
お前が試してないだろ
そもそもD3DXFRAMEは存在しているが、D3DXFrameは存在しない
それから
D3DXFRAME* frame1,frame2;
frame1 = new D3DXFRAME;
frame2 = new D3DXFRAME;

error C2679: 二項演算子 '=' : 型 'D3DXFRAME *' の右オペランドを扱う演算子が見つかりません
が、frame2で出るぞ
文法的にも、そういう仕様変更はありえない

630 名前:デフォルトの名無しさん :03/07/28 13:37
>>627 (・∀・)イイヨーイイヨー

631 名前:デフォルトの名無しさん :03/07/28 13:43
>>629
そっか〜ありがとう!

632 名前:デフォルトの名無しさん :03/07/28 14:40
type *a,b;とするとaのみポインタとなり、type* a,b;とするとaもbもポインタになる。
・・・・というのはちょっと前にCスレで出たネタでは。

633 名前:デフォルトの名無しさん :03/07/28 14:59
少なくともCはそうはならないけど…
C#はそうなるのか?やったこと無いから分からん

634 名前:デフォルトの名無しさん :03/07/28 15:08
まぁまぁ、変数側に '*' を付けないといけないというCの仕様が悪いということで。

635 名前:632 :03/07/28 15:15
>>633
だからネタだって。

636 名前:デフォルトの名無しさん :03/07/28 15:15
>>632
だからならないって

637 名前:633 :03/07/28 15:19
釣られたヽ(`Д´)ノ

638 名前:デフォルトの名無しさん :03/07/28 15:26
もまいら、なんでグダグダ言うだけで実際に試してみないの?
C#だと挙動が違うよ。マジで。

639 名前:デフォルトの名無しさん :03/07/28 15:27
C#インストしてねーもん。

640 名前:デフォルトの名無しさん :03/07/28 15:32
C#の話は別問題で関係ない

641 名前:デフォルトの名無しさん :03/07/28 15:47
マジみたいだね。

>C および C++ とは異なり、複数のポインタが同じ宣言内で宣言された場合、
>C# での * は、各ポインタ名のプリフィックス区切り記号としてではなく、
>基になる型と共にだけ記述されます。次に例を示します。

もちろん、C# は別問題なんだが。

642 名前:デフォルトの名無しさん :03/07/28 18:43
なんて不毛な争いだ…

643 名前:デフォルトの名無しさん :03/07/28 20:34
>>641
いらん変更だな…

644 名前:デフォルトの名無しさん :03/07/28 20:39
>>643
いちどに2種類の型の変数が宣言できてしまうより、いいと思うけどな。

645 名前:デフォルトの名無しさん :03/07/28 21:15
ポインタを理解したり説明したりする妨げになってたのは確かだしね

646 名前:デフォルトの名無しさん :03/07/28 21:36
今日出た
ゲーム開発のための物理シミュレーション入門
とかいう本どうだった?

647 名前:直リン :03/07/28 21:38
http://homepage.mac.com/maki170001/

648 名前:デフォルトの名無しさん :03/07/28 21:44
ダイレクトxって、
c++から使う場合と、
vbやc#から使う場合では、
速度とか変わったりするの?
それとも全然変わらないのですか?

649 名前:デフォルトの名無しさん :03/07/28 21:57
>>648
うふふ。自分で測ってみたらどうかしらね。

650 名前:デフォルトの名無しさん :03/07/28 22:19
>>646
アマゾンにリンクぐらい貼ってよ

651 名前:デフォルトの名無しさん :03/07/28 22:25
俺、c#しか持ってない、、、。
みんなの見解はどうなのかと思ってさ、、、。

652 名前:デフォルトの名無しさん :03/07/28 22:33
>>637
釣ったつもりはないんだが(笑)
そういえば632のような文脈でのネタってのは嘘とか冗談という意味合いにはならないな。スマソ

653 名前:デフォルトの名無しさん :03/07/28 22:34
>>651
そりゃ、VB や C# より C++ の方がより速いプログラムを組める可能性がある。
また、ランタイム内のコードに依存する割合が大きいアプリほど
言語間の速度差の開きは小さくなる。

実に当たり前なんでマジレスするのも気が引ける。

654 名前:デフォルトの名無しさん :03/07/28 22:38
C++が遅いと言われてたのが懐かしいな

655 名前:デフォルトの名無しさん :03/07/28 22:41
>>653
なるほど。
自分はそう言う当たり前のことも
今一分かってない段階なので、
結構参考になりますです。
感謝。
つまりダイレクトxのルーチンの部分は当然何から呼び出しても
同じだと言う訳ですよね。

656 名前:デフォルトの名無しさん :03/07/28 22:41
新言語が作られるたびに実行速度が遅くなっていくのか

657 名前:デフォルトの名無しさん :03/07/28 22:43
>>656
新旧というか、どれだけ最適化されたネイティブコードを吐けるかじゃね?

658 名前:デフォルトの名無しさん :03/07/28 22:45
それ以上にハードウェアが進化しているから大丈夫 v(^-^=)

659 名前:デフォルトの名無しさん :03/07/28 22:56
Delphi(というかPascal)やったことあると、C#の方が当たり前に思える。
Cみたいに、*を変数側に付けるってのは、直感的じゃなくていやん。


660 名前:デフォルトの名無しさん :03/07/28 22:58
今更C++の汚さを語ってもしゃーないさ。みんな承知の上で使ってるんだから。

661 名前:デフォルトの名無しさん :03/07/28 23:10
時々JAVAが異様な速度たたき出す事あるんだが。

662 名前:デフォルトの名無しさん :03/07/28 23:40
>>661
具体的にどういう時?

663 名前:デフォルトの名無しさん :03/07/29 00:02
>>661
異常なんだろ

664 名前:デフォルトの名無しさん :03/07/29 00:50
DirectShowでmp3演奏しているのですが、
曲を変えるたびにIGraphBuilderをReleaseして
CoCreateInstanceし直さないと駄目なんでしょうか?
単純に曲を止めるだけだと、前にRenderFileした曲が残ってます。

また、解放する場合、CoCreateInstanceの直前に
CoInitialize(NULL)を毎回行わないと失敗してしまいます。
これを毎回呼んでも問題ないのでしょうか?

665 名前:デフォルトの名無しさん :03/07/29 04:14
>>664
>曲を変えるたびにIGraphBuilderをReleaseして
>CoCreateInstanceし直さないと駄目なんでしょうか?

そのようです。もしくはフィルタを全て削除する。
CoCreateInstance したくなくて、常に同じフォーマットのメディアを再生するなら、
ソースフィルタだけを繋ぎかえることでいけると思います。
詳しくはドキュメントを読んでください。

>CoInitialize(NULL)を毎回行わないと失敗してしまいます。

そんなことは無いはず。どこか他にミスがあるのでは?
例えば、解放処理部分で CoUnInitialize を呼んでいるとか。

>これを毎回呼んでも問題ないのでしょうか?

問題ありませんが、CoUnInitialize を同じだけ呼ばなくてはいけません。

通常、アプリケーション(スレッド)の初期化部分で CoInitialize を、
終了部分で CoUnInitialize を呼びます。

666 名前:デフォルトの名無しさん :03/07/29 08:18
>>665
レスありがとうございます。

>通常、アプリケーション(スレッド)の初期化部分で CoInitialize を、
>終了部分で CoUnInitialize を呼びます。

BGM管理を別スレッドで行っていた事が問題だったようです。
スレッド内でCoInitialize を呼んだら正常に動きました。
(スレッドが別の場合はそれぞれで初期化しなければならないのですよね?)


ただ、以前はスレッド外でも動いていたんですよ。
直前に行っていたDirectPlayの初期化処理で、通信を受け取る為の
スレッド作成処理をコメントアウトした為発生したようです。
何故、前は正常に動いていたのか謎なのですが・・・。

667 名前:デフォルトの名無しさん :03/07/29 11:03
低レベル質問ですみませんが、
DirectX9ではDirectDrawのように1ドットの狂いも無く
画面に描画する機能はあるのでしょうか?

668 名前:デフォルトの名無しさん :03/07/29 11:10
ある

669 名前:デフォルトの名無しさん :03/07/29 11:18
ロックして書き込むだけ
意味があるかは知らんが

670 名前:デフォルトの名無しさん :03/07/29 11:51
>>668-669
サンクス。試してみます。


671 名前:デフォルトの名無しさん :03/07/29 11:58
>>667
ヘルプをちゃんと読む。

672 名前:デフォルトの名無しさん :03/07/29 12:08
それからサーフェスロックしなくてもテクスチャtoピクセルができる。
ドライバ次第ということらしいが普通のドライバなら歪むことはない

673 名前:デフォルトの名無しさん :03/07/29 14:00
DirectX9の話なのですが、質問をさせて下さい。
BeginSceneとEndSceneの組は、Presentを行うまでに2回以上呼んでも良いらしいのですが、
グラフィックドライバによっては1回のみ可能なものがあるとのこと。
その制限を調べたいのですが、何か方法はありますか?
capsには含まれていない情報のようなので…。

674 名前:デフォルトの名無しさん :03/07/29 14:05
>BeginSceneとEndSceneの組は、Presentを行うまでに2回以上呼んでも良いらしいのですが、
そんなことをする必要性が分からない

675 名前:デフォルトの名無しさん :03/07/29 14:09
>BeginScene〜EndScene
色んな都合で一度区切らないといけないことがあるっぽ
テクスチャにレンダリングして、それをすぐに使う場合とか
某所サンプルにそういうのがありました。

676 名前:デフォルトの名無しさん :03/07/29 14:11
>そんなことをする必要性が分からない
VMR-9のアロケータのPresentImageから、非同期で
テクスチャに書き込みをする必要があるからです。

677 名前:デフォルトの名無しさん :03/07/29 14:19
>色んな都合で一度区切らないといけないことがあるっぽ
ありがとうございます。
そうなのですかー。

SDKのアロケータのサンプルでは、アロケータ自身がIDirect3DDevice9を
持っていて、レンダリングもアロケータが保持しているクラスで非同期に行っているので、
どうしようか考えていたところなのです。
メインの描画自体は描画専用のクラスから行いたいところです。

678 名前:673 :03/07/29 14:37
度々すみません。自分が気にしているのは以下のことです。

BeginScene()  ←スレッドB
..レンダリング諸々 ←スレッドB
EndScene()  ←スレッドB
BeginScene() ←スレッドA
..レンダリング諸々 ←スレッドA
EndScene()  ←スレッドA
Present()  ←スレッドA

それぞれのスレッドのBeginScene〜EndScene間を
クリティカルセクションで保護すれば大丈夫でしょうか?

679 名前:デフォルトの名無しさん :03/07/29 14:52
クリティカルセクションを使うということは、結局その場は止まることになるから、
それならそのタイミングで、一つのスレッドにまとめられる構造を作った方が安全な気がする

680 名前:デフォルトの名無しさん :03/07/29 15:42
ウィンドウを作成したスレッドだか、デバイスを作成したスレッドからしか
呼べないメソッドがあったような>Direct3D

681 名前:デフォルトの名無しさん :03/07/29 16:10
そのままやるとコワイから、レンダリングは安全のためSendMessageでスレッドを合流させてる

682 名前:デフォルトの名無しさん :03/07/29 20:39
まぁレンダリングはメインスレッドにしとくのが簡単でいいわな
VRAMにアクセスするってことは最悪処理中はOSまで止まってる事があるわけだから
あまり無茶な作りにしない方が良い

683 名前:デフォルトの名無しさん :03/07/29 23:34
そもそもBeginSceneとEndSceneって、なにやってんだろう・・・。

684 名前:デフォルトの名無しさん :03/07/30 05:15
DirectX9.0b SDKで、背景用に巨大なオブジェクトを使ってると、
2DのTEXTや三角プリミティブが、おかしくなるんですが、
何が悪いんだか。
どうなるかと言うと、プリミティブの色が黒になる。アルファが抜けない。
背景以外のオブジェクトが無いところでは、文字が消える。
背景に使っているキューブを描画しないと、問題は起きない。
3Dオブジェクトには、問題が起きていない。

心当たりある人いる?


685 名前:デフォルトの名無しさん :03/07/30 08:56
Zバッファの問題では?

686 名前:デフォルトの名無しさん :03/07/30 08:56
ライトかマテリアルの設定のせいじゃないの?

687 名前:684 :03/07/30 13:51
症状は確かにzバッファが原因のようなんですが、2Dのポリゴンのz値変えたけど、
変化ないんですよね。
レンダリングの順番を変えて、背景用のBOXを最初にすると、問題が無くなる。
ライトに付いては、描画毎に使わない物を消してます。
2Dポリゴンの頂点はこれ。
float x, y, z, rhw;
DWORD color;


大きなBOXの中にカメラがあるシーンなんですが、なんとなく 写らないはずの
カメラの後方のBOXの面が影響してるのかな。


688 名前:デフォルトの名無しさん :03/07/30 14:15
宇治社中改どこにいった?

689 名前:デフォルトの名無しさん :03/07/30 19:21
みんなの心の中。

690 名前:デフォルトの名無しさん :03/07/30 19:29
ものすごく幼稚な質問で申し訳ありません。
現在DirectX8.1aでDirect3Dゲーム作ってるんですが、解像度を変えると、
2Dの文字の描画位置などが変わってきますよね。これってどのように対処
すればいいんでしょうか?視点を動かしたら、動かないし。当たり前といえば
当たり前なんですけど。メッシュのように扱えたら簡単なんですが。
あとLuna3rdというライブラリを使わせてもらってます。
お願いします_(._.)_

691 名前:690 :03/07/30 19:32
始める前に文字用のテクスチャを用意するのは勘弁したいです。
プレイする人の名前を入れるときに漢字などが入っていると
対処が難しくなるからです・・。

692 名前:デフォルトの名無しさん :03/07/30 19:47
解像度変えると2Dの文字の描画位置が変わるってことは、
恐らくスクリーン座標で指定していると思うんだが。違う?

693 名前:690 :03/07/30 19:49
>692
えーと、そうですが^^;

694 名前:デフォルトの名無しさん :03/07/30 19:51
まずお前は自分がうんこだと言う事を自覚しろ。

695 名前:デフォルトの名無しさん :03/07/30 19:54
それならサイズに比例して位置を調節すりゃいいだけでは…

640*480で(630,470)から表示すると文字が右下に表示されるけど、
800*600で(630,470)から表示すると中央から少し右下のあたりに表示されるとか、
そういう問題を言ってるんだよね?

696 名前:690 :03/07/30 19:58
>695
そうです。
でも実際のゲーム開発では、そんな面倒なことはしないですよね?
しかも視点を動かすと動かないですよ。
スクリーン座標をワールド座標に変換するんだと思うんですが、Lunaのライブラリで
そんなことができるのかわからな・・

697 名前:690 :03/07/30 20:04
あ・・ライブラリのソース見てみたら余裕で載ってました・・。
ほんとにすみません。
視点の行列や透視変換の行列を取得できなかったんで、諦めてました。

698 名前:デフォルトの名無しさん :03/07/30 20:05
ゲーム空間に配置するものと、スクリーン空間に配置するものを明確化せい。

ゲーム空間に配置するものは解像度が変わってもそう大して変わるもんではない。
スクリーン空間に配置するものは解像度が変われば当然表示位置も変わる。当たり前。
違う解像度でも同じ位置に表示したいと思ったら、それなりのことをしなきゃならん。

対策としては、スクリーンのサイズを仮想的に0〜1と考えて、
描画メソッドの前段階で0〜640等に写像して描画メソッドへ渡す関数を作るとか。

699 名前:690 :03/07/30 20:12
>698
>ゲーム空間に配置するものと、スクリーン空間に配置するものを明確化せい。
なるほど...

>対策としては、スクリーンのサイズを仮想的に0〜1と考えて、
>描画メソッドの前段階で0〜640等に写像して描画メソッドへ渡す関数を作るとか。
考えは分かるんですが、2Dと3Dがごちゃごちゃになって意味がわからなくなってます^^;
視点が変わっても同じところに描画する関数を作るのはかなり難しそうですね(汗




700 名前:デフォルトの名無しさん :03/07/30 20:14
Lunaのフォント関数って空間にしか書けないの?
スクリーン座標にそのまま掛けないんだったら不便だねぇ。

701 名前:デフォルトの名無しさん :03/07/30 20:49
文字を描くときだけ視点を正面に持ってくればいいだけ

702 名前:デフォルトの名無しさん :03/07/31 10:49
Direct3Dで、VGA(Mobility Radeon)ドライバが「2の累乗サイズ以外のテクスチャの作成」に対応しているかどうかを
D3DCAPS9.TextureCapsのD3DPTEXTURECAPS_NONPOW2CONDITIONALフラグを調べて判断しています。
しかし、D3DPTEXTURECAPS_NONPOW2CONDITIONALフラグがオフ(2の累乗サイズ以外のテクスチャの作成可能)にも関わらず、
2の累乗サイズ以外のテクスチャの作成に失敗していました。
そこで、VGAドライバを最新のものにアップデートして実行すると、D3DPTEXTURECAPS_NONPOW2CONDITIONALフラグがオン
(2の累乗サイズ以外のテクスチャ作成不可能)を正常に検知するようになりました。
質問ですが、「2の累乗サイズ以外のテクスチャの作成」に対応しているかどうかのチェックは、
D3DCAPS9.TextureCapsのD3DPTEXTURECAPS_NONPOW2CONDITIONALフラグを調べるのであっているのでしょうか?
ご存知の方がいれば、教えていただけないでしょうか?
よろしくお願いします。

703 名前:デフォルトの名無しさん :03/07/31 10:51
不可能だろうが可能だろうがどっちにしろ2^nで作ってるんで気にもとめなかったが、
ドライバ最新にしたらそうなったってことは、
単純に古いドライバが悪かったってこととちゃうんかな?

704 名前:702 :03/07/31 12:07
>>703
>不可能だろうが可能だろうがどっちにしろ2^nで作ってるんで気にもとめなかったが、
Direct3Dで、2D表示でキャラクタのアニメーションを実現する場合、
1.大きな2^nテクスチャーを作成。2.テクスチャにアニメーション用のパターンを描画。3.D3DXSPRITEで転送元範囲指定で最終描画。
の方法が一番安定してそうな気がします。
漏れの場合、最終描画時にパターンの鏡像反転描画をしたかったのでD3DXSPRITEを使わない、
1.複数のテクスチャを作成。2.テクスチャ1枚ごとにアニメーション1パターンを描画。3.DrawPrimitiveUPで最終描画。
の方法を使っています。DrawPrimitiveUPを使用する場合は、転送元範囲指定が出来ない
(テクスチャの回転をしない場合、SetViewportを併用すれば出来るが・・・)ので、1テクスチャ1パターンが基本です。
1テクスチャ1パターンを基本にしている現状で2^nのテクスチャサイズを使用すると、とんでもなく描画が遅くなりそうな気がします。
703さんは、おそらく前者の1,2の方法でやっておられるものかと思われます。
>単純に古いドライバが悪かったってこととちゃうんかな?
漏れも、そう思っているのですが、結構多くの種類のVGAでD3DPTEXTURECAPS_NONPOW2CONDITIONALフラグのオンを
正常に検知してくれない現象があるようです。(っていうことからチェックの方法を疑っています。)
2^nのテクスチャサイズがサポートされてないと動かない問題のプログラム(自作)が、
ここ ttp://www.bekkoame.ne.jp/ro/tn_ws1100/2ch/ にあります。DirectX9完全対応VGA必須で作ってしまったのが鬱です。
早く2の累乗サイズ以外のテクスチャの対応が当たり前の時代が来て欲しいです。

705 名前:デフォルトの名無しさん :03/07/31 12:13
>>704
>DrawPrimitiveUPを使用する場合は、転送元範囲指定が出来ない

転送元範囲って uv 座標でしょ?できるじゃん。


706 名前:デフォルトの名無しさん :03/07/31 12:20
D3DPTEXTURECAPS_NONPOW2CONDITIONAL は
「指定されている」と 2^n 以外のサイズのテクスチャを「ある条件下でのみ」作成できる
ことを示す。ちゃんとドキュメント読んでる?

707 名前:703 :03/07/31 12:32
・確かに俺は前者の方法でやっている。D3DXSPRITEは使っていないが。
・後者の方法はテクスチャの差し替えが処理速度へのペナルティとなっていて遅い。
・DrawPrimitiveUPでもUV座標の指定なんか当たり前にできる。
・2^n以外のテクスチャの対応は将来も実装されないと思われます。対応する必要がない。

708 名前:デフォルトの名無しさん :03/07/31 13:35
>>704
ワラタ 変なもん作ってるなぁ。

709 名前:704 :03/07/31 14:48
>>705
>転送元範囲って uv 座標でしょ?できるじゃん。
uvを使用するとテクスチャ内で球面スクロールした状態になってしまいます。
球面スクロールしてきた余計な部分を、描画しないようにSetViewportでクリッピングすれば、完全な転送元範囲指定が出来るけど、
回転を掛けたテクスチャの場合、SetViewportは矩形領域指定なので、D3DXSPRITEと同等の転送元範囲指定はダメぽ。
正直、漏れはuv座標の使い道をよく知りません。
D3DXSPRITEと同等の転送元範囲指定をuv座標で実現できる方法を知っていたら教えて欲しいです。
>>706
>「指定されている」と 2^n 以外のサイズのテクスチャを「ある条件下でのみ」作成できることを示す。
D3DPTEXTURECAPS_NONPOW2CONDITIONALは、関係なかったみたいです。うわーん (´Д⊂ヽ
「2の累乗サイズ以外のテクスチャの作成」が可能かどうか調べる方法を知っていら教えて欲しいです。
「IDirect3DDevice9::CreateTextureの戻り値をチェックする」以外の方法でお願いします。
>>707
>テクスチャの差し替えが処理速度へのペナルティとなっていて遅い。
IDirect3DDevice9::SetTextureを使いまくっています。おそらく、VGAに余計な負荷が思いっきり掛かってそうです。
>DrawPrimitiveUPでもUV座標の指定なんか当たり前にできる。
705さんへのレスのようなことは出来るのでしょうか?よろしくお願いします。
>2^n以外のテクスチャの対応は将来も実装されないと思われます。対応する必要がない。
テクスチャの差し替えのオーバーヘッドを考えると、実装は無駄っぽいです。

教えてくれくれ君状態ですが、よろしくお願いいたします。

710 名前:704 :03/07/31 14:57
>>708
>変なもん
モナー板で旬のネタを題材にしました。
http://aa.2ch.net/mona/
モナー板面白杉。

711 名前:デフォルトの名無しさん :03/07/31 15:21
>>709
>転送範囲と uv 座標
球面スクロールってのがよくわからんが。たぶん絵が潰れてリピートしてるんだろうな。

まず uv 座標が 0〜1 ということは理解してる?
テクスチャの幅が 16 だろうが 256 だろうが、テクスチャ座標は常に 0〜1 になる。

加えて、DirectDraw のようなビットマップ的座標表現とは違う。
ピクセルと整数座標が1対1では対応していない。
座標 0 は最初のピクセルの左端に、座標 1 は最後のピクセルの右端を指す。
詳しくはドキュメントのどっかにある、「テクセルとピクセル間の直接マッピング」を参照のこと。

712 名前:デフォルトの名無しさん :03/07/31 15:23
>>711
ちょっとまぎらわしいな。
文中の「ピクセル」は「テクセル」に読み替えてください。

713 名前:デフォルトの名無しさん :03/07/31 15:24
>>709
>2の累乗サイズ以外のテクスチャ
そのまんま D3DPTEXTURECAPS_POW2 だと思われ。

714 名前:703 :03/07/31 17:27
>>709
テクスチャ側のuv座標は0〜1なので、
例えば、256*256のビットマップで左上128*128の領域は(0.0,0.0)-(0.5,0.5)だ。
その領域をスクリーンの(100,200)-(228,328)に貼り付けたいのなら、

struct TLVertex {
  float x, y, z, w;
  float u, v;
};

TLVertex vl[4] = {
  { 100-0.5f, 200-0.5f, 0.0f, 1.0f, 0.0f, 0.0f },  // 左上
  { 100-0.5f, 328-0.5f, 0.0f, 1.0f, 0.0f, 0.5f }, // 左下
  { 228-0.5f, 328-0.5f, 0.0f, 1.0f, 0.5f, 0.5f }, // 右下
  { 228-0.5f, 200-0.5f, 0.0f, 1.0f, 0.5f, 0.0f }, // 右上
};

device->SetTexture( 0, hage );
device->SetFVF( D3DFVF_XYZRHW | D3DFVF_TEX0 );
device->DrawPrimitiveUP( D3DPT_TRIANGLEFAN, 2, vl, sizeof(TLVertex) );


あーもうここまで親切に書いたんだから理解して頂戴。

何故0.5fを引くかは深くは考えるな。
正確にはピクセルサイズが(1.0f,1.0f)なので、
ピクセルの角を合わせるために0.5fずらしてある。

715 名前:デフォルトの名無しさん :03/07/31 17:35
>>709
単にテクスチャステートの設定をしていないだけでは?

716 名前:デフォルトの名無しさん :03/07/31 17:56
>>714
D3DFVF_TEX0 → D3DFVF_TEX1 でそ。

717 名前:703 :03/07/31 18:03
>>716
その辺どうでもよい部分だったので適当に書いてたので…
ちなみに修正する前は( D3DFVFほにゃらら )って書いてた(゚∀゚)

718 名前:デフォルトの名無しさん :03/08/01 08:53
SetRenderTargetでテクスチャをターゲットにした状態で、
そのテクスチャをターゲットに書き込んだらどうなるんでしょうか?

719 名前:デフォルトの名無しさん :03/08/01 14:50


720 名前:  :03/08/01 21:44
WAVファイルの多重再生ってどうやるんですか?
開発言語はVBです。

「へぇ」を多重で鳴らしたいだけなのよ〜

721 名前:デフォルトの名無しさん :03/08/01 23:02
>>720
DupicateSoundBuffer

722 名前:山崎 渉 :03/08/02 02:04
(^^)

723 名前:デフォルトの名無しさん :03/08/02 05:39
VBの癖にDirectXなんぞ使わないでください。

724 名前:デフォルトの名無しさん :03/08/02 05:46
ここは釣堀なインターネットですね

725 名前:デフォルトの名無しさん :03/08/02 06:02
( ・∀・)つ〃∩ ヘェーヘェーヘェー

726 名前:デフォルトの名無しさん :03/08/02 20:48
DirectX8以降で画面全体のラスタースクロール方法は
どんな物があるんでしょうか?

ちょっと考えた物では、テクスチャに画面全体を描画して、
そのテクスチャをバンプマッピングで表示させればできそうですが、
必須環境の敷居が高くなりますよね・・・。


727 名前:デフォルトの名無しさん :03/08/02 23:45
何故バンプマッピング?
テクスチャにしているのなら頂点座標をいじるだけで済む

728 名前:デフォルトの名無しさん :03/08/03 09:43
726 がラスタースクロールとは何かを誤解してるとして。

バンプマッピングで実現できそう、且つラスタースクロールという言葉が似合いそうな効果か・・・。
どんなものか非常に気になるな。

729 名前:デフォルトの名無しさん :03/08/03 09:47
SDKのサンプルでBumpUnderWaterというのがあるじゃないですか。
あれで似たような効果が出せると思ったんですが、
確かに本当の意味でのラスター毎の変化は無理かな。

730 名前:デフォルトの名無しさん :03/08/03 10:13
>>729
やりたいことは、BumpUnderWater 相当のことではなくて、
単純なラスター毎のスクロールなんでしょ?
なら、スクリーンの縦ピクセル数だけ1ライン高さのポリゴンで分割して、
頂点座標やテクスチャ座標をいじるだけで済む。

731 名前:デフォルトの名無しさん :03/08/03 10:14
ああなるほど。良いところに目を付けてますな。
ただ、あれのバンプは水面を表現するために使ってるんで、
UVを動かすこと自体(=726のやりたいこと)とは別の処理なのです。

732 名前:デフォルトの名無しさん :03/08/03 11:37
プププお前ら本当に低レベルだなw

>>726タンは>>727>>730が偉そうに書き込んでるようなことは当然理解してんの!
初歩の初歩を恥ずかしげも無く、しかも教えてやってる風に書き込むなんてカコワルーwww

よく>>726を読めよ。「DirectX8以降で」て書いてあるだろ。
より高レベルな手法でのラスタースクロールを726タンは探求してるんだって分かるだろ?

>>731もわけ分からんこと書いてるしな。
BumpUnderWaterはまさしくUVを動かすサンプルだろうが。

733 名前:デフォルトの名無しさん :03/08/03 11:51
724 名前:デフォルトの名無しさん[sage] 投稿日:03/08/02 05:46
ここは釣堀なインターネットですね
724 名前:デフォルトの名無しさん[sage] 投稿日:03/08/02 05:46
ここは釣堀なインターネットですね
724 名前:デフォルトの名無しさん[sage] 投稿日:03/08/02 05:46
ここは釣堀なインターネットですね

734 名前:デフォルトの名無しさん :03/08/03 12:01
俺は >>732 にやんわりと同意しておくよ。

735 名前:731 :03/08/03 12:22
バンプマッピングって凹凸を表現することを表した言葉でしょ?
BumpUnderWaterは水面の凹凸により起こる屈折を表現するためにUV座標をずらしてるけど、
UV座標を動かすこと自体はなんでもない手法じゃん。
ラスタスクロールは何かの凹凸を表現したもんではないから
バンプマッピングではないと言いたかった訳ですが。

736 名前:731 :03/08/03 12:25
とはいえまあ、732の言うとおり、結果的には、
まさにUV座標を動かすサンプルであることには間違いないんだけど。
回りくどくてすまんな。

737 名前:デフォルトの名無しさん :03/08/03 13:45
726はUVすら理解してません。

738 名前:デフォルトの名無しさん :03/08/03 14:05
>>737
UVくらい誰でも知ってるだろ!
夏は特に強いから気をつけなくっちゃ!

739 名前:デフォルトの名無しさん :03/08/03 14:08
うるとらう゛ぁいおれっと

740 名前:デフォルトの名無しさん :03/08/03 20:37
正直、UVは解るがWがいまいち解らん。

741 名前:デフォルトの名無しさん :03/08/03 23:08
俺の名前はガンダムー
ガンダム星からやってきた最強ロボットだー
マッハパンチ!マッハチョップ!最強だぜー


742 名前:709 :03/08/04 01:12
>>711-717
ありがd。転送元範囲指定できますた。
球面スクロール -- FM-TOWNSの開発マニュアルに出てきたりします。

ラスタースクロールってこれですか?
ttp://www.bekkoame.ne.jp/ro/tn_ws1100/data/saitama.zip
D3DXSPRITEで1ラインずつ描いています。

743 名前:デフォルトの名無しさん :03/08/04 01:16
>>742
クリアしてない様だが

744 名前:デフォルトの名無しさん :03/08/04 01:30
球面スクロールってPC-9801GSにあったな・・・

745 名前:742 :03/08/04 01:31
>>743
uv座標を使っての転送元範囲指定は、漏れのマシン上のプログラムでうまくいきました。
D3DXSPRITEの機能をDrawPrimitiveUPで再現できそうです。

saitama.zipは、何ヶ月か前に作ったものです。(uvは使っていません。)
ちなみに、動作条件はDirectX9以上となっております。

746 名前:742 :03/08/04 01:43
>>744 PC9801ユーザー様
【FM-TOWNSの開発マニュアルの一部】
●仮想画面中の移動
    画面枠                               
┌─────────┬──┐                        
│┌────────┼┐  │ ・仮想画面が画面枠より大きい場合に設定可能です。
││           .││  │ ・円筒スクロール可能の場合、縦方向に仮想画面を越
││           .│→  │  えた設定が可能です。            
││           .││  │ ・球面スクロール可能の場合、縦横方向に仮想画面を
││           .││  │  越えた設定が可能です。           
├┼────────┘│  │                        
│└───↓─────┘  │                        
└────────────┘                        
   仮想画面

って書いています。

747 名前:デフォルトの名無しさん :03/08/04 02:02
>>745
αで白抜きしてるにも関わらず、毎フレームクリアせずにそのまま
重ねて描いてる様に見える。

起動して数秒で黒の固まりになる。


748 名前:デフォルトの名無しさん :03/08/04 02:05
白でクリアするかα切らなあかんと思うんだが、うちだけ?

749 名前:745 :03/08/04 02:35
saitama.zipには像がにじむ等のバグが残っています。
グラフィックボードの依存等で見れない場合もあると思いますので、
実行した時の画面をうpしますた。
ttp://www.bekkoame.ne.jp/ro/tn_ws1100/data/saitama.JPG

>>747
色々なVGAで動かしてみたのだけど、その現象には遭遇しませんでした。
>>748
VGA依存の問題かも・・・

750 名前:デフォルトの名無しさん :03/08/04 02:38
依存て何か特殊な事してんの?

>αで白抜きしてるにも関わらず、毎フレームクリアせずにそのまま
>重ねて描いてる様に見える。
とりあえず↑に思い当たる所は無いのね。


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