Re: Dxlibで可能かどうか教えてください。 ( No.1 ) |
- 名前:初心者 日時:2017/04/11 11:35
前回の訂正です。
>イメージとしてはDXLibに全体を描画させておいて指定された表示範囲をPictureBoxにコピーするみたいな処理が
>速度的にもいいのかな?とは思っているのですがDxLibで可能かどうか勉強不足の為わかっておりません。
直接DXLibにPictureBoxのハンドルを指定して描画できるようなので上記は間違いですね。すみません。
|
Re: Dxlibで可能かどうか教えてください。 ( No.2 ) |
- 名前:管理人 日時:2017/04/11 23:40
> C#にて大きな地図画像(14800ピクセル×11600ピクセル、ピットの深さ24)を表示しその地図画像に対して
> 以下の処理を行いたいと思っています。
まず 14800×11600 のテクスチャを扱えるグラフィックスデバイスが必要です。
例えば私が使用しているPCに搭載されているグラフィックスデバイス( GeForce GTX 660 Ti )は
対応している最大テクスチャサイズが 16384 なので、可能です。
逆に扱える最大テクスチャサイズが 14800 以下だと厳しいです。( 一応グラフィックスデバイスに頼らない
ソフトウエアレンダリングで扱えますが、グラフィックスデバイスを使用する場合より非常に低速なので
14800×11600の画像を扱ったら動作がカクカクになってしまいます )
PCに搭載されているグラフィックスデバイスが対応している最大テクスチャサイズは、DXライブラリを
使用したプログラムを起動すると作成される Log.txt の中に出力されている
「最大テクスチャサイズ 幅:16384 高さ:16384」という部分で確認することができます。
( 大体 110行目付近に出力されています )
> (1)表示位置を中心に拡大/縮小
可能です
> (2)範囲指定した部分の拡大/縮小
可能です
> (3)背景図とポリゴン図形(100万個)の重ね合わせ表示/非表示
ポリゴン図形とは何でしょうか?
> (4)背景図とbmp画像(48ピクセル×48ピクセル、ピットの深さ24、500個)の重ね合わせ表示/非表示
恐らく可能だとは思いますが、「ピットの深さ」とは何でしょうか?
> (5)平面直角座標系で表示
直接平面直角座標系を扱う機能はありませんので、平面直角座標系をDXライブラリで扱える
座標系に解釈するプログラムを自前で作成される必要があります
> (6)dm形式ファイルの表示
dm形式のファイルの読み込みや表示には対応していませんので、dm形式のファイルを読み込んで
扱うプログラムを自前で作成される必要があります
こちらでファイルの仕様が確認できますが、
http://www.rinya.maff.go.jp/kanto/apply/publicsale/kanri/pdf/furoku8-1.pdf
ファイルの中身がどのようになっているかに加えて、地形図に関する知識も必要そうです…
|
Re: Dxlibで可能かどうか教えてください。 ( No.3 ) |
- 名前:初心者 日時:2017/04/12 11:48
沢山の質問にお答え頂きどうもありがとうございました。
もう少しだけ質問させてください。
グラフィックの説明有難うございました。
私のPCも「最大テクスチャサイズ 幅:16384 高さ:16384」でしたので大丈夫そうです。
>> (2)範囲指定した部分の拡大/縮小
>可能です
これはpicterboxのマウスdown、move等のイベントでDrawExtendGraphに範囲座標を渡して拡大縮小するというような処理でしょうか?
>恐らく可能だとは思いますが、「ピットの深さ」とは何でしょうか?
ビットの深さ(色深度)です。誤記すみません。
>ポリゴン図形とは何でしょうか?
すみません、ポリゴン関数で作図する図の事を言いたかったのですが変な文言になってしまいました。
描画する数が多いのでポリゴン関数があるかどうか教えて頂きたかったのです。
>座標系に解釈するプログラムを自前で作成される必要があります
立ち上がり時に座標変換を行うか何か方法を考えます。
ただ、データ数が多いので平面座標とDXライブラリ用の座標を常に2つ確保しておくのも何ですし、かといって表示更新するたびに座標変換するもの
処理時間が無駄になるし平面座標も情報として表示したいので中々難しいです。
>ファイルの中身がどのようになっているかに加えて、地形図に関する知識も必要そうです…
ありがとうございます。dm形式ファイルもいづれは表示できればと思っている段階ですので頑張って解析したいと思います。
宜しくお願いします。
|
Re: Dxlibで可能かどうか教えてください。 ( No.4 ) |
- 名前:管理人 日時:2017/04/13 00:15
> これはpicterboxのマウスdown、move等のイベントでDrawExtendGraphに範囲座標を渡して拡大縮小するというような処理でしょうか?
はい、関数 SetDrawArea で描画範囲を狭めた状態で DrawExtendGraph を使用するか、DrawRectExtendGraph を使用します
// 画像の指定矩形部分のみを拡大描画
// DestX1, DestY1, DestX2, DestY2 : 描画先の矩形( スクリーン座標 )
// SrcX, SrcY : グラフィックハンドル内の拡大描画したい範囲の左上座標
// SrcWidth, SrcHeight : グラフィックハンドル内の拡大描画したい範囲の幅と高さ
// GraphHandle : グラフィックハンドル
// TransFlag : 透過処理を行うかどうかのフラグ( TRUE:行う FALSE:行わない )
int DrawRectExtendGraph( int DestX1, int DestY1, int DestX2, int DestY2, int SrcX, int SrcY, int SrcWidth, int SrcHeight, int GraphHandle, int TransFlag ) ;
> ビットの深さ(色深度)です。誤記すみません。
了解です、24ビットカラーの画像の読み込み( BMP画像など )にも対応しています
> すみません、ポリゴン関数で作図する図の事を言いたかったのですが変な文言になってしまいました。
> 描画する数が多いのでポリゴン関数があるかどうか教えて頂きたかったのです。
三角形を描画する関数でしたら DrawTriangle がありますが、大量のポリゴンを1度に描画されたいということでしたら
DrawPrimitiveIndexed2D という関数があります
丁度らいよんさんのご質問のご返答で DrawPrimitiveIndexed2D を使用して6角形を大量に描画するサンプルを
作成しましたので、よろしければらいよんさんのご質問のスレッドの No.3 のレスをご覧ください m(_ _)m
<多角形の描画について>
https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4082
|
Re: Dxlibで可能かどうか教えてください。 ( No.5 ) |
- 名前:初心者_解決 日時:2017/04/18 16:55
管理人様、返答ありがとうございました。
参考にさせていただきまきます。
PS
出張に出てまして返事が遅くなってしまい申し訳ありませんでした。
|