[英]Texture Array, creating the texture
我正在处理别人的代码,因此仅限于我能做的修改量。 无论如何,我目前正在尝试创建一个纹理数组,并且陷入了一个问题:我需要支持的是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是否确实存储了数据需要。 (我尝试过使用内存窗口,但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
。 在上一个for
循环中std::copy(*vecPixelData[i], *vecPixelData[i] + imageSize, puData + offstet)
(将imageSize
和offset
的计算留给了您)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.