【发布时间】:2012-04-21 02:44:12
【问题描述】:
我有四个 2d 顶点 A B C D 的旋转矩形, 我需要在像素缓冲区中(有效地)光栅化/绘制它 用 setpixel(x,y,color)
怎么做?
我正在尝试一些类似的代码
// convertilg a b c d do up down left right,
// calculating some dx_left dx_right on y--
// etc (frustrating on special cases when there are 2 up_y vertices in same line etc)
for(;;)
{
drawhorizontalline(y, xstart, xend, color);
if(y==downy) break;
y--;
xstart+=dxstart;
xend+=dxend;
if(y==lefty) dxstart = dxright;
if(y==righty) dxend = dxleft;
}
但这是最令人沮丧的(非常容易出错且最令人沮丧) 我真的厌倦了昨天整天调试这个,我需要找到 也许一些工作代码而不是尝试调试这个
【问题讨论】:
-
你通常会从实现一个画线算法开始(例如,Bresenham's),然后调用它四次,矩形的每一行调用一次。谷歌搜索“布雷森汉姆算法”(或类似的东西)应该会出现 很多 的结果。
-
我需要填充矩形 - 水平线光栅化会更快 - 就像我的方法一样 - 但我厌倦了调试这个
-
This question/answer 将帮助您完成 95-99% 的工作。
-
用大量对
setpixel的调用填充一个矩形通常效率不高。 -
@grunge Fightr 好吧,你看到这个问题有一段时间不活跃了,你还需要更好的答案还是你已经做到了。如果您需要特定的代码,请用您需要的参数(颜色、纹理、...)评论我
标签: c algorithm 2d graph-algorithm rasterize