把高度网格交给引擎:固定分块、1-4 级 LOD、垂直裙边——采样按真实三角形插值,射线连裙边一起测。
xge3d_terrain_desc_t td = xge3dTerrainDefault();
td.heights = pHeights; // uint16 或 float 数组(原样拷贝,无 8bit 转换)
td.width = td.depth = 257;
td.format = XGE3D_HEIGHT_F32;
td.cell_size = 1.5f;
td.height_scale = 1.0f; td.height_offset = 0.0f;
td.chunk_cells = 32; // 每块边长(格)
td.lod_count = 4; // 1..4
td.lod_distances[0] = 90; td.lod_distances[1] = 180; td.lod_distances[2] = 300;
td.material = pGroundMaterial;
xge3d_terrain *pTerrain;
xge3dTerrainCreate(&td, &pTerrain);
xge3d_node_t tRoot;
xge3dTerrainInstantiate(pScene, pTerrain, (xge3d_node_t){0}, &tRoot);
xge3dTerrainFree(pTerrain); // 实例持有网格与材质后即可释放float fHeight; xge3d_vec3_t tNormal;
xge3dTerrainSample(pTerrain, 0, fLocalX, fLocalZ, &fHeight, &tNormal);
xge3d_hit_t tHit; size_t stChunk;
xge3dTerrainRaycast(pTerrain, 0, &tRay, 500.0f, &tHit, &stChunk);xge3dTerrainInfo 返回块数、LOD 数与表面包围盒(不含裙边);xge3dTerrainChunkMesh 借出指定块的网格与块内位置,供自定义碰撞或导航使用。引擎不提供世界流式加载与游戏规则——地形数据是一次性常驻的。