我正在尝试实现libnoise库并生成一个高度图,然后可以将其导入L3DT中以使用Perlin噪声算法来渲染基本3D地形。这是我作为计算机科学本科生的最后一个项目。主题本质上是针对地形生成的过程内容生成。

我已经正确设置了Eclipse CDT,并链接了所有必需的头文件和库。该程序与libnoise教程系列完全相同,特别是我将在此处链接的第三个教程:
http://libnoise.sourceforge.net/tutorials/tutorial3.html

一切似乎都工作正常,构建成功,程序运行完成,但是无论我做什么输出位图文件,“output.bmp”都不会呈现在可执行文件的目录中。

我在这里想念什么?输出文件是否放置在默认目录的其他位置?

以下是进一步说明的代码:

  /*
  * Noise.cpp
  *
  *  Created on: 23-Feb-2015
  *
  */

  #include <iostream>
  #include <stdio.h>
  #include <noise.h>
  #include <noiseutils.h>

  using namespace noise; // Sets reference for usage of the the noise class objects
  using namespace std;
  void main()
  {
        // CREATION OF THE NOISE MAP

        module::Perlin Module; // Instantiates the Perlin class object to be used as the source for the noise generation.
        utils::NoiseMap heightMap; // Creation of the 2D empty noise map.
        utils::NoiseMapBuilderPlane heightMapBuilder; // Used to fill the noise map with the noise values taken from an (x,y) plane.

        heightMapBuilder.SetSourceModule (Module); // Sets the Perlin module as the source for noise generation.
        heightMapBuilder.SetDestNoiseMap (heightMap); // Sets the empty noise map as the target for the output of the planar noise map builder.

        heightMapBuilder.SetDestSize(256,256); // Sets the size of the output noise map.

        heightMapBuilder.SetBounds (2.0, 6.0, 1.0, 5.0); // Defines the vertices of the bounding rectangle from which the noise values are produced. lower x, upper x, lower y, upper y.

        heightMapBuilder.Build (); // Builds the noise map.

// RENDERING THE TERRAIN HEIGHT MAP

        utils::RendererImage renderer;
        utils::Image image;
        renderer.SetSourceNoiseMap(heightMap);
        renderer.SetDestImage(image);
        renderer.Render();
// WRITING THE HEIGHT MAP IMAGE TO AN OUTPUT FILE

        utils::WriterBMP writer;
        writer.SetSourceImage(image);
        writer.SetDestFilename("output.bmp");

        system("pause");
}

最佳答案

在以下代码行中,使用图像数据和文件名设置utils::WriterBMP实例

    utils::WriterBMP writer;
    writer.SetSourceImage(image);
    writer.SetDestFilename("output.bmp");

但是您实际上从未调用过writer函数来写入图像数据。我实际上不能从他们的文档中找到该类或函数名称。但我敢肯定,您可以轻松解决此问题。

关于c++ - 使用Libnoise生成高度图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28723220/

10-12 21:23