我想在屏幕上绘制很多的点,但是使用SetPixel()效率好低,有什么方法可以提高效率吗?不使用MFC!

2024-12-14 14:24:18
推荐回答(5个)
回答1:

如果想手动绘制每一个点的话,个人比较推荐用opengl;
绘制点比较占时间主要原因是内存和显卡缓存的交互比较慢;setPixel的原理是每调用一次就把内存数据写到显卡缓存上,这样画一个屏幕就得交换1024*768次。
比较快速的办法是先写好1024*768大小的一个数组,然后把这个数组一次性的写到显卡缓存里面去,这样画一个屏幕就只用交换一次。但是自己处理这个工作稍显麻烦~~所以建议用opengl;当然directx也行,不过个人不喜欢。

回答2:

画一个点
然后用
StretchBlt
把一个点放大到整个屏幕即可

回答3:

如果是一个矩形,可试试
RECT rect = {0, 0, 1024, 768};
::SetBkColor(hDC, RGB(0, 255, 0));
::ExtTextOut(hDC, 0, 0, ETO_OPAQUE, &rect, NULL, 0, NULL);

如果是其它可描绘的形状,采用FillPath

当然还可以使用GDI+

回答4:

aaa833后面的思路是对的,将其保存为一个数组,用openGL或DirectX都可以。

回答5:

建议使用DirectX