Re: 図形描画関係での要望です ( No.1 ) |
- 名前:管理人 日時:2014/11/17 03:04
角度指定可能版の DrawCircle を実装するより、DrawRoundRect を実装するほうが簡単だったので、
DrawRoundRect を追加しました
// 角の丸い四角形を描画する
int DrawRoundRect( int x1, int y1, int x2, int y2, int rx, int ry, int Color, int FillFlag ) ;
// Zバッファに対して角の丸い四角形を描画する
int DrawRoundRectToZBuffer( int x1, int y1, int x2, int y2, int rx, int ry, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ;
ただ、内部で SetDrawArea と DrawOval と DrawBox を組み合わせた突貫実装なので、
FillFlag を FALSE にして輪郭線だけ描画する指定にした場合、円の半径である
rx と ry の値の差を極端にすると線が途切れます
上記関数を追加したバージョンをこちらにアップしましたので、よろしければお試しください m(_ _)m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用
http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用
http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
|
Re: 図形描画関係での要望です ( No.2 ) |
- 名前:だみあん 日時:2014/11/18 05:32
機能追加、ありがとうございます。
もともと、画面遷移エフェクトなどでSetDrawAreaを使用した物を
ZBufferを使った物に書き直していて、そこでかなりの速度差を実感していまして。
SetDrawArea=遅い。
という固定観念を持ってしまっていた様です。
そこで、透過出来る形のRoundRectというと、マスクを使う方法はすぐに浮かんだのですが
ZBufferで実装するには用途的に局所的すぎるかなとおもい
(別の場所でZBuffer使用中の中で入れ子に使用等になると問題が起きそう)
SetDrawAreaを使わない方法でのRoundRectの実現方法として
角度指定版のDrawCircleが欲しかった、と言うところだったのです。
が、今になって思えば、
画面遷移エフェクトなどでの、画面を数十に細切れに分割するためにSetDrawAreaを何度も使う
と言うような用法ゆえにZBuffer使用版に置き換えたときの速度差が如実に出たのであって
RoundRectのためのたった1回や2回のSetDrawAreaでは、
そんなコストは掛からないですよね……。
ということで、DrawRoundRectありがたく使わせていただくことにします(ぺこり
それから、
同じ図形描画系というのと、RoundRectの用途にも使えるということで
一緒くたに書いてしまった所為で混同されてしまったのかも知れませんが
(スレッドを分けようかとも思ったのですが、共通する部分もあったもので……)
DrawTriangle
DrawQuadrangle
(と一応、可能であればDrawCircleの角度指定版も)
のToZBuffer版の追加の要望はRoundRectとはまた別の話で
こちらの方は、要は、ZBufferをつかって斜めにマスキング出来る方法が欲しい。
と言うことです。
DrawCircleの角度指定版のToZBuffer版というのも
斜めにマスキング出来る機能の一例としてあげたために
余計に混ざってしまったのかも知れません。
なんだか管理人様、最近お忙しいとのことなので誠に恐縮なのですが
特に急いでいるワケでもありませんので、また落ち着いたときにでも
ToZBuffer系の機能追加を考えていただけますでしょうか。
|
Re: 図形描画関係での要望です ( No.3 ) |
- 名前:管理人 日時:2014/11/19 02:55
あ、すみません、申し忘れていました、No.1 のバージョンに ToZBuffer の関数も追加済みです
int DrawTriangleToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ;
int DrawQuadrangleToZBuffer( int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ;
int DrawRoundRectToZBuffer( int x1, int y1, int x2, int y2, int rx, int ry, int FillFlag, int WriteZMode /* DX_ZWRITE_MASK 等 */ ) ;
よろしければお使いください
|
Re: 図形描画関係での要望です ( No.4 ) |
- 名前:だみあん(済み) 日時:2014/11/26 04:48
>ToZBuffer の関数も追加済みです
まさかすでに追加されているとは思いませんでした。
おかげさまで、斜めにマスキングした画面遷移のエフェクトを
作ることが出来ました。
機能追加ありがとうございました(ぺこり
|
|