Обновить

Гравицапа для GPU: OpenGL ES на Kotlin DSL на примере 3D‑«Жизни» Конвея

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели11K
Всего голосов 3: ↑3 и ↓0+4
Комментарии2

Комментарии 2

1. Есть опечатки, типа "undefinedпо старинкеundefined"
2. Обязательно ставь тэг языка в блоках с кодом, чтобы синтаксис подсвечивался:
```kotlin
3. Тема DSL подготовлена, но не докручена:

frame.draw()
frame.draw()

Это всё же и удобнее, чем "по старинке", но это до сих пор явный вызов внутреннего состояния объекта, легко что-то перепутать, то есть фреймворк всё-равно когнитивно нагружает пользователя.

Что такое Domain Specific Language? На мой взгляд, его основная задача: спрятать в себя внутрянку, оставив только "готовые блоки" внаружу. Понятное дело, что с такой задачей, как кастомный рендеринг OpenGL - это нетривиально. Но хотелось бы видеть что-то вроде:

frame {
  draw(...)
  draw(...)
}

Тут уже понятная кложура и текст читается, как рассказ, именно что в парадигме DSL

Очень рекомендую посмотреть, как DSL реализован в Ktor

В общей части поставленных и решённых задач - это просто пушка. Это красиво. И это лучше, чем "по старинке" - определённо!

Огромное спасибо за комментарий! Правки в текст уже внес, еще раз спасибо! По поводу DSL. Шейдерная часть уже устроена как DSL, а код кадра пока остался императивным. В 1.3.0 планирую перевести onFrame на ресивер, сделать offscreen { } / present { } скоупами, а также внести другие доработки. К сожалению, объём работы довольно большой, и сразу сделать всё идеально не получается, поэтому решил выпускать "как есть" и дорабатывать по ходу пьессы

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации