Вторник, 26.11.2024, 18:06
Приветствую Вас Гость

Разработка игр c использованием JPCT

Каталог статей

Главная » Статьи » Разработка игр » JPCT

2. Первый шаг с JPCT
Введение

Данный урок продемонстрирует как использовать JPCT в приложении java. Если у вас возникли проблемы с запуском приложения воспользуйтесь этой статьей

Первый шаг с JPCT

Код

package jpctfiststep;

import com.threed.jpct.FrameBuffer;
import com.threed.jpct.IRenderer;
import com.threed.jpct.Object3D;
import com.threed.jpct.Primitives;
import com.threed.jpct.World;

/**
  *
  * @author Ruslan.Nevedomy
  */
public class JpctFistStep {

  private World world;
  private FrameBuffer buffer;
  private Object3D box;
  /**
  * @param args the command line arguments
  */
  public static void main(String[] args) throws Exception{
  // TODO code application logic here
  new JpctFistStep().loop();
  }
  public JpctFistStep() throws Exception {
  world = new World();
  world.setAmbientLight(0, 255, 105);

  box = Primitives.getBox(13f, 2f); 
  box.build();
   
  world.addObject(box);
  world.getCamera().setPosition(50, -50, -5);
  world.getCamera().lookAt(box.getTransformedCenter());
  }

  private void loop() throws Exception {
  buffer = new FrameBuffer(800, 600, FrameBuffer.SAMPLINGMODE_NORMAL);
  buffer.disableRenderer(IRenderer.RENDERER_SOFTWARE);
  buffer.enableRenderer(IRenderer.RENDERER_OPENGL);

  while (!org.lwjgl.opengl.Display.isCloseRequested()) {
  box.rotateX(0.01f);
  buffer.clear(java.awt.Color.BLUE);
  world.renderScene(buffer);
  world.draw(buffer);
  buffer.update();
  buffer.displayGLOnly();
  Thread.sleep(10);
  }
  buffer.disableRenderer(IRenderer.RENDERER_OPENGL);
  buffer.dispose();
  System.exit(0);
  }
}

Начнем по порядку.

Импортируем используемые  классы
Код
import com.threed.jpct.FrameBuffer;
import com.threed.jpct.IRenderer;
import com.threed.jpct.Object3D;
import com.threed.jpct.Primitives;
import com.threed.jpct.World;

Создаем экземпляр класса World и устанавливаем общее освещение.
Класс World, в jPCT является контейнером, который аккумулирует все, что нужно для того, чтобы описать 3D-сцену, это источники света, 3D-объекты, камеры. 
Код
world = new World();
world.setAmbientLight(0, 255, 105);

Далее создаем объект. Объект в jPCT это экземпляр Object3D. Его можно загрузить из файла, создать самостоятельно из треугольников или выбрать один из множества стандартных примитивов. В данном примере выбран последний вариант. 
Код
box = Primitives.getBox(13f, 2f);

Следующий шаг это построение объекта, этот шаг должен быть выполнен для всех объектов требующих отрисовки, во время построения объекта, происходит создание нормалей, расчет ограничительной рамки, расчет поворотов и другие действия.  Данное действие можно не выполнять если установить параметр autoBuild специального класса настройки Config в true. 
Код
box.build();
Следующий код добавляет ранее созданный объект в мир для отрисовки а также задает положение камеры  и направляет ее на центр созданного объекта
Код
world.addObject(box);  
world.getCamera().setPosition(50, -50, -5);
world.getCamera().lookAt(box.getTransformedCenter());

После того как мы создали объект для отрисовки приступим к созданию окна в котором он будет рисоваться. При создании буфера указываем размеры 800х600 и режим SAMPLINGMODE_NORMAL т.к. мы не используем антиализинг. Настраиваем JPCT на использование OpenGL, сначала отключаем программный рендеринг затем включаем OpenGL. В этом случае создание окна берет на себя JPCT.
Код

buffer = new FrameBuffer(800, 600, FrameBuffer.SAMPLINGMODE_NORMAL);
buffer.disableRenderer(IRenderer.RENDERER_SOFTWARE);
buffer.enableRenderer(IRenderer.RENDERER_OPENGL);

Непосредственно сам цикл рисования выглядит следующим образом
Код

while (!org.lwjgl.opengl.Display.isCloseRequested()) {
  box.rotateY(0.01f);
  buffer.clear(java.awt.Color.BLUE);
  world.renderScene(buffer);
  world.draw(buffer);
  buffer.update();
  buffer.displayGLOnly();
  Thread.sleep(10);
}

Цикл отрисовки включается в себя:
1) очистку буфера
2) расчет геометрии
3) рисование геометрии в буфер
4) отображение содержимого буфера на экран

После закрытия окна необходимо освободить занятые ресурсы.
Код

buffer.disableRenderer(IRenderer.RENDERER_OPENGL);
buffer.dispose();
System.exit(0);


Для написания были использованы следующие материалы
1) JPCT HelloWorld
Категория: JPCT | Добавил: Gram01 (29.07.2013)
Просмотров: 1719 | Теги: jpct на русском, jpct первый шаг, helloworld jpct, jpct, jpct по русски | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Категории раздела
JPCT [11]
Раздел о разработке игр на устройства работающие не под управлением Android'а
Сеть [2]
Раздел по вопросам касающимся сетевого взаимодействия приложений на java в контексте разработки игр
Контент [0]
Статьи о работе к контентом при разработки игр
Скрипты [2]
использование скриптов в игровом движке
Разное [1]
различные материалы о разработке игрового движка
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Copyright Неведомый Р.А. © 2024 | Рейтинг@Mail.ru