【发布时间】:2011-07-28 08:16:48
【问题描述】:
我正在处理别人的一段代码,因此我能做的修改量有限。无论如何,我目前正在尝试创建一个纹理数组并且遇到了一个问题: 我需要支持的是 n 个纹理被单独加载并作为 GLubytes 存储在一个向量中。然后,我需要获取存储在该向量中的所有数据并将其存储在单个 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);
【问题讨论】:
标签: c++ visual-studio opengl memory-management