首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用C通过显存绘制像素?

如何使用C通过显存绘制像素?
EN

Stack Overflow用户
提问于 2019-05-10 03:28:28
回答 1查看 408关注 0票数 0

问题:

我在https://wiki.osdev.org/Drawing_In_Protected_Mode上学习了教程,在使用给定函数绘制像素时遇到了问题。

我做了什么:

  1. 使用引导加载程序中的BIOS中断将视频模式从http://www.columbia.edu/~em36/wpdos/videomodes.txt表更改为113h(VBE);
  2. 使用给定的

函数访问视频内存

/* only valid for 800x600x32bpp */
static void putpixel(unsigned char* screen, int x,int y, int color) {
    unsigned where = x*4 + y*3200;
    screen[where] = color & 255;              // BLUE
    screen[where + 1] = (color >> 8) & 255;   // GREEN
    screen[where + 2] = (color >> 16) & 255;  // RED
}

这是从文章中摘录的,在宏中有视频内存

#define VGA 0xA0000   

  1. 并尝试将其称为

,如下所示

putpixel(VGA, 10, 10, 3);

  1. 通过使用循环来尝试显示更多的

来确保这不是由于像素的细小造成的

结果:

期望: QEMU中的屏幕上有一个像素

实际:什么都没有

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 03:34:40

你的像素几乎是黑色的,它的颜色<0,0,3>。您可以尝试这样调用它:

putpixel(VGA, 10, 10, 0x00FFFFFF); 

这将在屏幕上显示一个漂亮的白色像素。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56066333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档