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

BerylEngine: 0.09 [95 из 365]

Страницы: 1 2 352 53 Следующая »
#0
(Правка: 7:37) 5:34, 19 фев. 2018

Я вернулся:)
Буду опять пилить движок. И чтобы не писать движки десятилетиями - ставлю таймер - 365 дней начиная с сегодня.

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

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

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

+ Показать

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

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


#1
5:34, 19 фев. 2018

резерв

#2
5:34, 19 фев. 2018

резерв

#3
5:34, 19 фев. 2018

резерв

#4
5:34, 19 фев. 2018

резерв

#5
5:34, 19 фев. 2018

резерв

#6
5:34, 19 фев. 2018

резерв

#7
(Правка: 7 мая 2018, 8:50) 5:34, 19 фев. 2018

всяко ссылки

+ Показать

#8
(Правка: 7:28) 7:23, 19 фев. 2018

Пример вывода квада с текстурой (и шейдером)

//-----------------------------------------------------------------------------
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);
}
//-----------------------------------------------------------------------------
#9
7:27, 19 фев. 2018

Прочитал как BeruLave

#10
7:35, 19 фев. 2018

#11
7:36, 19 фев. 2018

WhiteWolf
> Прочитал как BeruLave
ну так тоже можно:)

#12
(Правка: 7:45) 7:41, 19 фев. 2018

Aroch
yes
Просто сейчас я занимаюсь движком по 6-10 часов в день. С таким-то графиком что-то должно получится. Тем более что великих целей нет

....


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

#13
7:50, 19 фев. 2018

war_zes
> Я вернулся:)
Откуда?
war_zes
> анимаюсь движком по 6-10 часов в день
а как же работа?

#14
8:05, 19 фев. 2018

war_zes
> BerylEngine
  Это как ArcticEngine?

Страницы: 1 2 352 53 Следующая »
ФлеймФорумПроЭкты