Questions tagged «bitmap-graphics»


2
从根本上讲,二维位图是如何渲染的?
假设我们有一台64位的可字寻址的计算机,我们想对其进行编程,以将存储为二进制图像位图(例如下面的一个)的5x7字符输出到内存映射的显示器。 由于每个字符有5 x 7 = 35像素,因此我们可以在单个单词中使用35位存储字符。最低有效位从单词的左侧开始,并且图像中的每个像素由第n位表示,如上所示,数字“ 3”将在内存中存储为:011101000100001001100000100011000101110,后跟29个未使用位设置为0。 这是在旧/现代计算机中存储字符的方式吗?还是每个像素使用单个字节/字? 如果以这种方式存储它们,汇编/机器代码中的例程(仅使用基本指令,例如计算机指令集体系结构中的位,算术和数据传输操作)将用来将这些数据转换为图像显示器是什么样的?会是这样吗? 将要更新的当前像素的x和y显示坐标存储在某个寄存器中。 将两个选定的RGB值(在这种情况下,绿色为0,255,0,黑色为0,0,0)存储在其他两个单独的寄存器中。 还有两个寄存器用作初始化为5和7的计数器,以跟踪正在渲染的图像的当前行和列。 测试列寄存器是否不为0。如果不是,则测试位图的LSB是否设置为1,然后根据结果将相应的RGB值寄存器与x和y坐标寄存器进行“与”运算,然后对结果进行MOV到显示输出寄存器。 将行计数器寄存器减1,测试是否为0。如果为0,则将其设置回5,并将y坐标增加1,并将列计数器减少1。 将持有位图的寄存器向左移动1位。 JMP到指令4。 有没有更简单或更有效的方法来做到这一点?看起来像渲染单个小文本字符这样的简单操作也需要大量的操作,并且大约需要200个CPU周期。 最后,在机器级代码方面是否有任何不错的书籍或资源可用于从头开始显示图像,因为我找不到任何东西,因为它们掩盖了这个特定主题,或者代码是用高级语言编写的,或者是使用宏的汇编程序,所有这些都是“作弊的”,并且没有说明最低层的基本情况。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.