Я работаю над частью чужого кода и, следовательно, был ограничен количеством изменений, которые я могу сделать. Во всяком случае, в настоящее время я пытаюсь создать массив текстур и застрял с проблемой:
Что мне нужно для поддержки, так это 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, похоже, не меняются.)
EDIT:
Решение в итоге было:
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);