LINUX.ORG.RU

С++, 2d графика и очередной «с чего начать?»


0

3

Здравствуйте!

Не мог бы кто-нибудь мне подсказать. Так сказать дать пинок в нужном направлении. Я сам с графическим интерфейсом, или канвасом сталкивался лишь один раз в жизни, когда «писал» на MIDlet Pascal «какую-то бродилку» лет в 12-13, после этого были только zenity и yad для bash'а.

В институте нам дали изучать, недавно, «библиотеку Тупого Художника». Это библиотечка просто обёртка над какими-то функциями в GDI. Настроил кросскомпиляцию, поигрался, даже шутер написал. Теперь хочу перейти на что-то более... полезное что-ли. Но не знаю что мне вообще нужно.

Пока интересует работа с 2d canvas'ом. Нашел SDL, GLUT, GLFW, но для чего именно они используются так и не понял. Или лучше сразу начать учить какой-нибудь GUI-тулкит(Qt)? Или может есть что-то специализированное под 2d графику(прямые, ломаные, фигуры, кривые и т.д.)? Желательно ОО библиотека, потому что пишу на C++.

SDL

Simple direct media layer. Вывод на экран, события с клавиатуры, рендеринг шрифтов, звук - это всё он.

Или может есть что-то специализированное под 2d графику(прямые, ломаные, фигуры, кривые и т.д.)

Cairo. Умеет вывод через X, в файлы, через GTK

GLUT

Хз, но наверняка связана с аппаратной акселерацией.

lispfuerimmer
()

QGraphicsScene из состава Qt. OpenGL.

unC0Rr ★★★★★
()

GLUT — эдакая обертка над OpenGL'ем, упрощающая работу. Крайне советую. SDL — костыли. Всякие Qt-GTK нафиг. C++ тоже нафиг.

Anon
()

Если хочется понять принципы работы оконных библиотек и OpenGL, это к SDL: в ней даже цикл работы окна надо писать самостоятельно, и это очень полезно. Лучше всего SDL версии 2, в репозиториях или ppa убунты должен быть.

GLFW — это такой «lightweight» SDL, смысла использовать его в линуксе с его пакетным менеджерам нет никакого. GLUT слишком ограничен и слишком много прячет.

Если хочется именно работать с 2d без изобретения велосипедов и в объектно-оринтированном стиле, есть cocos2d-x (советую использовать в паре с QtCreator, благо возможность есть). Cocos2d пока что использует идиомы языка Objective-C и иногда потворствует написанию плохого кода, но это гораздо лучше, чем чистые SDL или GLUT, использующие идиомы C без всякой поддержки C++ и вынуждающие писать плохие велосипеды.

quiet_readonly ★★★★
()
Ответ на: комментарий от lispfuerimmer

Simple direct media layer. Вывод на экран, события с клавиатуры, рендеринг шрифтов, звук - это всё он.

Для звука лучше OpenAL использовать, он выглядит как OpenGL и умеет работать в 2d и 3d, с эффектами.

quiet_readonly ★★★★
()

Советую использовать SFML (2.1). Очень хороший фреймворк. Легок в освоении. Вот примеры http://www.sfml-dev.org/tutorials/2.1/graphics-draw.php
SDL тоже хорош. Но на нем будет немного труднее написать полноценную игру)

RevenantX ★★★★
()

SDL - вероятней всего будет слишком низкоуровневой. Там вроде бы не было никаких примитивов вроде линий, кругов и т.д. Их надо делать самому.

GLUT - Придача к OpenGL, если ты не используешь его, то это совсем мимо.

Qt - думаю тут это будет overkill.

Посмотри ещё на вики и в сторону SFML

http://en.wikipedia.org/wiki/List_of_game_engines

frozenix ★★★
()
Ответ на: комментарий от frozenix

ClanLib хорошая штука, но рекомендовать не стал бы. У них нет некоторых хороших фич, да и будущее у неё стремное. Один раз смотрел, что у них там с батчингом, в итоге нашел откровения разработчиков, о том, что класс спрайта уже никто не трогает несколько лет, и никто не знает как он работает.

RevenantX ★★★★
()
Последнее исправление: RevenantX (всего исправлений: 1)
Ответ на: комментарий от frozenix

А зачем тебе оттуда выходить? Потоки для кого придумали?

Anon
()
Ответ на: комментарий от Anon

Я повторяю: это норма! Не обязательно это отрицать.

Pavval ★★★★★
()

SFML, ClanLib, Qt, из HTML5 - Phaser, Pixy.js. Движков просто море, выбирайте любой.

cattail
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.