我有两个缓冲区,大小和类型都相同 ( uint32_t*)。这些缓冲区应该代表渲染/绘图系统的前缓冲区和后缓冲区。它们存储 32 位像素数据。
我使用以下方式声明并初始化这些缓冲区:
private:
...
uint32_t* frontBuf;
uint32_t* backBuf;
size_t gbufSize;
...
public:
void Initialize() {
...
// prepare for rendering
gbufSize = sizeof(uint32_t) * w * h;
backBuf = (uint32_t*)malloc(gbufSize);
frontBuf = (uint32_t*)malloc(gbufSize);
...
}
Run Code Online (Sandbox Code Playgroud)
我还使用以下方法获取控制台的输出、窗口和设备句柄Initialize():
// get handles
cwd = GetDC(GetConsoleWindow());
chd = GetStdHandle(STD_OUTPUT_HANDLE);
cwn = GetConsoleWindow();
Run Code Online (Sandbox Code Playgroud)
然后我有几个绘图方法,比如一个SetPixel方法:
size_t GFlatten(int x, int y) {
return y * h + x;
}
void GSetPixel(int x, int y, uint32_t color) {
backBuf[GFlatten(x, …Run Code Online (Sandbox Code Playgroud)