Anti Aliased Line
http://www.geocities.co.jp/SiliconValley-Sunnyvale/6769/dmd/graphictest040627.zip
http://www2.starcat.ne.jp/~fussy/algo/algo1-2.htm
を参考にして線分のClipping処理を付けた。
これで用意しているバッファより大きな座標を指定しても
落ちる事が無くなるはず。
傾きが垂直または平行の場合の描画処理を専用に用意。
(割り算で零除算しないように)
これで一応現実のアプリケーションでも使えるんじゃないだろうか。D言語のコンパイラが動いて、SDLが動いて、なおかつ画像バッファが32bit、っていう制限は付くけれど…。
…。まぁそういう非現実的な考えは捨てて、C言語で組みなおそうかな。。
品質に関しては、おそらくアルゴリズムの特性からか、しょうがないんだろうけれど、輝度に色むらが出る感じ。2pixelではなく3pixel利用してぼかすアルゴリズムを使えば気付きにくくなるかもしれない。
速度に関しては速めようと思ったら、asmよりPixelShaderでやるのがよさそうな気がするなぁ。。多分1000倍くらい速くなるんじゃないだろうか。。OpenGLSLとかやるのがよいかなぁ。。