2010-06-15 2 views
1

Я изучаю возможность написать своего рода аналог ноутбука, который воспроизводит внешний вид и использование традиционного ноутбука, но с дополнительным преимуществом настройки страницы так, как вы не можете сделать Бумага - попросите программу разместить там рулонную бумагу, там же, там же, вставить изображение, вставить запись из встроенной камеры, попытаться распознать рукописный ввод на входе планшета, вставить какой-то латекс для опрятных формул и так далее. Мне очень интересно развить его, чтобы увидеть, могут ли писать заметки на компьютере в любом месте рядом с удобной обычной бумагой + предложение карандаша (трудно сделать IMO) и всегда можно включить его в качестве университетского проекта на C++, поэтому двойной выигрыш там ,Запись GUG с поддержкой OpenGL

Исходя из типа проекта есть определенные требования для пользовательского интерфейса:

  • пользователь будет иметь возможность изменить масштаб изображения, перемещать и поворачивать ноутбук, как он хочет, и я думаю, что это довольно разумен делегат его OpenGL, поэтому перспективный графический интерфейс должен хорошо работать с OGL (желательно, чтобы его отображали)
  • Интерфейс должен быть доступен с минимальным количеством ввода с клавиатуры, как пожелает пользователь (включая какие-то жесты) до ограничения клавиш клавиатуры как модификаторы движения пера и кранов; это включает в себя планшет и возможную поддержку мультитач
  • интерфейс должен оставаться в стороне от того, где он не нужен, и подходить туда, где это необходимо, и быть легко слоистым.
  • сам лист ноутбука будет контейнером для объектов, представляющих записные книжки, поэтому он было бы неплохо, если бы графический интерфейс мог бы накладывать некоторые кадры поверх точных частей листа с рисунком OpenGL, чтобы обозначить, что можно сделать с данной частью (например, перемещение, поворот, удаление, копирование, редактирование и т. д.) и его экстенты

С точки зрения интерфейса, это, вероятно, будет похоже на Alias ​​'Sketch Book Pro: picture.

Что касается наборов инструментов, я рассматриваю Qt и nui, но я не знаю, насколько хорошо они соответствовали бы требованиям и насколько хорошо они могли бы обрабатывать такое приложение.
Насколько я знаю, вы можете каким-то образом заставить Qt заниматься рисованием виджета с помощью OpenGL, но, с другой стороны, я слышал голоса, что структура слот-сигнала не совсем оптимальна и требует собственного препроцессора, и я не знаю, как сложно будет делать все пользовательские виджеты, которые мне понадобятся (например, цветовые колеса, линейка, рамки кадров, выбор рекламных блоков, всплывающее меню с планшетами и т. д.) в ограничениях Qt. Кроме того, довольно много программ Qt, которые у меня были на моей машине, выглядели действительно вялыми, но это может быть связано со старым компьютером или программистами, использующими Qt субоптимально, а не самой каркас.
Что касается nui (http://www.libnui.net/) Я знаю, что это также кросс-платформенная и все основные вещи, которые вам потребуются от инструментария GUI, и что является самым большим плюсом с OpenGL-с самого начала, но я не знаю, как это с пользовательскими виджетами и другими аспектами, и это, безусловно, имеет меньшую пользовательскую базу и менее подробную документацию, чем Qt.

Вопрос идет как это:

ли какие-либо из этих наборов инструментов выполнения (желательно все) требования или есть хорошо фитинга инструментарий я не сталкивался или, может быть, я должен просто засучить рукава, получить SFML (или, может быть, Clutter будет больше подходит для этого?) и что-то вроде FastDelegates или libsigC++ и запрограммировать интерфейс GUI с самого начала?
Я был бы очень рад, если бы кто-нибудь имел опыт работы с аналогичным проектом GUI и мог бы высказать некоторые замечания о том, насколько хорошо эти инструментальные средства задерживаются или стоит использовать собственный инструментарий GUI в этом случае.

Извините за долговременность, дух.

ответ

1

Поддержка шрифтов OpenGL ужасно, по моему опыту. Похоже, вам придется разрабатывать все свои собственные виджеты, так что даже не потрудитесь с инструментарием. Вы потратите больше времени на изучение набора инструментальных средств, пытаясь выяснить, как получить этот инструментарий для работы с OpenGL, и попытаться выяснить, как сделать ваши специальные виджеты в этом наборе инструментов, чем вы просто сворачиваете самостоятельно. Я бы не дал этот совет в любой ситуации, но это похоже на ваше приложение, и ваш набор виджета будет очень уникальным. Создайте суперкласс для всех виджетов, определите метод draw, даже методы обработчика и т. Д. Для переопределения, и вы уже сделали большую часть того, что эти рамки сделают для вас.

Также я уверен, что вы знаете это, но это огромный проект, поэтому вы должны сначала сузить его до нескольких простых целей для первой итерации.

+4

OpenGL не поддерживает текст/шрифт, поэтому это не может быть ужасно. –

+0

Ну, это действительно GLUT, а не OpenGL, но я думаю, что большинство людей, которые используют OpenGL, тоже используют GLUT. http://www.lighthouse3d.com/opengl/glut/index.php?bmpfont – eeeeaaii

+0

Это в значительной степени то, что я думал, но это действительно большое дело, поэтому я хотел быть уверенным, что это лучший вариант, и именно поэтому Я собираюсь сделать это раньше (за год вперед). Что касается шрифтов - всегда есть FreeType; f – Jaen

5

Вы попробовали FLTK? Это сделано с учетом программирования 3D-графики и имеет интерфейсы к OpenGL. Я написал несколько привязок FLTK->Scheme и нашел, что API будет real fun to work with.

+0

+1 для приятных скриншотов – zildjohn01

+0

Хм ... так что я могу легко иметь всю форму OpenGL canvas и иметь диалоги FLTK, легко вставляемые в нее/нарисованные на ней легко (а не холсты) и виджеты FLTK вместе с той же формой) с FLTK? – Jaen

+0

@Jaden Вы можете встроить другие виджеты в холст OpenGL. –

Смежные вопросы