2016-05-28 92 views
0

どのようにして(矩形と線以外の)さまざまな図形を描き、C++でSDL2を使って塗りつぶすことができますか?私はSDL2_gfxを使ってみましたが、SDL2_gfxをコンパイルできませんでしたので、試してみてください。私はコンパイルされたSDL_gfxを見つけましたが、サーフェスではないレンダラーを使用しているので使用できません。描画ポリゴンは単純ですが、私はちょうどポイントと描画線を計算することができますが、どのようにそれらを埋めるのですか?そして、私はどのように円を描くのですか?SDL2の描画と塗りつぶし

誰かがコンパイルされたSDL2_gfx(SDL2_ttfやSDL2_imageと同じ方法)を持っていれば、それを私に送ることができますか?

ありがとうございました!

+0

あなたは、SDL2_gfxのコンパイル済みバージョンはあなたのために働いていないと言いました。他の誰かがそれを編集したら、それはうまくいくと思うのはなぜですか? – HolyBlackCat

+0

私はSDL2_gfxをコンパイルできないと言った。つまり、私はSDL2_gfxを試すことができませんでした。しかし、あまりにもあいまいなので、私は投稿を修正します。 –

+0

[円を描く](https://en.wikipedia.org/wiki/Midpoint_circle_algorithm)に。シェイプを塗りつぶすには、ピクセル単位で行うのは可能ですが非常に非効率的です。あなたは、SDL2_gfxをコンパイルし、エラーの助けを借りて時間を費やすことをお勧めします。 – coyotte508

答えて

0

ポリゴンを塗りつぶしたい場合は、Google検索で効率的なアルゴリズムhereが得られます。 SDL2_gfxのやり方をコピーすると、ソースにアクセスできるようになりますか?円を描画するための

は、そこthe Midpoint Circle algorithmは、さらにいくつかのコードを与えられている:

void DrawCircle(int x0, int y0, int radius) 
{ 
    int x = 0, y = radius; 
    int dp = 1 - radius; 
    do 
    { 
     if (dp < 0) 
      dp = dp + 2 * (++x) + 3; 
     else 
      dp = dp + 2 * (++x) - 2 * (--y) + 5; 

     putpixel(x0 + x, y0 + y, 15);  //For the 8 octants 
     putpixel(x0 - x, y0 + y, 15); 
     putpixel(x0 + x, y0 - y, 15); 
     putpixel(x0 - x, y0 - y, 15); 
     putpixel(x0 + y, y0 + x, 15); 
     putpixel(x0 - y, y0 + x, 15); 
     putpixel(x0 + y, y0 - x, 15); 
     putpixel(x0 - y, y0 - x, 15); 

    } while (x < y); 
} 

しかし、何が本当に行われるべきことはSDL2_gfxをコンパイルの問題を解決する上で助けを求めています。 SDL2_gfxのソースファイルをプロジェクトに直接入れることはできませんか?プロジェクトのサブフォルダに入れることができるファイルは4つだけです。

+0

私はおそらく私のプロジェクトの下にソースファイルを置くでしょう。そしてSDL2のソースコードはすべてオープンソースなので、SDLやSDL-gfxのホームページに行ってみてください。これまでのところ、ソースコードがあり、コードを見ることができます。好奇心のためにSDL2のfill rect関数を調べましたが、最終的に何が起こっているのか分かりませんでした。私はアセンブリの部分とたくさんのマクロの間のどこかで失われてしまった。 –

関連する問題