小编Orb*_*ied的帖子

将原始像素数组绘制到窗口上(C++ WinAPI)

我有两个缓冲区,大小和类型都相同 ( 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)

c++ graphics winapi buffer drawing

1
推荐指数
1
解决办法
2423
查看次数

标签 统计

buffer ×1

c++ ×1

drawing ×1

graphics ×1

winapi ×1