Флейм
GameDev.ru / Флейм / Форум / BerylEngine [58 из 365]

BerylEngine [58 из 365]

Страницы: 1 2 324 25 Следующая »
war_zesПостоялецwww19 фев. 20185:34#0
Я вернулся:)
Буду опять пилить движок. И чтобы не писать движки десятилетиями - ставлю таймер - 365 дней начиная с сегодня.

Репозиторий: https://github.com/warzes/BerylEngine
Платформа: пока Windows (в планах Linux, Android, браузеры)
GAPI: OpenGL на текущий момент требует 4.3 (или около того)
Цели: низкоуровневый минималистический движок под себя, не более.
Что уже имеется на момент создания темы: обертка на OpenGL, окно, инпут.

На самом деле пробные версии начал делать с января. Тему также хотел создать раньше, но все откладывал.

Ответы на вопросы:

+ Показать

что сейчас готово в обертке:
- создание окна через GLFW. обработка клавы/мыши.
- вершинный, константый, индексный буферы. (можно ставить один или сразу несколько вершинных буферов)
- вершинный и фрагментый шейдеры (скоро будет геометрический, и когда-нибудь тесселяция)
- стейты (бленд, глубина, растеризация, семплер)
- 2D текстуры.
- RT в текстуру.

Но это все конечно замечательно, но пилить движок сам по себе скучно. Поэтому к движку будет пилится и проект. о нем будет написано в следующем посте чуть позже:)

Правка: 19 фев. 2018 7:37

war_zesПостоялецwww19 фев. 20185:34#1
резерв
war_zesПостоялецwww19 фев. 20185:34#2
резерв
war_zesПостоялецwww19 фев. 20185:34#3
резерв
war_zesПостоялецwww19 фев. 20185:34#4
резерв
war_zesПостоялецwww19 фев. 20185:34#5
резерв
war_zesПостоялецwww19 фев. 20185:34#6
резерв
war_zesПостоялецwww19 фев. 20185:34#7
резерв
war_zesПостоялецwww19 фев. 20187:23#8
Пример вывода квада с текстурой (и шейдером)
//-----------------------------------------------------------------------------
bool Sample::Init()
{
  // Создание вершинного и фрагментного шейдеров
  std::vector<std::shared_ptr<Shader>> v =
  {
    std::make_shared<Shader>(ShaderType::Vertex, vShader, ShaderSourceType::String),
    std::make_shared<Shader>(ShaderType::Fragment, fShader, ShaderSourceType::String)
  };
  // создание шейдерной программы
  m_data->shaders = RenderDevice::CreateShaderProgram(v);

  // семплер и текстура
  m_data->sampler = RenderDevice::CreateSamplerState(SamplerDescription::CreateLinearWrap());
  m_data->tex = RenderDevice::CreateTexture2D("data/49.png");
  
  // буфер для позиции вершин
  float vertices[] = { -0.8f, -0.8f, +0.8f, -0.8f, -0.8f, +0.8f, +0.8f, +0.8f,};
  m_data->vb = RenderDevice::CreateVertexBuffer(vertices, sizeof(vertices));
  // буфер для текстурных координат
  float texCoords[] = { 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f, };  
  m_data->tb = RenderDevice::CreateVertexBuffer(texCoords, sizeof(texCoords));
  // индексный буфер
  uint8_t indices[] = { 0, 1, 2, 1, 3, 2 };
  m_data->ib = RenderDevice::CreateIndexBuffer(indices, 6, IndexElementSize::Bit8);

  // формат вершин
  m_data->format = RenderDevice::CreateVertexFormat();
  m_data->format->PushAttribute("a_vertex", VectorType::Float2);
  m_data->format->NextBuffer(); // сообщение что дальше описываются атрибуты следующего вершинного буфера
  m_data->format->PushAttribute("a_texCoord", VectorType::Float2);
  m_data->format->Build({ m_data->vb,m_data->tb } , m_data->shaders);
  
  return true;
}
//-----------------------------------------------------------------------------
void Sample::Render()
{
  auto context = GetRenderContext();

  context->SetRenderTarget2D();
  context->Clear(0.5f, 0.5f, 1.0f);
  m_data->shaders->Bind();
  m_data->format->Bind();
  m_data->sampler->Bind(0);
  m_data->tex->Bind(0);
  context->DrawElements(m_data->ib);
}
//-----------------------------------------------------------------------------

Правка: 19 фев. 2018 7:28

WhiteWolfЗабаненwww19 фев. 20187:27#9
Прочитал как BeruLave
ArochПостоялецwww19 фев. 20187:35#10
war_zesПостоялецwww19 фев. 20187:36#11
WhiteWolf
> Прочитал как BeruLave
ну так тоже можно:)
war_zesПостоялецwww19 фев. 20187:41#12
Aroch
yes
Просто сейчас я занимаюсь движком по 6-10 часов в день. С таким-то графиком что-то должно получится. Тем более что великих целей нет

....


Чтобы было повеселее, опишу проект, который планирую первым делать на этом движке
это стратегия с развитием поселения.
Защищаем реликвию в центре. Чем дольше выживаем - тем больше разрастается поселение вокруг нее (начинается с лагеря в две палатки, а потом и до замков дойдет)
Каждую игровую зиму на поселение непрерывно нападают монстры, с приходом весны атаки заканчиваются.

Правка: 19 фев. 2018 7:45

Doctor_Bro.Постоялецwww19 фев. 20187:50#13
war_zes
> Я вернулся:)
Откуда?
war_zes
> анимаюсь движком по 6-10 часов в день
а как же работа?
БаберЗабаненwww19 фев. 20188:05#14
war_zes
> BerylEngine
  Это как ArcticEngine?
Страницы: 1 2 324 25 Следующая »

/ Форум / Флейм / ПроЭкты

2001—2018 © GameDev.ru — Разработка игр