C++ 在 1D 数组中表示 3D 数组

标签 c++ arrays mapping

我想将每个 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

关于C++ 在 1D 数组中表示 3D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902648/

相关文章:

c++ - 通过 C 接口(interface)传递 C++ i/o 类的特定于编译器的问题

php - 通过后表单序列化发送数据

javascript - 仅针对某些键从数组映射数据(未过滤)

c# - 模型到 XML 文件映射 - 如何在源 XML 文件中查找反序列化对象的位置。

java - 如何映射两个类中的所有可用字段(无继承)

C++ 输出顺序

c++ - 将参数传递给构造函数会导致错误

PHP - 按另一个数组的值对关联数组进行排序

c++ - 12个元素的数组-求数-练习

c++ - qt-creator 和 msvc 无法添加(静态)库