FreeBasic
Главная
Вход
Регистрация
Пятница, 26.04.2024, 02:40Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Freebasic » Вопросы по языку FreeBasic » Использование RGB и RGBA (Использование RGB и RGBA)
Использование RGB и RGBA
mashakovmaratДата: Четверг, 20.06.2019, 17:22 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 36
Репутация: 0
Статус: Offline
Добрый день.

Методом тыка прихожу к заключению, что если хочется использовать RGB и RGBA, необходимо в SCREEN / SCREENRES указывать глубину цвета, например. 32. Но тогда получается, что простое указание цветов от 0 до 15 перестает работать.

Пока не забыл, маленькое отступление, RGB(A) каналы должны быть Integer - тогда получаем, что ожидаем.

С другой стороны, если глубину в SCREEN / SCREENRES не указываем / пропускаем, RGB перестает работать - работает только базовое указание цветов 0-16.

Это все было про стандартный настольный ПК на Linux-е.

Хочется использовать ALPHA-канал для прозрачности, поэтому необходимо объявить глубину цвета. Я ничего против не имею, только вот для ARM-архитектуры почему то после объявления глубины графика не выводится - просто черненький экран. Причем не выводится ни RGB-расцветка, ни простое указание цвета. И вообще непонятно, рисуются ли, хотя бы черным по черному, примитивы. Кодла глубину цвета из SCREENRES убираю и использую цвет от 0 до 16, все замечатльно.

Прошу ваших комментариев.
Можем я чего не замечаю и есть, например, какое-нибудь необходимое глобальное объявление на использование RGB(A) ???
Или же на ARM-е прозрачности не будет ???
 
DarkDemonДата: Суббота, 22.06.2019, 18:47 | Сообщение # 2
Полковник
Группа: Друзья
Сообщений: 188
Репутация: -2
Статус: Offline
Цитата mashakovmarat ()
каналы должны быть Integer


UINTEGER

INTEGER  имеет отрицательный диапазон. Чисто для корректности лучше использовать UINTEGER.

Цитата mashakovmarat ()
Но тогда получается, что простое указание цветов от 0 до 15 перестает работать.


Ну да, либо индексированное, либо RGB.

Цитата mashakovmarat ()
Причем не выводится ни RGB-расцветка, ни простое указание цвета.


Я ставлю 32 бита. Работает только на PUT с методом Alpha. Но свои уже написал CUSTOM-ные.
Для всех примитивов, чтобы прозрачные были, вроде в справке указан флаг для SCREENRES.
На FB замесили аццкую смесь и Transparent и Alpha, работает оно всё очень стрёмно, там косяки
гарантированы, сам много раз напарывался мол должно работать, а нихрена, приходится изобретать всякую
дичь, например если ты загрузишь прозрачную картинку и попробуешь применить к ней билинейку с википедии
то получишь розовые края у прозрачных частей изображения, мне приходилось создавать отдельный слой
и блитить в него alpha-ой прежде чем выводить на экран, сразу не прокатывало, всё это выглядит сильно по-бичарски.
Даже если ты думаешь что ты понял как оно работает - уверяю что ты нихрена не понял)))
Вместо одного режима разрабы запихали два и отдали на откуп, т.е. секс гарантирован.
Это не является препятствием, если ты используешь готовую, уже нарисованную графику,
но если тебе надо что-то сгенерить в программе полупрозрачное - вознеси руки к небу и молись, ну и бубен
тоже помогает иногда.

Цитата mashakovmarat ()
Можем я чего не замечаю и есть, например, какое-нибудь необходимое глобальное объявление на использование RGB(A)


Да нет там нифига, RGB и RGBA и всё.

Добавлено (22.06.2019, 19:32)
---------------------------------------------
Цитата mashakovmarat ()
Но тогда получается, что простое указание цветов от 0 до 15 перестает работать.


Ну держи классическую палитру:

Код
DIM SHARED Tb256(255) AS UINTEGER = {4278190080, 4278190250, 4278233600, 4278233770, _
4289331200, 4289331370, 4289352960, 4289374890, 4283782485, 4283782655, 4283826005, _
4283826175, 4294923605, 4294923775, 4294967125, 4294967295, 4278190080, 4279505940, _
4280295456, 4281084972, 4281874488, 4282664004, 4283453520, 4284572001, 4285624689, _
4286677377, 4287730065, 4288782753, 4290164406, 4291480266, 4293059298, 4294967295, _
4278190335, 4282384639, 4286382335, 4290642175, 4294902015, 4294901950, 4294901885, _
4294901824, 4294901760, 4294918144, 4294933760, 4294950400, 4294967040, 4290707200, _
4286447360, 4282449664, 4278255360, 4278255424, 4278255485, 4278255550, 4278255615, _
4278238975, 4278222335, 4278206719, 4286414335, 4288511487, 4290674175, 4292771327, _
4294934015, 4294933982, 4294933950, 4294933917, 4294933885, 4294942077, 4294950525, _
4294958717, 4294967165, 4292804477, 4290707325, 4288544637, 4286447485, 4286447517, _
4286447550, 4286447582, 4286447615, 4286439167, 4286430975, 4286422527, 4290164479, _
4291213055, 4292523775, 4293572351, 4294948607, 4294948586, 4294948570, 4294948550, _
4294948534, 4294952630, 4294957750, 4294961846, 4294967222, 4293590966, 4292542390, _
4291231670, 4290183094, 4290183110, 4290183130, 4290183146, 4290183167, 4290177791, _
4290173695, 4290168575, 4278190193, 4280025201, 4281860209, 4283760753, 4285595761, _
4285595733, 4285595704, 4285595676, 4285595648, 4285602816, 4285609984, 4285617408, _
4285624576, 4283789568, 4281889024, 4280054016, 4278219008, 4278219036, 4278219064, _
4278219093, 4278219121, 4278211953, 4278204529, 4278197361, 4281874545, 4282660977, _
4283775089, 4284561521, 4285610097, 4285610081, 4285610069, 4285610052, 4285610040, _
4285613112, 4285617464, 4285620536, 4285624632, 4284576056, 4283789624, 4282675512, _
4281889080, 4281889092, 4281889109, 4281889121, 4281889137, 4281885041, 4281881969, _
4281877617, 4283453553, 4284043377, 4284567665, 4285091953, 4285616241, 4285616233, _
4285616225, 4285616217, 4285616208, 4285618512, 4285620560, 4285622608, 4285624656, _
4285100368, 4284576080, 4284051792, 4283461968, 4283461977, 4283461985, 4283461993, _
4283462001, 4283459953, 4283457905, 4283455857, 4278190144, 4279238720, 4280287296, _
4281335872, 4282384448, 4282384432, 4282384416, 4282384400, 4282384384, 4282388480, _
4282392576, 4282396672, 4282400768, 4281352192, 4280303616, 4279255040, 4278206464, _
4278206480, 4278206496, 4278206512, 4278206528, 4278202432, 4278198336, 4278194240, _
4280295488, 4280819776, 4281344064, 4281868352, 4282392640, 4282392632, 4282392624, _
4282392616, 4282392608, 4282394656, 4282396704, 4282398752, 4282400800, 4281876512, _
4281352224, 4280827936, 4280303648, 4280303656, 4280303664, 4280303672, 4280303680, _
4280301632, 4280299584, 4280297536, 4281084992, 4281347136, 4281609280, 4282133568, _
4282395712, 4282395708, 4282395700, 4282395696, 4282395692, 4282396716, 4282397740, _
4282399788, 4282400812, 4282138668, 4281614380, 4281352236, 4281090092, 4281090096, _
4281090100, 4281090108, 4281090112, 4281089088, 4281087040, 4281086016, 4278190080, _
4278190080, 4278190080, 4278190080, 4278190080, 4278190080, 4278190080, 4278190080}

SCREENRES 640, 480, 32, 1, 0
DIM i AS INTEGER
FOR i = 0 TO 255
  LINE (i * 2, 200)-(i * 2 + 1, 300), Tb256(i), B
NEXT i
SLEEP


Добавлено (22.06.2019, 19:43)
---------------------------------------------
Можно немного короче, но там надо смотреть, альфа компонента будет тогда не &HFF. Не всюду подойдёт.


Код
DIM SHARED Tb256(255) AS UINTEGER = {&H000000, &H0000AA, &H00AA00, &H00AAAA, _
&HAA0000, &HAA00AA, &HAA5500, &HAAAAAA, &H555555, &H5555FF, &H55FF55, &H55FFFF, _
&HFF5555, &HFF55FF, &HFFFF55, &HFFFFFF, &H000000, &H141414, &H202020, &H2C2C2C, _
&H383838, &H444444, &H505050, &H616161, &H717171, &H818181, &H919191, &HA1A1A1, _
&HB6B6B6, &HCACACA, &HE2E2E2, &HFFFFFF, &H0000FF, &H4000FF, &H7D00FF, &HBE00FF, _
&HFF00FF, &HFF00BE, &HFF007D, &HFF0040, &HFF0000, &HFF4000, &HFF7D00, &HFFBE00, _
&HFFFF00, &HBEFF00, &H7DFF00, &H40FF00, &H00FF00, &H00FF40, &H00FF7D, &H00FFBE, _
&H00FFFF, &H00BEFF, &H007DFF, &H0040FF, &H7D7DFF, &H9D7DFF, &HBE7DFF, &HDE7DFF, _
&HFF7DFF, &HFF7DDE, &HFF7DBE, &HFF7D9D, &HFF7D7D, &HFF9D7D, &HFFBE7D, &HFFDE7D, _
&HFFFF7D, &HDEFF7D, &HBEFF7D, &H9DFF7D, &H7DFF7D, &H7DFF9D, &H7DFFBE, &H7DFFDE, _
&H7DFFFF, &H7DDEFF, &H7DBEFF, &H7D9DFF, &HB6B6FF, &HC6B6FF, &HDAB6FF, &HEAB6FF, _
&HFFB6FF, &HFFB6EA, &HFFB6DA, &HFFB6C6, &HFFB6B6, &HFFC6B6, &HFFDAB6, &HFFEAB6, _
&HFFFFB6, &HEAFFB6, &HDAFFB6, &HC6FFB6, &HB6FFB6, &HB6FFC6, &HB6FFDA, &HB6FFEA, _
&HB6FFFF, &HB6EAFF, &HB6DAFF, &HB6C6FF, &H000071, &H1C0071, &H380071, &H550071, _
&H710071, &H710055, &H710038, &H71001C, &H710000, &H711C00, &H713800, &H715500, _
&H717100, &H557100, &H387100, &H1C7100, &H007100, &H00711C, &H007138, &H007155, _
&H007171, &H005571, &H003871, &H001C71, &H383871, &H443871, &H553871, &H613871, _
&H713871, &H713861, &H713855, &H713844, &H713838, &H714438, &H715538, &H716138, _
&H717138, &H617138, &H557138, &H447138, &H387138, &H387144, &H387155, &H387161, _
&H387171, &H386171, &H385571, &H384471, &H505071, &H595071, &H615071, &H695071, _
&H715071, &H715069, &H715061, &H715059, &H715050, &H715950, &H716150, &H716950, _
&H717150, &H697150, &H617150, &H597150, &H507150, &H507159, &H507161, &H507169, _
&H507171, &H506971, &H506171, &H505971, &H000040, &H100040, &H200040, &H300040, _
&H400040, &H400030, &H400020, &H400010, &H400000, &H401000, &H402000, &H403000, _
&H404000, &H304000, &H204000, &H104000, &H004000, &H004010, &H004020, &H004030, _
&H004040, &H003040, &H002040, &H001040, &H202040, &H282040, &H302040, &H382040, _
&H402040, &H402038, &H402030, &H402028, &H402020, &H402820, &H403020, &H403820, _
&H404020, &H384020, &H304020, &H284020, &H204020, &H204028, &H204030, &H204038, _
&H204040, &H203840, &H203040, &H202840, &H2C2C40, &H302C40, &H342C40, &H3C2C40, _
&H402C40, &H402C3C, &H402C34, &H402C30, &H402C2C, &H40302C, &H40342C, &H403C2C, _
&H40402C, &H3C402C, &H34402C, &H30402C, &H2C402C, &H2C4030, &H2C4034, &H2C403C, _
&H2C4040, &H2C3C40, &H2C3440, &H2C3040, 0, 0, 0, 0, 0, 0, 0, 0}


Сообщение отредактировал DarkDemon - Суббота, 22.06.2019, 19:45
 
Форум » Freebasic » Вопросы по языку FreeBasic » Использование RGB и RGBA (Использование RGB и RGBA)
  • Страница 1 из 1
  • 1
Поиск: