Color Picker / Choser для приложения OpenGL - PullRequest
2 голосов
/ 25 марта 2012

Я создаю приложение OpenGL.Я прочитал учебник GLUI по Code Project, чтобы создать элементы управления окнами в приложении OpenGL.Но мое требование состоит в том, чтобы разработать средство выбора / выбора цвета, например, диаграмму RGB или куб RGB, чтобы выбрать цвет.Учебник по проекту кода показывает список цветов в виде раскрывающегося списка.Однако это не очень мне поможет, так как я требую, чтобы он присутствовал как средство выбора цвета Windows.Я знаю, что палитра цветов в качестве диалогового окна является частью приложения Windows.Может кто-нибудь предложить мне способ использовать его с моим приложением OpenGL?

Ответы [ 4 ]

2 голосов
/ 19 декабря 2014

В Windows вы можете напрямую вызывать ChooseColor () из Windows API.Он откроет собственный выбор цвета. Если вам нужно кроссплатформенное решение, крошечные файловые диалоги на sourceforge также имеют палитру цветов и не имеют основного цикла.

2 голосов
/ 25 марта 2012

Вы можете попробовать fox-toolkit .Это основанный на C ++ инструментарий для разработки графических пользовательских интерфейсов.Он предоставляет виджеты Color Picker и OpenGL для трехмерных графических манипуляций.

1 голос
/ 26 марта 2012

Я сделал это с простым градиентным изображением, которое сохранил в памяти.Затем я просто отслеживал положение мыши на изображении и просто считывал данные с изображения (которое хранилось в ОЗУ) и получал для него 32-битное значение цвета RGBA.Это проще, чем считывание пикселей с экрана (также быстрее и надежнее).

Это также позволяет гораздо более гибкий способ представления палитры, только ваше воображение ограничивает внешний вид вашей палитры.Примечание: вы должны использовать 32-битные цвета на изображении, потому что если вы хотите сгладить края, вы просто затушевываете альфа, но сохраняете цвета такими же, чтобы цвета не искажались по краям.Не забудьте включить смешивание при рендеринге изображения.

1 голос
/ 26 марта 2012

Вы можете визуализировать Quad / Triangle / Cirle с разными цветами на каждой вершине
и активировать плавное затенение для интерполяции между этими точками.

Затем просто прочитайте значение цвета из OpenGL в позиции мыши.

edit: или аналогично тому, где вы сами вычисляете цвет позиции мыши (чтение значений сильно замедляет OpenGL!): http://sharathpatali.wordpress.com/2009/07/07/a-color-picker-for-pymt/

...