抗锯齿线

A

Anaxetus

Guest
有没有人有一个良好的C代码图形一些“抗锯齿”行。这是一些抖动角落找寻(如在一个模拟的范围)线。
其目的是在PC编程环境中使用。

关心,

 
试试这个...

我猜想:

颜色(红,绿,二)是漂浮在[0,1]的空间(可以轻松改变它以[0255])
VideoBuffer是'无符号字符*'(无符号字符指针)8/8/8 = 24位的RGB视频缓冲器
VideoDimX,VideoDimY是第X和VideoBuffer辎代码:
无效WritePixel(const廉政十,const廉政ý,

const浮动ṛ,const浮克,const浮动B号,const浮动α)

(/ / 3的RGB的24位deepth

无符号字符* pVideo = VideoBuffer (x (VideoDimX,(是1))* VideoDimY)* 3;

pVideo [0] =(α*注册商标)* 255 (1.0f -α)* pVideo [0];

pVideo [1] =(α*克)* 255 (1.0f -α)* pVideo [1];

pVideo [2] =(α*二)* 255 (1.0f -α)* pVideo [2];

)无效LineAA(const廉政× 1,const廉政Ŷ1,const廉政x2,const廉政const 2,735日圆

const浮动ṛ,const浮克,const浮动二)



/ /有用常量

const浮动干重= x2 - x1的;

const浮动生= y2 - Ŷ1;

const浮动slx =生/干重;

const浮动狡猾=干重/生;/ /确定斜坡

如果(工厂(slx)“1.0)



/ / x扫描

廉政tx1 = x1;

廉政TX2的= x2;

浮动光栅= Ŷ1;如果(× 1“X2)的



tx1 = x2;

TX2的= x1;

光栅= y2;

)为(廉政x = tx1; x“= TX2的; x )



const廉政里=廉政(光栅);const浮动AlphaY0 = 1.0 -(光栅里);

const浮动AlphaY1 = 1.0 -(里 1-光栅);WritePixel(第十里的R,G,B号,AlphaY0);

WritePixel(第十里一,红,绿,乙,AlphaY1);光栅 = slx;





其他的



/ /年扫描

廉政ty1 = Ŷ1;

廉政ty2 = y2;

浮动光栅= x1;如果(Ŷ1“y2)



ty1 = y2;

ty2 = Ŷ1;

光栅= x2;

)为(廉政y二ty1:y的“= ty2; ý )



const廉政里=廉政(光栅);const浮动AlphaX0 = 1.0 -(光栅里);

const浮动AlphaX1 = 1.0 -(里 1-光栅);WritePixel(里坐标,红,绿,乙,AlphaX0);

WritePixel(里一坐标,红,绿,乙,AlphaX1);光栅 =狡猾;





 
另一件事...我记得我曾致函反向ý VideoBuffer的DIB(如Windows它...左- “右,下- ”向上)...一个'标准'帧的左上角来源VideoBuffer(左- “右,上- ”下),您必须更改在前面的代码行...

代码:无符号字符* pVideo = VideoBuffer (x (VideoDimX,(是1))* VideoDimY)* 3;

 

Welcome to EDABoard.com

Sponsor

Back
Top