我创建了一个基本程序,使用该SetPixel()方法在 Windows 控制台中渲染精灵,它工作正常,但开销很大。我对此做了一些优化,这有所帮助,但仍然太慢。
目前,我的程序使用两个缓冲区COLORREF将较新的缓冲区绘制到屏幕上,交换它们并重新开始。然而,如果该像素发生变化,它只会重新绘制该像素。这极大地提高了性能,但仍然很慢。到目前为止,缓冲区交换还没有用指针完成,但真正的开销是SetPixel()这样的,我正在寻找一种使用 GDI 创建像素级图形的替代方法,它比SetPixel()
(忽略 anim_frame 和 img_data 向量的第一个维度)更快,如果我决定添加动画对象,它们就在那里)
void graphics_context::update_screen()
{
update_buffer();
for (int x = 0; x < this->width; x++)
{
for (int y = 0; y < this->height; y++)
{
if (this->buffer.at(x).at(y) != this->buffer_past.at(x).at(y))
{
for (int i = 0; i < this->scale_factor; i++)
{
for (int j = 0; j < this->scale_factor; j++)
{
int posX = i + (this->scale_factor * x) + this->width_offset;
int posY = …Run Code Online (Sandbox Code Playgroud)