IrrlichtФорум

Графические примитивы в Irrlicht

#0
22:55, 22 ноя 2010

Как в Irrlicht рисовать графические примитивы ? Пршу помочь в следующем : как нарисовать квадрат , прямоугольник , линия точка...
В заранее спасибо .

#1
23:29, 22 ноя 2010

а тебе их рисовать в 2д или 3д надо?
если в 2д то есть такой родной туториал
здешний перевод: http://www.gamedev.ru/community/irrlicht/articles/?id=5135
мой перевод: http://www.irrlicht.ru/index.php?vm=7.view.21.
или можно покопаться в исходниках моего тетриса http://www.irrlicht.ru/index.php?vm=15.view.26. (средний скрин как раз в режими рисования)
если в api то все методы с именами начинающиемися с draw http://www.irrlicht.ru/api/classirr_1_1video_1_1_i_video_driver.html

#2
23:33, 22 ноя 2010

> Эльмиго
В 2d. Я фцункций нашел какие искал. Но работает только первая вызванная функция рисующая примитив! Тоесть если в программе я нарисую прямоугольник то больше несмогу нарисовать что либо. Знаешь в чем проблема?

#3
23:35, 22 ноя 2010

если ты рисуешь между beginScene() и endScene() то весь этот код пость сюды.

#4
23:40, 22 ноя 2010

Вот код:
  while(device->run())
        { 
      //получаем координаты мыши
receiver.GetMouseState(); // получаем состояние мышки   
mouse.GetInfo(receiver.MouseState.Position); // кидаю состояние в собственный класс
driver->beginScene(true, true, video::SColor(50,50,50,50));
cam.SetPosition(); // устанавливаю позицию камеры
  driver -> draw2DLine(position2d<s32>(10,100),position2d<s32>(100,10),SColor(0,0,0,0));
  driver -> draw2DLine(position2d<s32>((size.x+pos.x)+1,pos.y-1),position2d<s32>((size.x+pos.x)+1,(pos.y+size.y)+1),SColor(0,0,0,0));
  mouse.DrawCursor(driver,device); // рисую курсор
driver->endScene();
      }

#5
23:52, 22 ноя 2010

неплохо было бы проверить сразу после проблемной строчки
printf("%d %d\n", (size.x+pos.x)+1, pos.y-1);
printf("%d %d\n", (size.x+pos.x)+1, pos.y+1);
а то ведь линию в 2 пикселя можно просто не заметить, да еще черного цвета 0,0,0 на почти черном фоне 50,50,50  ;)

#6
23:59, 22 ноя 2010

Не работает. поменял фон на белый и изменил код между begin и end
 
        driver -> draw2DLine(position2d<s32>(10,10),position2d<s32>(300,300),SColor(0,0,0,0));
  driver -> draw2DLine(position2d<s32>(11,111),position2d<s32>(301,301),SColor(0,0,0,0));

Линий не рисуются но при этом спокойно рисуется прямоугольник

#7
0:11, 23 ноя 2010

Предложил бы идею о том что забыл что-то подключить или обьявить но загвоздка в том что рисуется только первый прямоугольник

#8
0:14, 23 ноя 2010

чета тормознул, видать пора спать
потому что ты их рисуешь абсолютно прозрачными, задай цвет вот так SColor(255,0,0,0)

#9
12:44, 23 ноя 2010

Эльмиго
Ты был прав. спасибо. И последний вопрос не в тему на счет SColor. какой диапозон значений она принимает?

#10
12:47, 23 ноя 2010

каждый из четырех параметров SColor(Alpha, Red, Green, Blue) принимают параметры в диапазоне 0..255

#11
14:29, 23 ноя 2010

я 1000 в альфа поставили и заработало . видимо он просто оркуглил 1000 до 255

#12
14:31, 23 ноя 2010

*оркуглил округлил

IrrlichtФорум

Тема в архиве.