[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 1922] from OSASK BOARD
このメールは、OSASK伝言板に書き込まれた内容です。
この書き込みに返事を書く場合は、下のURLから書き込みを行なって下さい。
http://www.imasy.or.jp/~mone/osask/index.cgi?REFER=3b84ac58_7686
From: 川合秀実
Message-ID: 3b84ac58_7686
Date: 2001/08/23 16:10
Subject: Re: GUI周り
>これは想像してました・・・(やろうかとも思いましたので)。
やはり脳裏をよぎるのは誰でも同じ事らしいですね(笑)。
>GAPI_lineで行なっていると思うのですが、さすがに点ひとつ打つのに
>これだけのコードが走るのは・・・と、思い止まりました。
おっしゃる通りです。たかが点一つ打つだけであれだけのコードをくぐらなけ
ればいけないかと思うと悲しすぎます。
>(てっきり斜めにも引けるラインルーチンで boxを描くと想像してました・・・
>後々のアクセラレーションを考えれば、ここでの最適化よりも多くの実装を
>先に取られるかと・・・<批判ではありません)
いや、これはごもっともなご指摘です。
公開前の初期のバージョンでは、最適化されていないかなり手抜きのルーチン
だったのですが、486マシンなどで実行した時にちょっともたついている感じが
したので、最適化に手を染めてしまったのです。そのときはbox-fillしかサポー
トしていなかったのですが、その最適化の「気合」だけはずっと残って、boxル
ーチンを書く時も最適化してしまいました。VGAでもここまでは速くなる、とい
うサンプルだと思ってください(自慢できるほど速いわけではありませんが)。
>この発言の前に「今は、斜めには引けないラインと文字表示しかありません」
>との書き込みがありましたけど、斜めに引けないラインを実行する事が
>できるのでしょうか?(box利用を除いて)
えーっと、box-fill指定にして、始点と終点のx座標が等しければ縦ラインにな
ります(この場合、box-fillにふさわしく始点が終点よりも上になるようにしてく
ださい)。同様に、box-fillでy座標を等しくすることで横ラインも引けます。
いくつかの余計な処理はあるかもしれませんが、それでもまあまあの速度でラ
インを引けるはずです。
>DIBは デバイス独立ビットマップ(DeviceIndependentBitmap)と
>呼ばれる物で、Windowsの GDIで利用されています。
>Surface(DirectDrawSurface)は Windowsの DirectXで使用される物で、
>画面そのものであったり、スプライト矩形であったり、3Dのための
>テクスチャ領域であったりします。
>どちらもビットマップとスクリーン(描画領域)として扱われます。
なるほど。この説明を読む限りでは、僕のブロック転送コマンドのサポートで
カバー可能のようですね(2D描画に限定すれば)。ブロック転送コマンドは、実際
の画面モードとは無関係なビデオバッファをアプリケーションが設定し、その任
意の領域を実画面に反映させる機能を有しています。
ダイレクトにVRAMをアクセスできるようにしてしまうのが、当方としてはもっ
とも楽なのです。しかしそれは機種依存への道まっしぐらで、汎用的なアプリケ
ーションを書きたいと思うプログラマが、多大な場合分けに苦しむことになりま
す。それは僕の好む状態ではありません。
しかし間に何らかのルーチンが挟まっている以上、真の速度を引き出すことが
できないというのも真実で、いずれはVRAMのダイレクトアクセス機能も提供する
ことになるでしょう。
実は、先ほどからブロック転送コマンドを書き始めているのですが、もうすぐ
できてしまいそうです。あとはサンプル向きのネタがあればいいんですが・・・
。なにかいいネタはないでしょうかねえ(笑)。
>SDLは BeOSや Linuxや Windowsで互換性を見出すために開発されている
>GameSDKです(画面描画以外の機能もあります)。
>SDLと DirectXの API仕様や機能は非常に似通っていて(Surface概念等)、
>SDLを参考にされれば多くのマルチメディア系プログラマーの福音と
>なるのではと思われます。
見てみました。ファンクションはそんなに多くはなさそうなので、これを取り
入れることはそんなに困難ではないようです。
>さすがに DIBや DirectXの情報は世間に氾濫してますので
>少し検索頂ければと思います(多過ぎて、どこがとは紹介しかねます)。
>長文で構わなければ説明するのにやぶさかではありませんけど。
いえいえ、それはお世話になりすぎてしまいます。とりあえず、ブロック転送
コマンドをサポートさせますので、その仕様を見てから、足りないところをご指
摘ください。
>* Surfaceの概念やフルスクリーン表示、フリップ等
>DirectXや SDLで一般的に使用されている機能が OSASK上で
>動く日を夢見ています(直接 OSカーネルに依存する部分ではありませんけど)
飽くなき催促が続けられれば、そう遠い先ではないかもしれません(笑)。Soli
dさんご自身が書くという手もありますが。