鬱だ氏のう DirectX (Part 10)

このエントリーをはてなブックマークに追加
952951:03/11/18 04:47
試しに作ってみたけど、こんな感じでしょ?
ttp://gamdev.org/up/img/149.zip

修正したのはFrameMove()とConfirmDevice()だけ。
ほとんど>>945そのものだから、その関数以外の部分がおかしいのではないかと。
求めた座標から行列を作るところが間違ってるとか、行列を作るだけで
SetTransformし忘れたとか、GetProjMat()やGetViewMat()がおかしいとか。
953945:03/11/18 08:56
>950
ご指摘ありがとうございます。Z軸がないのにどうやって求めるのかは、こちらも
なやみました。ここらへんは私の知識不足です。

>951
サンプルありがとうございます。これから会社なので、今夜、ビルドしてみます
他の3DはでているんでSetTransformの忘れの確立は低いと思います。
とりあえず描画部分も含みで追ってみます。
954!945:03/11/18 09:00
>>952
動かないよー。
はじめはビルドすら通らないよー。
ためしにエラーが出た部分をコメントアウトして実行してみたけど
やっぱり動かないよー。
アクセスバイオレーションでるよー。
955954:03/11/18 09:35
>ためしにエラーが出た部分をコメントアウトして実行してみたけど
>やっぱり動かないよー。
>アクセスバイオレーションでるよー。
すまん。これは勘違い。
エラーが出た部分を消したら動いた。逝ってくる。
956デフォルトの名無しさん:03/11/18 11:52
現在、Direct3Dを勉強中ですが、YUVの画像データを、Direct3Dを用いて出力したいと思っています。
YUVのテクスチャを作成し、そこにYUVデータを書き込み、バックバッファにテクスチャを貼り付けて出力しようと思ったのですが、YUVのテクスチャ作成時にエラーになります。
(D3DFMT_A8R8G8B8のテクスチャしか作成できない)
何かアドバイス頂けないでしょうか?
957デフォルトの名無しさん:03/11/18 11:56
現在カメラからの画像を取り込んでリアルタイムで画像解析をして
いきたいと考えているのですがそういったことはDirect showを使用して
実現できるのでしょうか?
>>956
デバイスがサポートしているかはチェックして、
サポートしているのを当然確認した上での質問だよな?
そろそろ次スレ?
バックサーフェイスと使用するテクスチャのフォーマットってそろえるべきですか?
GeForce2MXだとそろえなくてもパフォーマンスの違いってないみたいなんだけど
他の環境でもそうなのかどうか気になって夜も眠れません
揃えることになんの意味があるのか、小一時間問いつめたい。
最近までDibSection使ってたヘボプログラマなんで
フォーマットが違うと転送に時間がかかるなんていう発想があるのです、

・・・Direct3Dじゃそんなの気にしなくていいってことですか?
963951:03/11/18 21:23
>>954
SDK古いんじゃない?
あれ、DirectX 9.0 SDK Update (Summer 2003)のウィザード使ったんだけど。
無変換でブロック転送しているわけではないのに、
フォーマットを揃えてどういった理由でパフォーマンスが変わると思ったのか、
具体的に説明してみてくれ。
DibSectionだと無変換じゃなくてもやっぱ同一じゃないとパフォーマンス落ちるだろ。
         ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < 次スレまだ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        |  愛媛みかん  |/
同一時て無変換でないの?何を変換してるわけ?
ハードウェアやデバイスドライバによりけりな気が・・・
>>956
D3DFMT_UYVY も D3DFMT_YUY2 もダメならかなり望み薄では?
うちでは
D3DXCreateTexture(pd3dDevice, width, height, 1, 0, D3DFMT_YUY2, D3DPOOL_MANAGED, &pTexture);
てな感じで出来てる (i865G)。

);
970945:03/11/19 01:26
>951
プログラムをダウンして、実行してみました。
まさにこれです。これがやりたかったのです。
これからソースの方をみてこちらのプログラムにくみこんでみます。
ありがとうございます。
971951:03/11/19 05:29
>>970
ウィザードのコードから修正した部分だけインデントがタブになっているから、
それでどこをいじったか調べておくれ。
でも、>>945のコードとやってること全く一緒でがっかりするだけだと思うが。

というわけで、問題があるのは他の場所ではないかと。
DirectX9をインストしてDirectX7でプログラム作成できます?
yattemastu
974デフォルトの名無しさん:03/11/19 22:07
質問させていただきます。
フルスクリーンモードでフルカラー(24bit)リアルタイム動画再生をしていて、
低解像度ではリアルタイム再生が可能ですが、sxgaサイズではスロー再生となってしまいます。
実装方法としては、動画像データはシステムメモリにあらかじめ読み込んでおいて、表示の際にバックサーフェスにbltfastで
ブロック転送して、flipでプライマリサーフェスに切り替えています。原因はbltfastの転送スピードが
関係していると思われるのですが、何か高速化する方法はないのでしょうか?
ちなみにビデオカードはG550で物理的な条件を満たしているはずです。
どうぞよろしくお願いします。
>>974
DirectX 7 のオーバーレイサーフェスを使うのが良いと思います。
D3D が高速ならテクスチャで表示するのもありかもしれません。。。
最近の馬鹿は、テクスチャに転送するまでの負荷を脳内除去するのか。
>>976
だーかーらーそういう書き方は良くないとおもうよ、スレが荒れる原因になる。

