我想在1D数组中将每个3D坐标的aFloat字节值存储在pixelsArray中:

float aFloat = 1.0;
unsigned char* pixelsArray = new unsigned char[HEIGHT*WIDTH*3];

for (int i = 0; i < HEIGHT; i++)
{
   for (int j = 0; j < WIDTH; j++)
   {
      for (int k = 0; k < 3; k++)
      {
         pixelsArray[?] = aFloat;
      }
   }
}

会发生什么??我认为,如果我没有记错的话,它还需要在索引中的某个地方添加+ sizeof(float)

最佳答案

您的内线必须是:

pixelsArray[(i * WIDTH + j) * 3 + k] = (unsigned char)(255.0 * aFloat);

这应该会给您全白的图像。

确保目标实际上是每个像素三个字节,而不是四个(alpha channel 或填充);如果是四个,则只需将上面的3更改为4即可。

09-07 09:39