Vasara Posted September 7, 2020 Posted September 7, 2020 (edited) Добрый день. Из документации понял, что для записи сгенерированных данных в картинку карты высот в классе Image есть методы: set2D () и перегруженный setPixels (). С первым, благодаря примеру, всё более менее понятно. Со вторым возникли трудности. Создаю файл: image->create2D(lmapTileResolutionX, lmapTileResolutionY, Image::FORMAT_RGBA8); Генерирую и заполняю массив чаров: heightSourceArray = new unsigned char [lmapTileResolutionX * lmapTileResolutionY]; heightSourceArray i = (rand())%255; Вызываю метод image->setPixels(heightSourceArray); В режиме дебага вылетает с необработанным исключением 0x00007FFCDCB3DB9E (ucrtbase.dll) . Так как других ошибок дебагер не выдаёт, идеи куда смотреть закончились. С Уважением, Константин. Edited October 8, 2020 by Vasara
morbid Posted September 8, 2020 Posted September 8, 2020 Здравствуйте, Константин. Я правильно, понял, что вы уже сами разобрались с проблемой? How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN
Vasara Posted September 8, 2020 Author Posted September 8, 2020 (edited) 5 hours ago, morbid said: Здравствуйте, Константин. Я правильно, понял, что вы уже сами разобрались с проблемой? Здравствуйте. Нашёл более подходящий способ для решения моих задач. setPixels оставил на разберусь "может быть когда нибудь потом". Edited September 8, 2020 by Vasara
semenov.anton Posted June 5, 2021 Posted June 5, 2021 (edited) Здравствуйте! У меня возникла та же проблема при попытке подсунуть в ImagePtr->setPixels массив из unsigned char *, который сформировала библиотека CImg. CImg<unsigned char> testImg(2048, 2048, 1, 3); testImg.fill(0); unsigned char purple[] = { 255,0,255 }; testImg.draw_text(100,100,"Hello World",purple); unsigned char * ref = testImg.data(); _testImg->setPixels(ref); _tiltmeter->setLayerImage(7, _testImg, 1); _testImd глобален и в нём уже лежит изображение. Что в итоге надо сделать, чтобы ImagePtr воспринимал другой массив? UPD: пишет следующую ошибку - Expression: data == NULL && "Image::setPixels(): data is not NULL" Edited June 5, 2021 by semenov.anton
sweetluna Posted June 7, 2021 Posted June 7, 2021 Здравствуйте. Перед тем как вызвать setPixels, вызывайте clear() для очистки data, а после нужно вызвать create2D с флагом allocate выставленным в 0. ImagePtr img = Image::create(); unsigned char* ref = nullptr; img->create2D(3, 3, Image::FORMAT_RGBA8); img->clear(); img->setPixels(ref); img->create2D(3, 3, Image::FORMAT_RGBA8, 1, 0, 0); May RenderDoc/Nsight Graphics/Intel GPA bless you
Recommended Posts