Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WinApi - Смешение цветов в консоли, WinApi - Смешение цветов в консоли 
:(
    Опции темы
АлексейX86
  Дата 9.2.2013, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 7.2.2013

Репутация: нет
Всего: нет



Доброго времени суток.
Пишу простенький игровой движок в консоли (ASCII графика) , и появилась такая идея сделать алгоритм освещения в графическом движке.
Вывод графики идет с помощью :

Код

    BOOL WriteConsoleOutput(

        HANDLEhConsoleOutpu,         // дескриптор экранного буфера
        CONST CHAR_INFO *lpBuffer,   // буфер данных
        COORD dwBufferSize,          // размер буфера данных
        COORD dwBufferCoord,         // координаты ячейки
        PSMALL_RECT lpWriteRegion    // прямоугольник для чтения

    );


Идея освещения в том  , что бы цвет char'а был суммой двух (или больше) других цветов : 
То есть : черный + белый = серый , и также что бы можно было менять интенсивность цвета -  черный*0.2 + белый*0.8 = светло-серый.

Цвет char'а задаеться как 
WORD Attributes из CHAR_INFO , но вот как сдлеать смешение цветов у меня не очень получаеться.

Для начала я делаю допустим константы : 
greencolor , 
redcolor , 
и т.д , 
и тогда у меня цвет должен задаваться так : 
Код

CHAR_INFO consolePointsBuffer[siz].Attributes = (greencolor *0.4)+(redcolor  *0.6); //зелено-красный , с уклоном к красному

Но как сделать  саму операцию смешения/суммы двух (или больше) цветов у меня не очень получаеться (одная из проблем из-за того что при указании цвета сразу ижет указание цвета фона и цвета символа).
Спасибо за помощь.


Вот примеры ASCII освещения которое я хочу сделать :

(хотелось бы сделать освещение через смешение цветов , а не через встроенные градации цветов консоли)
http://s2.ipicture.ru/Gallery/Viewfull/21517253.html  - (идеальный для меня алгоритм)
http://s2.ipicture.ru/Gallery/Viewfull/21517236.html  - (тоже отличные плавные переходы цветов)
http://s2.ipicture.ru/Gallery/Viewfull/21517239.html
http://s2.ipicture.ru/Gallery/Viewfull/21517238.html

PM MAIL   Вверх
GremlinProg
Дата 10.2.2013, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



Цитата(АлексейX86 @  10.2.2013,  01:19 Найти цитируемый пост)
Но как сделать  саму операцию смешения/суммы двух (или больше) цветов у меня не очень получаеться (одная из проблем из-за того что при указании цвета сразу ижет указание цвета фона и цвета символа).

В текстовом режиме до Vist'ы у Вас мало что получится, там 4-битный атрибут цвета в системную палитру.

После Vist'ы, есть интересная команда SetConsoleScreenBufferInfoEx, которой можно выставить эту палитру (CONSOLE_SCREEN_BUFFER_INFOEX::ColorTable). Вот тут уже можно разгуляться.

До Vist'ы это решалось переходом в графический режим.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.4127 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.