我正在尝试制作一个在窗口上绘制原始图像的程序,但是该图像是按程序生成的。我首先尝试仅使用SetPixel,但是由于效率低下,每个帧需要大约20秒的时间加载。现在,我正在使用多种颜色并以此方式进行绘制:
uint32_t *frameData = malloc(sizeof(uintptr_t) + screenWidth * screenHeight * 4); //RGBA = 4 bytes per pixel
for (uint16_t x = 0; x < windowWidth; x++) {
for (uint16_t y = 0; y < windowHeight; y++) {
frameData[screenWidth * y + x] = rand() % 0xffffff; //This runs at 40 fps on full-screen
}
}
//Code to put the image on the window
做到这一点的最佳方法是什么?我已经看到了一些使用BeginPaint,CreateBitmap的方法以及其他耗时的方法。对于X11,它是启动时的XCreateImage和帧的XPutImage,但这似乎会破坏帧率。