
Комментарии 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 { } скоупами, а также внести другие доработки. К сожалению, объём работы довольно большой, и сразу сделать всё идеально не получается, поэтому решил выпускать "как есть" и дорабатывать по ходу пьессы
Гравицапа для GPU: OpenGL ES на Kotlin DSL на примере 3D‑«Жизни» Конвея