Земля состоит из квадов, на которые натянута структура. Говорят, текстура генерируется нечаянно при начале забавы для любого квада. В конце концов, для данного ориентируется “тема”, для коей есть базисная структура и весьма добавочные иллюстрации наименьшего объема. В общем на базисную структуру ненароком наносятся данные иллюстрации, кроме того иллюстрации имеют все шансы прилично попадать на стык структуры (тогда уже доли иллюстрации наносятся на немного структур для различных квадов). Наверно, точно аналогично при деле на структуры территории наносятся изображения мертвецов и крови, чтоб можнож было всецело изменять структуры территории в отсутствии повышения применения ОЗУ.

Итак, в program.cpp есть способ createTerrain(), который прилично вызывается любой разов при старте забавы из startSurvival(). К счастью, там ориентируется “тема”, загружаются изображения и создается объект на подобии Terrain (game/Terrain.cpp). В самом деле конструктор ждёт лишь сами изображения и объем игровой области. Видимо в конструкторе именно исполняется генерация поистине нечаянных структур для квадов. Действительно при данном у вида Terrain стремительно вызывается 3 способа – спокойно высылавшим, drawOn() и endDrawOn(). По-видимому первый способ обязан быть вызван до отрисовки объектов на структурах территории – он хранит более-менее нынешний вьюпорт и готовит его для рисования на структурах. Более того после завершения отрисовки оьъектов на структурах территории обязан быть вызван способ endDrawOn() – он возобновит вьюпорт. С другой стороны в способ drawOn() передается объект вида StaticObject – данное ширико применяемый в програмке вид, отражающий структуру OpenGL с привязкой к координатам и некими доп параметрами отрисовки. Короче говоря, в способе drawOn() на базе координат объекта ориентируется структура территории, на коей попадет объект и стремительно вызывается способ drawOnTile(), коему передаются индексы структуры территории в массиве и сам объект. Напротив в данном способе случается главное деяние – наверное, это как раз самое что ни на есть место, крайне имеющее необходимость в оптимизации. Оказалось, что сначала создается свежая официально пустующая структура. Ну что ж затем в буфер отображается нынешняя структура этого квадрата, и лишь потом объект, который мы возобновил наносим на структуру. А теперь после данного эффект (который на поверку лежит в буфере) копируется в порожнюю структуру, после этого структура квада заменяется на снова сделанную. Собственно, все.

Этот ведь приспособление применяется и для отображения пятен крови и мертвецов. Естественно, когда охото умышленно сделать пятнышка крови, они из хоть какого места программы имеют все шансы быть добавлены в очередь (bloodStains в program.cpp). Стало быть перед отрисовкой кадра в способе processGame() в program.cpp есть блок, ограниченный вызовами terrain->beginDrawOn() и terrain->endDrawOn(), где все имеющиеся в очереди пятнышка крови показываются на территорию. В сущности также неторопливо поступаю и с мертвецами.



Possibly related:


 

    Апрель 2018
    Пн Вт Ср Чт Пт Сб Вс
    « Ноя    
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30