2 shirley xiqi Shirley_Xiqi 于 2016.04.21 22:26 提问

关于TC平台下横线优化算法的疑惑~~~TAT大神们帮帮我

以下是代码,原作者是想通过以字而不是字节copy数据到显存,从而实现更快地画一条
横线,但是我看不太懂他的代码TAT。。为什么第一点为奇数,就只填写后一点,最后
一点为奇数,就两点都填写?还有就是这里的“填写后一点”里的“一点”是什么意思、啊,好像不是屏幕上的一点啊。。。
困扰我好多天了,希望有人能解救一下我呜呜呜。。。
void HLine_Fast(int x1,int x2,int y,unsigned int color)
{
unsigned int first_word,middle_word,last_word,line_offset,index;
unsigned int far * video_buffer_w=(unsigned int far )video_buffer;/字变量*/
if((x1&0x0001))
first_word=(color< else
first_word=((color if((x2&0x0001))
last_word=((color else
last_word=color; /*最后一点为偶数,整除,只填写前一点*/
/*处理直线最前面和最后面那两个无法整除的字节*/
line_offset=((y middle_word=((color /*以下以字为单位copy数据到显存*/
video_buffer_w[line_offset+(x1>>1)]=first_word; /*画线首*/
for(index=(x1>>1)+1;index<(x2>>1);index++)/*以字为单位循环画线中部*/
video_buffer_w[line_offset+index]=middle_word;
video_buffer_w[line_offset+(x2>>1)]=last_word;/*画线尾 */
}

1个回答

devmiao
devmiao   Ds   Rxr 2016.04.21 22:42
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!