2011-11-08 15 views
-1

における抗エイリアスの丸い四角形を描画し、私はC++でLinuxのコンテキスト(Ubuntuの)で抗エイリアス丸い四角形を描画したいと思います。私はすでにSDL_gfxを試しましたが、アンチエイリアシングはroundedBoxシェイプでは使用できません。 SDL_Drawについても読んでいますが、どちらもアンチエイリアシングを提供していないと思います。タイトルで書かれたように、C++

誰もが形状のこの種を提供するフレームワークを知っているか、誰もが(光)アンチエイリアシングアルゴリズムを知っていれば(私はリアルタイムビデオ処理のためにこれを必要とする)場合、私は求めています理由です。


はあなたにVjoをありがとう、私は本当に私のソフトでOpenGLを使用したくない...ところで、私はアンチエイリアシングされ丸い四角形を描画するための別の方法を考え出したと思います!私が最初の記事で説明していない何

は、私はすでに私のプログラムでSDLとOpenCVのを使用していますということです。だから私は考えていた:

  • 1つのチャネルを描くには、SDL_gfx
  • で四角形を丸めたシンプルな長方形
のアルファチャンネルとして結果を使用してアンチエイリアスアルファ
  • を取得するためにcvSmoothでそれを滑らかに

    あなたはどう思いますか?私は今夜​​それを試してみよう!

  • +0

    それは働いていましたが、まだ少し醜いです。 – rkohser

    答えて

    0

    アンチエイリアス処理が必要なシェイプの唯一の部分は、コーナーです。各コーナーに1つずつ4つのアンチエイリアスされたクォーターサークルを描き(Xiaolin Wuのサークルアルゴリズムが最善の方法です)、ギャップを単純な線で橋渡しします。形状が(つまり、回転されない場合、すべての直線が垂直または水平のいずれかになり、そうでない場合は呉のラインアルゴリズムを使用し、Bresenhamの非アンチエイリアスラインアルゴリズムを使用。呉のアンチエイリアシングアルゴリズムは、典型的には最速であり、非常に良好な結果を与える。

    結果を最適化し、x86アセンブリプログラミングに精通している場合は、インラインアセンブリ言語を使用して描画ルーチンを作成することをお勧めします.Wuのラインアルゴリズムは、わずか15命令で記述できます。約40-50の指示。

    関連する問題