Как стать автором
Обновить

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

как по мне то все три урока можно было собрать в 1
Да, я говорил об этом в первой статье, но решил все таки сохранить иерархию оригинала
Вот и окно появилось. Замечательно. Жду продолжения и шейдеров побольше!
Смысл этих статей в век бесплатных графических движков?
В том, чтобы разобраться как оно все действительно работает изнутри, а не брать бесплатный движок и «шмяк-шмяк и в продакшен».
так продакшен в готовых движках на 4 порядка лучше будет, чем рисование полигонов на экране уровня конца 90х
Еще раз, ключевое слово разобраться. Никто не предлагает тут писать свой «Crysis за три вечера».
Но кто-то же должен писать готовые движки? Для этого нужно разбираться, как это делать. Если раньше только иногда вспоминалась «Академия» Азимова, то сейчас, при прочтении подобных комментариев или статей, прямо уже вижу картину, как физики-ядерщики возводятся в ряд жрецов.
поверьте, компании создающие игровые движки не нуждаются в хабрах
Компании может и не нуждаются в самих хабрах, но нуждаются в людях, которые читают хабр. Конечно, для разработки графики не требуется очень много спецов, но они нужны (посмотрите вакансии топовых компаний). А начинающий специалист должен с чего-то начинать, для чего и предназначен данный цикл уроков. Прошу прощения, если я вас не так понял.
И откуда они по вашему берутся? Самозарождаются из воздуха сразу с топовыми специалистами?
так продакшен в готовых движках на 4 порядка лучше будет, чем рисование полигонов на экране уровня конца 90х

Ага, а после такого выходят игры на юнити, в которых "пиксельный" спрайт в 16*16 крупных пикселей рисуется как здоровенная текстура типа 128*128, потому что разработчик не осилил параметры фильтрации текстур.

чего там осиливать? это выбирается в импорте текстуры.

glfw и прочее это прошлый век, никто сейчас не теряет на это время.
Смелое заявление. Это либо какой-то толстый троллинг, видимо полнейшее непонимание предназначения GLFW/SDL/SFML и прочих OGL-библиотек.
Я искренне не вижу смысла тащить чужую архитектура движка и ненужные модули для каких-то небольших проектов.
И тем более глупо использовать Unity/UE для какой-нибудь 2D игры, где от OpenGL'а требуется лишь отрисовка текстур и, может быть, освещения. В таких случаях небольшой самописный рендер уменьшит размер и увеличит скорость загрузки игры на порядок.
предлагаешь писать велосипед? на хабре велосипеды жутко караются вместе с авторами
Предлагаю не использовать пушку для стрельбы по воробьям.
И чем же кроссплатформенно работают с OGL контекстом в веке нынешнем по-вашему?
игровой цикл

Мне кажется, понятие «игровой цикл» значит чуть другое. Я понимаю, что это перевод и в оригинале написано именно так, но, поправьте если ошибаюсь, game loop – это основной цикл обработки всего. Начиная с графики и заканчивая network-манипуляциями.
Да, вы правы.
Убедитесь в том, что подключение GLEW происходит раньше GLFW. Заголовочный файл GLEW содержит в себе подключение всех необходимых заголовочных файлов OpenGL, таких как GL/gl.h

Видимо, какой-то устаревший костыль.
GLFW последней стабильной версии сам прекрасно подключает все нужные заголовки, если не объявлен макрос GLFW_INCLUDE_NONE, а он по умолчанию не объявлен.
Хм, хорошо, спасибо. Как только появится возможность — сделаю сноску по этому поводу.
Вот написал я программу по открытию окна.
Создал окно 720x720. Но почему-то glfwGetFramebufferSize() возвращает мне 1440x1440. Хотя окно выглядит как 720x720, но OpenGL рисует правильно только при glViewport(1440x1440), а при 720х720 смещается к началу (в левый нижний угол окна).
Может кто знает, в чем дело?
А как сделать одновременный ввод с нескольких клавиш? Я повесил на стрелки, на GLFW_PRESS и GLFW_REPEAT, инкремент цвета, но работает только одна стрелка одновременно, когда зажимаешь вторую, первое значение меняться перестаёт. =\

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

Т.е. получили GLFW_PRESS на W, записали это состояние как активное в переменную или контейнер. Получили GLFW_RELEASE на W, записали это состояние как неактивное в переменную или контейнер. А в цикле логики проверяем записанное состояние, и если оно активно, то например двигаем персонажа вперед.

Можно конечно и напрямую в цикле логики опрашивать состояние каждой клавиши c помощью функции glfwGetKey. Вроде она состояния из внутреннего массива берет.

Спасибо за ответ. Жаль только мой комментарий 5 лет на модерации висел. )

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

Публикации

Истории