DXライブラリの解析

アバター
せんちゃ
記事: 50
登録日時: 15年前
住所: 江別市東野幌町
連絡を取る:

DXライブラリの解析

投稿記事 by せんちゃ » 12年前

DrawBox、DrawLine、DrawCircleなどの図形描画関係を自分も作ろうと思っていたのですが
純粋にピクセル操作で図形描画をする機能はDirectXにはない模様。

じゃあDXライブラリの図形描画はどうやっているんだろうと思い中身を見てみます。
ひょっとしてGDIを使ってるんじゃないかと思ったのですが、その気配はなかったようです。

DrawBoxの一番下の関数を見た感じだとポリゴンを作ってるっぽい感じ
DrawCircleはどうやってるんだろうとみると前に会社で先輩に教えてもらったアルゴリズムを使って描画しているような感じが。。。
sin、cosを使わないで円を描くための座標を求めるアルゴリズムがあるのだとかで、「ブレゼンハムのアルゴリズム」というのがあるそうです。
ループを使って座標をずらしながらそれを頂点バッファに格納して一定周期で描画というようなことをしているっぽい。

この辺の考え方は今後仕事でも使えそうなのでこれを機に覚えたいです。
よし、明日(もとい今日)から勉強だぜ

アバター
みけCAT
記事: 6734
登録日時: 14年前

Re: DXライブラリの解析

投稿記事 by みけCAT » 12年前

sin、cosを使わないで円を描くには、sqrtを使う方法があります。
円の方程式x^2+y^2=r^2を変形して、y=sqrt(r^2-x^2)とすると、円の上側が描けます。
y=-sqrt(r^2-x^2)で円の下側が描けます。

アバター
せんちゃ
記事: 50
登録日時: 15年前
住所: 江別市東野幌町
連絡を取る:

Re: DXライブラリの解析

投稿記事 by せんちゃ » 12年前

> みけCAT さん
おお、sqrtを使うという方法もあるのですね、参考になります。
しかしsqrtだと若干計算速度が気になってしまいそうですね。