繁体   English   中英

纹理数组,创建纹理

[英]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) (将imageSizeoffset的计算留给了您)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM