Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: как работать с glPixelMap в OpenGL?  (Прочитано 5624 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« : 20-03-2006 09:34 » 

  Доброго времени суток.

Суть проблемы:
Есть двумерный массив:
 unsigned char m[256][7] =
 0 0 0 0 0 0 0
 1 1 1 1 1 1 1
 2 2 2 2 2 2 2
 .................
 255 255 255 255 255 255 255
 теперь я хочу построчно вывести этот массив как прямоугольник (7х256) из пикселей, так чтобы
 значения с 0 до 99 выводились красным
 с 100  до 199 выводились синим,
 с 199 до 255 выводились смесью зеленого с красным 50%на50%

Думаю это можно сделать следующим образом:

 сначало зададим таблицу цветов
glPixelMapusv(GL_PIXEL_MAP_I_TO_I, ?? ,&table );
 потом включаем нашу таблицу
glPixelTransferi(GL_MAP_COLOR, TRUE);

 потом
glDrawPixels(7, 256, GL_COLOR_INDEX, GL_UNSIGNED_BYTE, m); // m -- это наш двумерный см. выше

 Но я никак не пойму (и что-то нигде найти не могу Не понял):

Как формируется третий параметр glPixelMapusv (table), и что там должно быть вторым параметром?
« Последнее редактирование: 20-03-2006 09:47 от Артем » Записан
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #1 : 27-03-2006 14:03 » new

 Как использовать GL_PIXEL_MAP_I_TO_I я так и не нашел,  но можно сделать по другому
Код:

// палитра
  for (i = 0; i < 256; i++)
  {
    red[i]   = // задается нужное значение красного для данного индекса i  (0 - min, 1 - max)
    green[i] = // задается нужное значение зеленого для данного индекса i (0 - min, 1 - max)
    blue[i]  = // задается нужное значение синего для данного индекса i (0 - min, 1 - max)
  }

 
  glPixelMapfv(GL_PIXEL_MAP_I_TO_R, 256, red);
  glPixelMapfv(GL_PIXEL_MAP_I_TO_G, 256, green);
  glPixelMapfv(GL_PIXEL_MAP_I_TO_B, 256, blue);

  glPixelTransferi(GL_MAP_COLOR, TRUE);       
  glDrawPixels(7, 256, GL_COLOR_INDEX, GL_UNSIGNED_BYTE, ь) ;


таким образом, для любого значения (от 0 до 255) можно задать любой цвет
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines