gpt4 book ai didi

c - 如何将地形写入 .raw 文件?

转载 作者:行者123 更新时间:2023-11-30 15:59:09 25 4
gpt4 key购买 nike

我想通过 Perlin 噪声生成地形并将其存储到 .raw 文件中。

来自Nehe's HeightMap tutorial我知道 .raw 文件是这样读取的:

#define MAP_SIZE        1024    

void LoadRawFile(LPSTR strName, int nSize, BYTE *pHeightMap)
{
FILE *pFile = NULL;

// Let's open the file in Read/Binary mode.
pFile = fopen( strName, "rb" );

// Check to see if we found the file and could open it
if ( pFile == NULL )
{
// Display our error message and stop the function
MessageBox(NULL, "Can't find the height map!", "Error", MB_OK);
return;
}

// Here we load the .raw file into our pHeightMap data array.
// We are only reading in '1', and the size is the (width * height)
fread( pHeightMap, 1, nSize, pFile );

// After we read the data, it's a good idea to check if everything read fine.
int result = ferror( pFile );

// Check if we received an error.
if (result)
{
MessageBox(NULL, "Can't get data!", "Error", MB_OK);
}

// Close the file.
fclose(pFile);

}

pHeightMap 是一维的,所以我不明白如何将 x,y 对应于高度值。我打算使用 libnoisenoise2 function on Ken Perlin's page ,使 1024x1024 矩阵中的每个值对应于点的高度,但 .raw 文件存储在单个维度中,如何使 x,y 对应在那里工作?

最佳答案

设 A 为维度相等的二维数组:

A[3][3] = {
{'a', 'b', 'c'},
{'d', 'e', 'f'},
{'g', 'h', 'i'}
}

您还可以将此矩阵设计为一维数组:

A[9] = {
'a', 'b', 'c',
'd', 'e', 'f',
'g', 'h', 'i'
}

在第一种情况(二维)中,您可以使用类似于 A[1][0] 的表示法来访问第二个数组中的第一个元素。但是,在第二种情况(一维)中,您将使用类似于 A[1 * n + 0] 的表示法来访问相同的元素,其中 n 是每个逻辑包含的数组的长度,在本例中为 3。请注意,您仍然使用相同的索引值(1 和 0),但对于一维情况,您必须包含偏移量的乘数 n

关于c - 如何将地形写入 .raw 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9199544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com