2015-02-25 5 views
1

Я пытаюсь реализовать библиотеки libnoise и генерировать карту высот, которую затем я могу импортировать в L3DT, чтобы визуализировать базовый 3D-ландшафт с использованием алгоритма шума Perlin. Это мой последний проект в качестве научного руководителя в области компьютерных наук. Тема - это, по сути, процессное создание контента, ориентированное на создание ландшафта.Использование Libnoise для создания карты высот

Я правильно настроил свой Eclipse CDT и связал все необходимые файлы заголовков и библиотеки. Программа так же, как описано в учебнике серии libnoise, в частности, третий учебник, который я ссылку здесь: http://libnoise.sourceforge.net/tutorials/tutorial3.html

Все, кажется, работает нормально, сборка прошла успешно, то программа выполняется до завершения, но независимо от того, то, что я делаю на выходе файла Bitmap, «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"); 
} 
+0

Возможно, вы, вероятно, пропустили какой-то шаг после создания 'writer', чтобы фактически записать данные. –

+0

Я самый большой идиот жив. Отсутствует строка кода, которая выполняла фактический вывод записи. Такая простая ошибка, так много часов головной боли. Спасибо, человек! –

+0

@SaiNarayan: Если ответ на πάντα ῥε answer ответит на ваш вопрос, пожалуйста, подумайте о его принятии или голосовании. – Richard

ответ

2

В следующих строках кода вам настроить utils::WriterBMP например, с данными изображения и имя файла

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

Но вы никогда не называть функцию writer для записи данных изображения. Я не могу на самом деле найти этот класс или то, что имя функции должно быть из их документации. Но я уверен, что вы можете легко это понять.