■過去ログ置き場に戻る■
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.