如果有一个ar [5000]数组,那么如果这是一个三维数组,怎么能找到元素[5] [5] [4]的位置?感谢
我正在映射像素: 想象一下[768 * 1024 * 4]的bimap 像素[5] [5] [4]在哪里?
我想这样做:
static GLubyte checkImage[checkImageHeight][checkImageWidth][4];
static GLuint texName;
bool itt;
void makeCheckImage(void)
{
Bitmap *b = new Bitmap(L"c:/boo.png");
int i, j, c;
Color cul;
for (i = 0; i < checkImageHeight; i++) {
for (j = 0; j < checkImageWidth; j++) {
b->GetPixel(j,i,&cul);
checkImage[i][j][0] = (GLubyte) cul.GetR();
checkImage[i][j][1] = (GLubyte) cul.GetG();
checkImage[i][j][2] = (GLubyte) cul.GetB();
checkImage[i][j][3] = (GLubyte) cul.GetA();
}
}
delete(b);
}
无需制作多维数组即可完成工作。 width = 512,height = 1024 ....
答案 0 :(得分:7)
这将取决于假想的三维阵列的尺寸以及它的布局。有时候公式是ar[z * x_size * y_size + y * x_size + x] == ar[z][y][x]
,但是如果不知道每个维度的大小以及它们的顺序,就没有办法确定。
答案 1 :(得分:0)
您需要知道尺寸的大小。如果您希望将其解释为ar[m][n][p]
数组,那么mnp=5000
,ar[5][5][4]
将与ar[5*m*n+5*n+4]
对应。
这是因为C ++在行主要顺序中工作。
答案 2 :(得分:0)
[x * z_size * y_size + y * z_size + z]工作