我想创建一个动态数组(数组)。但由于某些原因数据被损坏。我正在使用这些数据在OpenGL应用程序中生成纹理。如何创建数组(数组)的动态数组?
下面的代码工作正常:
unsigned char imageData[64][64][3];
for (int i = 0; i < 64; i++)
{
for (int j = 0; j < 64; j++)
{
unsigned char r = 0, g = 0, b = 0;
if (i < 32)
{
if (j < 32)
r = 255;
else
b = 255;
}
else
{
if (j < 32)
g = 255;
}
imageData[i][j][0] = r;
imageData[i][j][1] = g;
imageData[i][j][2] = b;
}
std::cout << std::endl;
}
glTexImage2D(target, 0, GL_RGB, 64, 64, 0, GL_RGB, GL_UNSIGNED_BYTE, imageData);
问题是,我希望能够创建任何大小的纹理(不只是64 * 64)。所以我想这一点:
unsigned char*** imageData = new unsigned char**[64]();
for (int i = 0; i < 64; i++)
{
imageData[i] = new unsigned char*[64]();
for (int j = 0; j < 64; j++)
{
imageData[i][j] = new unsigned char[3]();
unsigned char r = 0, g = 0, b = 0;
if (i < 32)
{
if (j < 32)
r = 255;
else
b = 255;
}
else
{
if (j < 32)
g = 255;
}
imageData[i][j][0] = r;
imageData[i][j][1] = g;
imageData[i][j][2] = b;
}
std::cout << std::endl;
}
glTexImage2D(target, 0, GL_RGB, 64, 64, 0, GL_RGB, GL_UNSIGNED_BYTE, imageData);
但是,这并不工作,图像获取全乱了,所以我认为我创建数组的数组(阵列)不正确?我究竟做错了什么?
此外,我想我应该使用矢量代替。但是我怎样才能将向量数据向量转化为(void *)呢?
你是什么意思所有搞砸了?究竟发生了什么? – PYA
unsigned char * imageData = new unsigned char [width * height * 3]; – nullqube
@pyjg:看我的编辑,颜色没有按预期显示。不知道如何更好地描述它,我可以上传截图? – gromit190