gpt4 book ai didi

c++ - 可移植地将数据打包到缓冲区中

转载 作者:行者123 更新时间:2023-11-28 03:42:25 26 4
gpt4 key购买 nike

我必须将几个整数值放入一个(32 字节)缓冲区中,其中每个整数都必须位于缓冲区中的特定位置(我将在 OpenGL VBO 中使用这些数据)。

我现在做这件事的方式有点丑陋。所有内容都应该放在地址buf2 中。不要费心查看我分配给缓冲区的值,因为这些与问题无关。

    uint32_t *const coords      = reinterpret_cast<uint32_t *>(buf2 + CoordDataOff);
uint16_t *const texcoords = reinterpret_cast<uint16_t *>(buf2 + TcoordDataOff);
uint32_t *const color = reinterpret_cast<uint32_t *>(buf2 + ColorDataOff);

coords[0] = x + bearing[0]; // left
coords[1] = y + bearing[1] - 64*(tcoords[3] - tcoords[1]); // bottom
coords[2] = x + bearing[0] + 64*(tcoords[2] - tcoords[0]); // right
coords[3] = y + bearing[1]; // top
copy_n(tcoords, 4, texcoords);
*color = c.color;

有没有更好、更便携的方法来实现它?

最佳答案

您的缓冲区是否只包含每个顶点的数据?你可以只生成一个结构

struct TData
{
uint32_t coords[4];
uint16_t texcoords[4];
uint32_t color;
};

那么它就像将缓冲区视为 TData 数组一样简单

TData verts[100];
vert[0].coord[0] = x;
vert[0].coord[1] = y;
...
FunctionToWriteToBuffer((void *)verts, sizeof(TData) * 100);

或者在你上面的代码中

  TData *vert = (TData *)buf2;

这也应该让事情更容易阅读和维护

关于c++ - 可移植地将数据打包到缓冲区中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8714170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com