「テクスチャに転送するまでの時間は考慮されてますか?」って書いてはどうかなl
・知ったか厨房用語

「最近の○○は〜〜なのか?」
「連邦のモビルスーツは化け物なのか?」
>>977
ある意味イヤミになりそうな気がする。
>>976
ごめんなさい、ちょっと意味がわからないんだけど、
動画側のサイズではなく表示側が sxvga になると低速になるってことだから、
D3D でやるならテクスチャを更新するのにかかる時間は関係ないと思ったんですが。
テクスチャのサイズは動画サイズ固定で単純なポリゴン表示なので fill rate 勝負か、と。

>動画側のサイズではなく表示側が sxvga になると低速になるってことだから、
どこにそのような文面が記載されているのでしょうか?
bltfastのブロック転送の意味はお分かりになりますか?
仮に24FPSで転送したとすると、
1,280×1,024×3×24=90MB/sec
たしかにAGPバスなら論理的な用件は満たしているが、
システムメモリーからの転送で物理的にマシンが追いつくのか?
間に合わなければフレームスキップするしか無いと思うが。
>>982
いや、普通に考えて解像度が SXVGA の動画ってありえないかなー、と。
982 の人は SXVGA の動画を扱っていると考えたわけですか?
>>974
sxvgaにしたときにVRAMは足りてるかな?(まあ普通は足りてるよな・・・)
不足しててバックサーフェースとプライマリが単純なFlip動作できなかったら
表示には転送しなきゃならなくなりそうだけど。
もう一度お尋ねしますが、bltfastのブロック転送の意味はお分かりになりますか?
bltfastで転送元と転送先のブロックサイズを、どのようにして変化させるおつもりですか?
>>985
G550というのはお読みになっていらっしゃいますか?
VRAMが足りなければ確保に失敗するので、嫌でも気が付くとお思いになりませんか?
>>986
たぶん動画サイズは固定なんだろうから、システムメモリにSXVGAサイズのイメージを持って
bltfast/flip なんかしないで、テクスチャかOverlay Surface を使うのが良いんじゃないか、と
思ったわけです。

986 の人はどんな解決策を提案してるんですか?
ところで、974=982=986=987?
ちょっと質問の仕方として興味深いんで。。
>>988
bltfastの他にbltがあるのはご存じでしょうか?
それとテクスチャが使えるレベルのビデオカードなら、bltでハードウェアの拡大処理が行えるのはご存じですか?
わざわざテクスチャに転送することによって、無駄な負荷を増大させることはご理解いただけませんか?
解決方法は既に示した通り>>983なのですが、お読み頂けていないのでしょうか?

>>989
!974
>>990
blt による拡大縮小で(例えば320x480 なり 640x480なりの)動画を SXVGA フルスクリーンに
描画したことありますか?せいぜい GDI の数割増し程度で、たいしたアクセラレーションは効き
ませんよ。また、Blt だと拡大時に biliner filter すらかからないので、見た目的にもかなりアレ
な感じになります(元がジャギー感を生かしたドット絵とかなら別だけど)。

D3D の Texture あるいは DX7 の Overlay surface であれば、それなりに補完してピクセルの
目立たない拡大になります。
いや、Bltの拡大ってバイリニアフィルタがかかるのが普通だが…
以前試したときはRadeon256でシステムメモリサーフェスからのBltの場合は
かからなかったけど、今は知らない。
そんなの普通にしてもらったら迷惑なわけだが
迷惑だけど付いているのがよく問題になっている。
>>991
>GDI の数割増し程度で、
テクスチャに転送してからレンダリングをかけるよりは遙かに早い。
しかもターゲット環境は3Dのパフォーマンスが著しく悪いG550。

>Blt だと拡大時に biliner filter すらかからないので
だれもフィルターの話などしていない。
フィルターがかからないオーバーレイがどうのこうのといっていたのに、
テクスチャの速度の面で問題を指摘されると別の話で話題を逸らそうとする。

この人、勝手に自分に都合のいい条件を設定して、
間違いを決して認めようとしないタイプですな。
そもそもソースが小さいという前提を勝手に決めつけているのが間違っている。
ソースが小さいのであればフルスクリーンの解像度を落とせば済むだけの話だが、
わざわざそうせずに、
>バックサーフェスにbltfastでブロック転送
というのが条件になっている上、ソースのサイズが小さくていいなどどこにも書かれていない。
997 ◆4/ZtI/qiqk :03/11/21 09:44
話の途中で悪いですが、
ちょっと次スレ立ててきますよ。
999 ◆4/ZtI/qiqk :03/11/21 10:14
こっちやっちゅーねん

鬱だ氏のう DirectX (Part 11)
http://pc2.2ch.net/test/read.cgi/tech/1069376986/
1000 ◆4/ZtI/qiqk :03/11/21 10:15
おまけで1000げっちゅ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。