Найти в Дзене
Генетическая Мона: теперь в OpenGL
В процессе освоения OpenGL-функций в Rust родился побочный квест. У меня есть старый проект Генетической Моны Лизы, который я тут неоднократно описывал. Вот последняя публикация со ссылками на предыдущие: Рисование там делается с помощью цветных треугольников, которые растеризуются вручную. Но массив цветных треугольников просто создан для рендеринга в OpenGL, и это бы существенно ускорило работу алгоритма. Я, однако, медлил с доработками, пока случайно не наткнулся на более примитивный вариант рисования...
1 день назад
Точка, точка, два крючочка, или хэнохэномохэдзи
Намедни, играя в бесподобную японскую игру Okami, вспомнил один забавный факт. Когда NPC в игре находится слишком далеко, у него над головой появляется иконка, которая символизирует его настроение или просто обозначает его личность. В некоторых случаях она выглядит так: Это японское народное изображение человеческой рожицы, в точности как у нас: Точка, точка, два крючочка, Носик, ротик, оборотик, Палка, палка, огуречик, Вот...
1 неделю назад
Разработка игры RDS на языке Rust: Текстуры в SDL2
В прошлом выпуске я одолел загрузку изображения в формате PNG: Теперь игровые объекты можно рисовать не квадратиками, а настоящими картинками. Растровое изображение это некий массив байтов, и в SDL2 есть два способа работы с ним. Поверхности, хотя и позволяют манипулировать данными напрямую, оказываются очень медленными в самом банальном случае – когда необходимо рисовать картинки с прозрачностью. При наложении двух пикселов друг на друга нужно вычислить новый цвет пиксела, который образуется из двух исходных цветов с учётом их прозрачности...
1 неделю назад
Загрузка PNG-изображения для игры RDS на языке Rust
В прошлой части я овладел техникой распаковки формата DEFLATE: Эта техника понадобится для загрузки изображений в формате PNG, которую буду описывать здесь. Файл PNG устроен просто: он состоит из блоков, где у каждого блока есть длина и тип. Если мы знаем тип блока и умеем/хотим его обрабатывать, то обрабатываем, если не умеем/не хотим, то просто пропускаем. Поэтому задача в данном случае простая: нужно всего лишь распаковать блоки определённого типа, а остальные нас не интересуют. Для игры можно даже подготовить оптимизированные изображения, выкинув из них все ненужные блоки...
4 недели назад
zlib.decompress() для игры RDS на Rust
Я немного забуксовал в написании игры RDS, так как заимел довольно дерзкие планы на будущее. Во-первых, я хочу графику наконец сделать с привлечением OpenGL, ведь надо когда-то начинать. Но для OpenGL нужны текстуры с альфа-каналом, а для текстур с альфа-каналом нужны изображения в формате PNG, а для изображений в формате PNG нужно подключать зависимость SDL2_image. Помню, в прошлый раз что-то там не завелось, а в этот раз и проверять не стал. Вместо этого я буду делать свою поддержку PNG, потому что кроме чтения этого формата мне больше ничего не требуется...
1 месяц назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала