CN109712062B - 一种图形处理器位图绘制方法 - Google Patents
一种图形处理器位图绘制方法 Download PDFInfo
- Publication number
- CN109712062B CN109712062B CN201811518825.7A CN201811518825A CN109712062B CN 109712062 B CN109712062 B CN 109712062B CN 201811518825 A CN201811518825 A CN 201811518825A CN 109712062 B CN109712062 B CN 109712062B
- Authority
- CN
- China
- Prior art keywords
- bitmap
- value
- data
- coord
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Image Generation (AREA)
Abstract
本发明涉及计算机硬件技术领域,提供一种图形处理器位图绘制方法,包括:步骤1:复位状态;步骤2:判断是否收到光栅位置命令;步骤3、获取光栅位置x、y坐标值;步骤4、判断是否收到glBitmap命令;步骤5、x、y坐标更新操作;步骤6、判断是否输入数据有效;步骤7、输出位图数据、x、y坐标状态;步骤8、x坐标+1操作;步骤9、判断x方向绘制完成操作;步骤10、判断是否绘制第32位数据操作;步骤11、y坐标值加1操作;步骤12、判断y方向绘制完成操作;步骤13、x坐标更新操作;步骤14、位图处理数据位调整操作;步骤15:绘制结束状态。
Description
技术领域
本发明涉及计算机硬件技术领域,尤其涉及一种图形处理器位图绘制方法。
背景技术
位图是一种在显存中字节的矩阵存储方式,由1和0组成的矩阵数组,作为窗口中一个矩形区域的绘图掩码,一般用于表示字体中的字符。位图最常见的应用就是在屏幕上绘制字符。OpenGL中对位图的显示用glBitmap函数,先由glRasterPos命令确定位图绘制的位置,在显存中定义位图的像素点,然后再下发glBitmap命令,由位图绘制电路完成绘制像素点的任务。当一个位图位置绘制完毕后,如果位图没有完成,则继续绘制像素点,当一个位图绘制完成后,可以进行移位,移位后的坐标则成了新的起始点。
发明内容
本发明的发明目的:提供一种图形处理器位图绘制方法,接口简单,易于集成到图形处理器的设计中,完成图形处理器位图绘制功能,提高图形处理器处理效率。
本发明的技术方案:
一种图形处理器位图绘制方法,包括:
步骤1:复位状态:电路复位时,位图绘制电路使用到的所有信号均复位到初始值0。复位完成后,跳转到步骤2;
步骤2:判断是否收到光栅位置命令:检测到光栅位置命令输入时,跳转到步骤3,否则,一直处于步骤2;
步骤3、获取光栅位置x、y坐标值:执行完成后跳转到步骤4;
步骤4、判断是否收到glBitmap命令:检测到位图绘制命令输入时,跳转到步骤5,否则,一直保持在步骤4;
步骤5、x、y坐标更新操作,操作完成后跳转到步骤6;
步骤6、判断是否输入数据有效:检测到有位图数据data_in[31:0]输入时,转入到步骤7,否则,一直保持在步骤6;
步骤7、输出位图数据、x、y坐标状态:操作完成后跳转到步骤8;
步骤8、x坐标+1操作:位图绘制期间,位图绘制x坐标值:x_coord、位图绘制列计数器x_offset每个时钟周期均执行加1操作,执行完成后,跳转到步骤9;
步骤9、判断x方向绘制完成操作:x_offset的值等于位图宽度时,表示一行位图绘制完成,转入步骤11,否则,转入步骤10;
步骤10、判断是否绘制第32位数据操作:全部32位位图数据未处理完成时,直接转入步骤7,否则,当前输入的32位数据处理完成后,将data_bit_cnt计数器的值清零,转入步骤6;
步骤11、y坐标值加1操作,操作完成后转入步骤12:一行位图绘制完成时,位图绘制 y坐标值y_coord加1,位图绘制行计数器y_offset加1;
步骤12、判断y方向绘制完成操作:y_offset等于位图高度height时,位图绘制操作完成,转入步骤15,否则,转入步骤13;
步骤13、x坐标更新操作:将x_coord设置为x方向原点坐标值x_coord_orig,将 x_offset的值清零,操作完成后,转入步骤14;
步骤14、位图处理数据位调整操作:调整完成后,转入步骤6;
步骤15:绘制结束状态,具体的操作包括:将位图绘制行计数器y_offset清零,将data_bit_cnt计数器的值清零。
步骤3包括:
步骤3.1、获取光栅位置x坐标值:x坐标初始值x_coord_ini从0更新为光栅位置x坐标值值;
步骤3.2、获取光栅位置y坐标值:y坐标初始值y_coord_ini值从0更新为光栅位置y 坐标值。
步骤5包括:
步骤5.1、获取位图绘制领路携带的参数,包括:位图宽度width、高度height、位图起始位置相对位图原点的偏移x_bo/y_bo、位图光栅化之后光栅位置的x/y增量值x_bi/y_bi 以及glColor命令输入的位图颜色color等参数信息;
步骤5.2、x坐标初始值x_coord_ini更新为x_coord_ini=x_coord_ini+x_bi;
步骤5.3、记录x方向原点坐标值x_coord_orig:x_coord_orig=x_coord_ini-x_b0;
步骤5.4、位图绘制x坐标值x_coord更新为x_coord=x_coord_ini-x_b0;
步骤5.5、y坐标初始值y_coord_ini值更新为y_coord_ini=y_coord_ini+y_bi;
步骤5.6、位图绘制y坐标值y_coord更新为y_coord=ycoord_ini-y_b0;
步骤5.7、获取位图的宽度值width、位图高度值height以及位图颜色值color;
步骤5.8、初始化位图绘制列计数器x_offset的值到0;
步骤5.9、初始化位图绘制行计数器y_offset的值到0;
步骤5.10、初始化位图绘制比特位计数器data_bit_cnt的值到0。
步骤7包括:
步骤7.1、每时钟周期逐位判断data_in[data_bit_cnt]的值,data_in[data_bit_cnt] 等于1时,输出位图数据有效标志bit_map_out_vld,同时给出该位图数据对应的x坐标值 x_coord、y坐标值y_coord,以及位图颜色值color;
步骤7.2、位图绘制期间,第一行位图未绘制完成之前,data_bit_cnt的值从0开始,每时钟周期加1,表示每个时钟周期位图数据中的一个比特位。
步骤14包括:
由于待绘制位图数据data_in在内存中以8位无符号数的形式连续存储,当位图绘制宽度width不是8位的整数倍时,第一行位图绘制操作结束,继续绘制下一行位图,需要根据位图宽度值调整数据处理步长,将位图绘制操作调整到下一个位图的行数据开始的位置;具体的调整算法为:位图宽度值对8求余后,值为1,调整的步长为8;位图宽度对8求余后,值为2,调整的步长为7;依次类推,位图宽度对8求余后,值为0,调整的步长为1;
用于跳转步长shift_bits_jump计算的verilog语言描述电路实现为:
shift_bits_jump=(width[2:0]==3'b001)?4'b1000:{1'b0,{(~width[2:0])+3'd2}};
调整后的data_bit_cnt的初始值为data_bit_cnt=data_bit_cnt+shift_bits_jump。
本发明的有益效果:
本发明提供的位图绘制电路,支持OpenGL图像处理子集中glBitMap命令全部功能,整个位图绘制操作全部由硬件电路完成,接口简单,易于集成到图形处理器的设计中,完成图形处理器位图绘制功能,提高图形处理器处理效率。
具体实施方式
下面结合具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其他实施例,都属于本发明的保护范围。
一种图形处理器位图绘制方法,包括:
步骤1:复位状态:电路复位时,位图绘制电路使用到的所有信号均复位到初始值0。复位完成后,跳转到步骤2;
步骤2:判断是否收到光栅位置命令:检测到光栅位置命令输入时,跳转到步骤3,否则,一直处于步骤2;
步骤3、获取光栅位置x、y坐标值:执行完成后跳转到步骤4,该步骤的具体操作包括:
步骤3.1、获取光栅位置x坐标值:x坐标初始值x_coord_ini从0更新为光栅位置x坐标值值;
步骤3.2、获取光栅位置y坐标值:y坐标初始值y_coord_ini值从0更新为光栅位置y 坐标值;
步骤4、判断是否收到glBitmap命令:检测到位图绘制命令输入时,跳转到步骤5,否则,一直保持在步骤4;
步骤5、x、y坐标更新操作,操作完成后跳转到步骤6,该步骤的具体操作包括:
步骤5.1、获取位图绘制领路携带的参数,包括:位图宽度width、高度height、位图起始位置相对位图原点的偏移x_bo/y_bo、位图光栅化之后光栅位置的x/y增量值x_bi/y_bi以及glColor命令输入的位图颜色color等参数信息;
步骤5.2、x坐标初始值x_coord_ini更新为x_coord_ini=x_coord_ini+x_bi;
步骤5.3、记录x方向原点坐标值x_coord_orig:x_coord_orig=x_coord_ini-x_b0;
步骤5.4、位图绘制x坐标值x_coord更新为x_coord=x_coord_ini-x_b0;
步骤5.5、y坐标初始值y_coord_ini值更新为y_coord_ini=y_coord_ini+y_bi;
步骤5.6、位图绘制y坐标值y_coord更新为y_coord=ycoord_ini-y_b0;
步骤5.7、获取位图的宽度值width、位图高度值height以及位图颜色值color;
步骤5.8、初始化位图绘制列计数器x_offset的值到0;
步骤5.9、初始化位图绘制行计数器y_offset的值到0;
步骤5.10、初始化位图绘制比特位计数器data_bit_cnt的值到0;
步骤6、判断是否输入数据有效:检测到有位图数据data_in[31:0]输入时,转入到步骤7,否则,一直保持在步骤6;
步骤7、输出位图数据、x、y坐标状态:操作完成后跳转到步骤8,该步骤的具体操作包括:
步骤7.1、每时钟周期逐位判断data_in[data_bit_cnt]的值,data_in[data_bit_cnt]等于1时,输出位图数据有效标志bit_map_out_vld,同时给出该位图数据对应的x坐标值x_coord、y 坐标值y_coord,以及位图颜色值color;
步骤7.2、位图绘制期间,第一行位图未绘制完成之前,data_bit_cnt的值从0开始,每时钟周期加1,表示每个时钟周期位图数据中的一个比特位。
步骤8、x坐标+1操作:位图绘制期间,位图绘制x坐标值:x_coord、位图绘制列计数器x_offset每个时钟周期均执行加1操作,执行完成后,跳转到步骤9;
步骤9、判断x方向绘制完成操作:x_offset的值等于位图宽度时,表示一行位图绘制完成,转入步骤11,否则,转入步骤10;
步骤10、判断是否绘制第32位数据操作:全部32位位图数据未处理完成时,直接转入步骤7,否则,当前输入的32位数据处理完成后,将data_bit_cnt计数器的值清零,转入步骤6;
步骤11、y坐标值加1操作,操作完成后转入步骤12:一行位图绘制完成时,位图绘制 y坐标值y_coord加1,位图绘制行计数器y_offset加1;
步骤12、判断y方向绘制完成操作:y_offset等于位图高度height时,位图绘制操作完成,转入步骤15,否则,转入步骤13;
步骤13、x坐标更新操作:将x_coord设置为x方向原点坐标值x_coord_orig,将x_offset 的值清零,操作完成后,转入步骤14;
步骤14、位图处理数据位调整操作:调整完成后,转入步骤6。该步骤的具体操作为:由于待绘制位图数据data_in在内存中以8位无符号数的形式连续存储,当位图绘制宽度 width不是8位的整数倍时,第一行位图绘制操作结束,继续绘制下一行位图,需要根据位图宽度值调整数据处理步长,将位图绘制操作调整到下一个位图的行数据开始的位置。具体的调整算法为:位图宽度值对8求余后,值为1,调整的步长为8;位图宽度对8求余后,值为2,调整的步长为7;依次类推,位图宽度对8求余后,值为0,调整的步长为1。
用于跳转步长shift_bits_jump计算的verilog语言描述电路实现为:
shift_bits_jump=(width[2:0]==3'b001)?4'b1000:{1'b0,{(~width[2:0])+3'd2}}。
调整后的data_bit_cnt的初始值为data_bit_cnt=data_bit_cnt+shift_bits_jump。
步骤15:绘制结束状态,具体的操作包括:将位图绘制行计数器y_offset清零,将data_bit_cnt计数器的值清零。
最后应说明的是,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (5)
1.一种图形处理器位图绘制方法,其特征在于,包括:
步骤1:复位状态:电路复位时,位图绘制电路使用到的所有信号均复位到初始值0;复位完成后,跳转到步骤2;
步骤2:判断是否收到光栅位置命令:检测到光栅位置命令输入时,跳转到步骤3,否则,一直处于步骤2;
步骤3、获取光栅位置x、y坐标值:执行完成后跳转到步骤4;
步骤4、判断是否收到glBitmap命令:检测到位图绘制命令输入时,跳转到步骤5,否则,一直保持在步骤4;
步骤5、x、y坐标更新操作,操作完成后跳转到步骤6;
步骤6、判断是否输入数据有效:检测到有位图数据data_in[31:0]输入时,转入到步骤7,否则,一直保持在步骤6;
步骤7、输出位图数据、x、y坐标状态:操作完成后跳转到步骤8;
步骤8、x坐标+1操作:位图绘制期间,位图绘制x坐标值:x_coord、位图绘制列计数器x_offset每个时钟周期均执行加1操作,执行完成后,跳转到步骤9;
步骤9、判断x方向绘制完成操作:x_offset的值等于位图宽度时,表示一行位图绘制完成,转入步骤11,否则,转入步骤10;
步骤10、判断是否绘制第32位数据操作:全部32位位图数据未处理完成时,直接转入步骤7,否则,当前输入的32位数据处理完成后,将data_bit_cnt计数器的值清零,转入步骤6;
步骤11、y坐标值加1操作,操作完成后转入步骤12:一行位图绘制完成时,位图绘制y坐标值y_coord加1,位图绘制行计数器y_offset加1;
步骤12、判断y方向绘制完成操作:y_offset等于位图高度height时,位图绘制操作完成,转入步骤15,否则,转入步骤13;
步骤13、x坐标更新操作:将x_coord设置为x方向原点坐标值x_coord_orig,将x_offset的值清零,操作完成后,转入步骤14;
步骤14、位图处理数据位调整操作:调整完成后,转入步骤6;
步骤15:绘制结束状态,具体的操作包括:将位图绘制行计数器y_offset清零,将data_bit_cnt计数器的值清零。
2.如权利要求1所述的一种图形处理器位图绘制方法,其特征在于,步骤3包括:
步骤3.1、获取光栅位置x坐标值:x坐标初始值x_coord_ini从0更新为光栅位置x坐标值值;
步骤3.2、获取光栅位置y坐标值:y坐标初始值y_coord_ini值从0更新为光栅位置y坐标值。
3.如权利要求1所述的一种图形处理器位图绘制方法,其特征在于,步骤5包括:
步骤5.1、获取位图绘制领路携带的参数,包括:位图宽度width、高度height、位图起始位置相对位图原点的偏移x_bo/y_bo、位图光栅化之后光栅位置的x/y增量值x_bi/y_bi以及glColor命令输入的位图颜色color等参数信息;
步骤5.2、x坐标初始值x_coord_ini更新为x_coord_ini=x_coord_ini+x_bi;
步骤5.3、记录x方向原点坐标值x_coord_orig:x_coord_orig=x_coord_ini-x_b0;
步骤5.4、位图绘制x坐标值x_coord更新为x_coord=x_coord_ini-x_b0;
步骤5.5、y坐标初始值y_coord_ini值更新为y_coord_ini=y_coord_ini+y_bi;
步骤5.6、位图绘制y坐标值y_coord更新为y_coord=ycoord_ini-y_b0;
步骤5.7、获取位图的宽度值width、位图高度值height以及位图颜色值color;
步骤5.8、初始化位图绘制列计数器x_offset的值到0;
步骤5.9、初始化位图绘制行计数器y_offset的值到0;
步骤5.10、初始化位图绘制比特位计数器data_bit_cnt的值到0。
4.如权利要求1所述的一种图形处理器位图绘制方法,其特征在于,步骤7包括:
步骤7.1、每时钟周期逐位判断data_in[data_bit_cnt]的值,data_in[data_bit_cnt]等于1时,输出位图数据有效标志bit_map_out_vld,同时给出该位图数据对应的x坐标值x_coord、y坐标值y_coord,以及位图颜色值color;
步骤7.2、位图绘制期间,第一行位图未绘制完成之前,data_bit_cnt的值从0开始,每时钟周期加1,表示每个时钟周期位图数据中的一个比特位。
5.如权利要求1所述的一种图形处理器位图绘制方法,其特征在于,步骤14包括:
由于待绘制位图数据data_in在内存中以8位无符号数的形式连续存储,当位图绘制宽度width不是8位的整数倍时,第一行位图绘制操作结束,继续绘制下一行位图,需要根据位图宽度值调整数据处理步长,将位图绘制操作调整到下一个位图的行数据开始的位置;具体的调整算法为:位图宽度值对8求余后,值为1,调整的步长为8;位图宽度对8求余后,值为2,调整的步长为7;依次类推,位图宽度对8求余后,值为0,调整的步长为1;
用于跳转步长shift_bits_jump计算的verilog语言描述电路实现为:
shift_bits_jump=(width[2:0]==3'b001)?4'b1000:{1'b0,{(~width[2:0])+3'd2}};调整后的data_bit_cnt的初始值为data_bit_cnt=data_bit_cnt+shift_bits_jump。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811518825.7A CN109712062B (zh) | 2018-12-12 | 2018-12-12 | 一种图形处理器位图绘制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811518825.7A CN109712062B (zh) | 2018-12-12 | 2018-12-12 | 一种图形处理器位图绘制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109712062A CN109712062A (zh) | 2019-05-03 |
CN109712062B true CN109712062B (zh) | 2023-01-13 |
Family
ID=66255657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811518825.7A Active CN109712062B (zh) | 2018-12-12 | 2018-12-12 | 一种图形处理器位图绘制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109712062B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006157791A (ja) * | 2004-12-01 | 2006-06-15 | Canon Inc | カラー画像処理システム、および画像処理方法 |
CN103399311B (zh) * | 2013-08-19 | 2015-06-24 | 中国电子科技集团公司第三十八研究所 | 用于场面监视雷达的实时回波的绘制方法 |
CN103617790A (zh) * | 2013-12-19 | 2014-03-05 | 大连辽无二电器有限公司 | 基于fpga的图形控制器 |
-
2018
- 2018-12-12 CN CN201811518825.7A patent/CN109712062B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109712062A (zh) | 2019-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10885876B2 (en) | Method and device for adjusting brightness, display device and storage medium | |
CN101131768B (zh) | 图形管线中基于瓦片的精度的光栅化 | |
KR100300972B1 (ko) | 텍스춰매핑수행장치및텍스춰캐시의데이터억세스방법 | |
US5565886A (en) | Method and system for rapidly transmitting multicolor or gray scale display data having multiple bits per pixel to a display device | |
US20140285494A1 (en) | Display apparatus and method of outputting text thereof | |
WO2019134368A1 (en) | Image processing method of virtual reality and apparatus thereof | |
US10311060B2 (en) | Glyph management in texture atlases | |
CN113391779B (zh) | 类纸屏幕的参数调节方法、装置及设备 | |
US8044960B2 (en) | Character display apparatus | |
CN111476852A (zh) | 阅读器刷新方法、计算设备及计算机存储介质 | |
CN114527980A (zh) | 一种显示渲染方法、装置、电子设备和可读存储介质 | |
CN113362420A (zh) | 道路标注生成方法、装置、设备以及存储介质 | |
CN109712062B (zh) | 一种图形处理器位图绘制方法 | |
EP4231243A1 (en) | Data storage management method, object rendering method, and device | |
JP3547250B2 (ja) | 描画方法 | |
CN100437746C (zh) | 字符显示设备和字符显示方法 | |
US6344856B1 (en) | Text optimization | |
CN104503954A (zh) | 一种文字组合显示方法及显示系统 | |
CN103543974A (zh) | 一种提高字体清晰度的方法及系统 | |
CN112116522A (zh) | 一种基于现代可编程图形管线的雷达数据可视化框架 | |
EP4379647A1 (en) | Render format selection method and device related thereto | |
US11069326B2 (en) | Processing method for character stroke and related device | |
US9251557B2 (en) | System, method, and computer program product for recovering from a memory underflow condition associated with generating video signals | |
CN113139921A (zh) | 图像处理方法、显示装置、电子设备及存储介质 | |
JP2017116859A (ja) | 文字描画装置および文字描画方法、コンピュータプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |