パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

MicrosoftがLonghornの3DUI公開」記事へのコメント

  • 画面が3Dになっても、操作が3Dじゃないから、
    今のままだとあまり便利にはならないでしょうね。
    とはいえ、画面の描画に今までの遅かったGDIではなく、
    ゲーム用に高速化されている(高速化されていく)
    DirectXベースの描画になるという点については、
    少しは期待してよいのではないかと思います。
    • by Anonymous Coward
      > とはいえ、画面の描画に今までの遅かったGDIではなく、
      > ゲーム用に高速化されている(高速化されていく)
      > DirectXベースの描画になるという点については、
      > 少しは期待してよいのではないかと思います。

      素朴な疑問なのですが、DirectXベ
      • いい加減に書くと、DirectXが出来た理由が
        「GDIクソだぜ!俺たちが作ったらこうなるんだ!イェーイ!!」
        という理由で作られたからです。

        これではあまりにひどいので、普通に書くと
        あまりに煩雑化した階層構造を経由して描画するGDIとは異なり、
        グラフィックドライバーに直接命令するイメージに近い形を実現しようと
        しているから、GDIに比べて高速であると思われる。
        という感じでどうでしょうか?(誰に聞いてるんだか…)

        ちなみに僕はWebブラウザの文字の描画がどのように行われているか
        分からないので、その例に関してはお答えしかねます。

        以下、長いので面倒
        • by Anonymous Coward
          > あまりに煩雑化した階層構造を経由して描画するGDIとは異なり、
          > グラフィックドライバーに直接命令するイメージに近い形を実現しようと
          > しているから、GDIに比べて高速であると思われる。

          おお!
          イメージがつかめました。

          ところで…

          > マルチタスクで色んな場所が一斉に更新される
          > /大量の文字を画面に描画しようとすると、画面の更新は一度に行った方が
          > 速くなると予測されます。

          ここが分かりません。

          マルチタス
          • そうなんですよ、そこが同じだと思うのが普通なんですよ。
            でも、残念ながら同じと思っているのが間違いなのです。

            実際にGDIではどう処理するかと言うと、
            1.更新すべき場所のメモリ空間を別のバッファに退避する
            2.退避したエリアを初期化する
            3.問題の場所に必要なデータを描画する
            4.1に戻る
            となっているようです。
            だから、処理落ちしたウィンドウの部分が灰色に抜けたりすると思います。
            で、これが複数のウィンドウからガンガン更新要求がかかるわけで、
            1-4のループががんがん発生するわけです。

            DirectXを使うと、
            1.画面用バッファの初期化
            2.文字の描画
            3.すべての文字を描画するまで2を行う
            4.垂直同期の時間がきたら画面用バッファからメモリへのデータ転送
            となります。
            つまり、1文字書いても256文字書いても同じだけの初期化処理で済むのです。
            単純に1命令1回の時間を消費するとして、100文字の描画をしたとすると、
            処理が必要な量は

            GDI:
            文字の描画範囲を別のバッファに退避:100回
            文字の描画範囲の初期化:100回
            文字の描画:100回
            合計:300回

            DiretX:
            画面バッファ全体の初期化:1回
            文字の描画:100回
            画面バッファから画面へのメモリ転送:1回
            合計102回

            これだけ処理すべき量が減ります。

            これが分かると、「PS2ってWindowsなんかよりハイスペックだよね」
            などというハズカシイ発言をしなくて済むようになります。
            親コメント
            • by Anonymous Coward
              あの~

              >実際にGDIではどう処理するかと言うと、
              >1.更新すべき場所のメモリ空間を別のバッファに退避する
              >2.退避したエリアを初期化する
              >3.問題の場所に必要なデータを描画する
              >4.1に戻る
              >となっているようです。

              これはUSER(32)の範疇であって、GDIはぜんぜん関係ないと思うんですけれど。
              • すんません、一部ボクも混同して記憶してます。
                正確には、USER32(窓)の中でGDIの描画オブジェクト
                (線とか円とか)が存在して、その範囲内に描画を行う、でしたかね?
                でも、GDI使う=USER32も使うだと認識していますので、
                全く関係ないとも言い切れないと思います。

                で、1ですが、マルチウィンドウの基礎的な処理として、一応やってると思って
                たんですが、Windowsってやってないんですね、すんませんでした。

                2に関しては、背景消去(前景も消す?)のつもりで書いてます。
                再描画要求の構造体の初期化は、もしあったとしたら完全に記憶からとんでます。

                所詮は数日で得た知識。未熟者がでしゃばりすぎました。
                親コメント
              • by Anonymous Coward
                あ、いや、自分は逆にDirectXの画面管理とか良く知らないので、お互い勉強になったってことでひとつ(^^;

                そもそも現在のWindowsの描画方法は、昔の貧弱な描画能力を前提としている部分も多々あると思いますので、
                古い方
              • by Anonymous Coward
                ようするに、GPUに最小の描画要求をするようにCPUが複雑な最適化
                をしていたのが、見えるもんは全部テクスチャードポリゴンにして
                CPUはおおざっぱな作業しかしなくてよくなったから、CPUの負荷が
                へるってことだろう。
              • by Anonymous Coward
                そのテクスチャは誰がレンダリングするの?
              • by dartei_harry (6792) on 2003年05月11日 2時11分 (#313416) 日記
                たぶんそれもGPUかと…
                親コメント

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

処理中...