gpt4 book ai didi

c++ - 纹理数组,创建纹理

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:42 25 4
gpt4 key购买 nike

我正在处理别人代码的一部分,因此我能做的修改量有限。无论如何,我目前正在尝试创建一个纹理数组并且遇到了一个问题:我需要支持的是 n 个纹理被单独加载并存储为 vector 中的 GLubytes。然后我需要获取存储在该 vector 中的所有数据并将其存储在单个 GLubyte 对象中。目前我的代码看起来像这样:

vector<GLubyte*> vecPixelData;
GLubyte* puData;

for(int i = 0; i < NumberOfTextures; i++)
{
GLubyte* pixData;
LoadTexture(&pixData);
vecPixelData.push_back(pixData);
}

int puDataSize = nWidth * nHeight * 4 * NumberOfTextures;
puData = new GLubyte[puDataSize];

for(int i = 0; i < NumberOfTextures; i++)
*puData += *vecPixelData[i];

现在我确定我遗漏了一些关于如何将内存从 vecPixelData 复制到 puData 的基本要点,如果没有,谁能给我一个“指针” ' 关于如何检查 puData 是否实际存储所需数据的地方。 (我试过使用内存窗口,但 puData 中的数据似乎没有改变。)

编辑:最终的解决方案是:

int puDataSize = nWidth * nHeight * 4; 
puData = new GLubyte[puDataSize * NumberOfTextures];

for(int i = 0; i < NumberOfTextures.size(); i++)
memcpy(puData + (puDataSize * i), vecPixelData[i], puDataSize);

最佳答案

如果我正确理解你的问题,你需要使用 std::copy。类似于 std::copy(*vecPixelData[i], *vecPixelData[i] + imageSize, puData + offstet)(保留 imageSizeoffset 给你)在你最后一个 for 循环中。

关于c++ - 纹理数组,创建纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6855913/

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