Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.58/55: Рейтинг темы: голосов - 55, средняя оценка - 4.58
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263

Побитовые операции с памятью

16.03.2020, 18:01. Показов 12634. Ответов 150
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть ли в Delphi какие-нибудь функции чтобы побитово сделать and or xor not с двумя произвольными кусками памяти? Можно чтобы это были обязательно два равных по длине куска, неважно.
Например для сравнения двух кусков есть очень быстрая функция CompareMem.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.03.2020, 18:01
Ответы с готовыми решениями:

Побитовые операции
Задание: Дано целое неотрицательное число. Определить количество составляющих его шестнадцатеричных цифр, содержащих в двоичном...

Побитовые операции
С помощью побитовых операций преобразовать число -78 в 15 Вот что пыталась делать, кто знает как сделать? int v =-78; int i = 1; ...

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

150
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
29.03.2020, 13:41
Студворк — интернет-сервис помощи студентам
Там в заголовке MessageBox указывается имя функции, которая не найдена. Драйверы на видеокарту поставь
0
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
29.03.2020, 14:07  [ТС]
glCreateProgram, glCreateShader, glShaderSource, glCompileShader, glAttachShader, glLinkProgram, glUseProgram, glGenBuffers, glBindBufferBase, glBufferData, glActiveTexture, glGetUniformLocation, glUniform1i, glMapBufferRange, glUnmapBuffer, glGetShaderInfoLog, glGetProgramInfoLog, glGetShaderiv, glGetProgramiv. Пойду комп ребутну) Дрова то стоят, только я обновлял их сегодня и комп не перезагружал.

Добавлено через 9 минут
Нет, увы, не помогло.
0
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
29.03.2020, 14:17
Цитата Сообщение от KOTOM Посмотреть сообщение
Самое простое решение у меня за 90 секунд вообще работало.
Самое простое не обязательно означает верное. Например моё простое решение без прозрачности справляется довольно быстро:

а вот с прозрачностью уже на порядки дольше:

но даже так это значительно быстрее чем 90 сек...

Однако, в данном примере, для однозначной идентификации объекта прозрачность ненужна, достаточно выбрать уникальный фрагмент из непрозрачной части семпла.
0
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
29.03.2020, 14:47  [ТС]
x128, Самый лучший мой результат это 1100 без прозрачности и 1700мсек с прозрачностью ечли искать честно и 1200мсек если искать по 6 точкам. Изображение 26х19 на большом 1600х1200 и координаты 1354х1072.

Добавлено через 17 секунд
А ты с помощью какого алгоритма искал?

Добавлено через 3 минуты
К слову функция murderer, находит примерно тоже самое, с оговорками на размер семпла (там 32х32) с прозрачностью и подготовкой альфы всего за 14мсек.
0
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
29.03.2020, 14:54
Скорее всего wglCreateContext не отрабатывает. Я изменил код инициализации и добавил больше проверок на ошибки.
Вложения
Тип файла: 7z Shader.7z (160.4 Кб, 6 просмотров)
0
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
29.03.2020, 14:57  [ТС]
Вот такие ошибки выдаёт.
Миниатюры
Побитовые операции с памятью   Побитовые операции с памятью  
0
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
29.03.2020, 14:58  [ТС]
Причём сейчас он пытается искать и как ему кажется находит что-то в левом нижнем углу. А нет, это один раз его пробило на поиски.
0
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
29.03.2020, 15:18
Видимо SSBO появились начиная с версии GLSL 4.3, а в шейдере указано "#version 330". Попробуй заменить на "#version 460 core". Да я тоже не спец в OpenGL и шейдерах
0
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
29.03.2020, 15:29  [ТС]
murderer, О, а с #version 460 core работает. А для неё есть какие-то ограничения ра ширину сэмпла? И картинки так же 32 бита с альфой должны быть?
0
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
29.03.2020, 15:36
Целевой скриншот должен быть 32-битным (альфу заполнять не надо), сэмпл такой же как для версии с SSE2, но без ограничений на размеры. Вообще раньше видеокарты поддерживали только текстуры со сторонами, равными степени двойки, но сейчас видимо таких ограничений нет, нужно почитать, что-нибудь на эту тему.
0
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
29.03.2020, 15:49  [ТС]
Не могу ему свои картинки скормить правильно. Если с прозрачным цветом то находит в 0х1168. А что самое интересное если без прозрачного цвета, то находит в 570х1162 потом в 574х1146 потом в 626х1162 ну в общем в примерно таких рандомных координатах. При этом все они не верные. И работает намного медленнее чем через SSE2.

Добавлено через 8 минут
Причём эти рандомные координаты зависят от размеров окна (хотя я передаю размеры TBitmap который сам гружу). Чем больше окно, там дальше координаты и тем дольше ищет.
0
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
29.03.2020, 16:04
Чем больше окно, там дальше координаты и тем дольше ищет
Странно - я задаю размеры окна отрисовки через функцию glViewport.
0
240 / 218 / 46
Регистрация: 17.04.2010
Сообщений: 526
29.03.2020, 16:05
Цитата Сообщение от KOTOM Посмотреть сообщение
А ты с помощью какого алгоритма искал?
Обычный перебор с эвристикой. Вопрос только в качественном подборе той самой эвристики. Конкретно у меня поиск идет по принципу уточнения с прекращением выполнения вложенного цикла при первом несоответствии. Вариаций на тему может быть множество, включая и вариант с поиском по опорным точкам с дальнейшим уточнением результата.
Если понимать, что конкретно нужно и какие есть ограничения или особенности, можно придумать оптимальную стратегию.
0
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
29.03.2020, 16:13  [ТС]
x128, Странно. У меня перебор намного дольше работал. Ну естественно, при первом несоответствии оно тоже дальше шло. Я потом доработал этот перебор, чтобы сравнивать сразу BGR цвет, время сократилось вдвое, то есть примерно 42 секунды стало. После этого я окончательно забил на перебор. Кстати опорные точки я генерю раскручивающейся спиралью (Так получается, что чем больше изображение тем меньше точек, в центре точек больше, к краям меньше. На 25х19 семпл получается например 6 точек, а если секпл будет чуть меньше 1600х1200 то точек будет 15 или около того). А потом для каждой точки ищу ближайшую непрозрачную, если она попала в цвет прозрачности. Потом может ради прикола попробую по 5 точкам, но это на правах опыта)
0
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
29.03.2020, 17:14
Переделал - теперь изображение рендерится в FBO (Раньше рисовалось в Back Buffer) и размеры окна никак не должны повлиять на результат. Теперь если изображение не найдено, то result будет содержать (-1;-1), как и должно быть.
Вложения
Тип файла: 7z Shader.7z (160.9 Кб, 7 просмотров)
0
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
29.03.2020, 17:17
И работает намного медленнее чем через SSE2
Надеюсь ты код инициализации из FormCreate не запускаешь каждый раз - он занимает около 2 секунд на моём компьютере. А вот поиск происходит быстро - рамка появляется сразу после нажатия на кнопку.
0
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
29.03.2020, 17:43  [ТС]
murderer, я FormCreate вообще не трогал, свой код писал внутри кнопки. Твоего кота у меня за 5мс находит, а через SSE2 за 0. А с моей картинкой он ищет примерно 200 мс, но там время тоже рандомное, бывает и 40 и 80 и 100, 262 было максимум, и находит неправильно, а через SSE2 находит за 16мс, ну или если не может найти то 100 с чем-то, я так и не понял почему намного дольше ищет если найти не может.
0
29.03.2020, 17:46

Не по теме:

Вот именно за этим форум и создавался... Не дебилам домашки решать, а обсуждать нормальные проблемы...
murderer, KOTOM, я прошу прощения, что влез в ваш диалог, просто продолжайте, ищите решение... Я просто очень рад что, наконец, какая-то тема целиком тематике форума соответствует...

0
68 / 33 / 11
Регистрация: 18.07.2014
Сообщений: 263
29.03.2020, 17:49  [ТС]
Сейчас кстати подсунул образец с прозрачностью и развернул окно. Его находит за 20мсек и координаты верные. Но если окно маленькой, то координаты неверные выдаёт.
0
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
29.03.2020, 18:12
Но если окно маленькой, то координаты неверные выдаёт.
Это последняя версия с FBO? OpenGL в Windows устроен как-то странно - там идёт жёсткая привязка к окну, то есть render context даже не проинициализируется, если создать виртуальный DC для рисования. Некоторые даже использовали слайсинг, чтобы рендерить в произвольный DC (например на принтер). Есть конечно ещё вычислительные шейдеры, там потоки задаются по-другому, но мне показалось, что их сложнее использовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.03.2020, 18:12

Побитовые операции
Выбрать алгоритм, составить его блок-схему и программу для решения выбранного варианта задания. Во всех вариантах предполагается, что...

Побитовые операции
Всем доброго утра. Дана такая задача: есть два чсила,поменять местами 2 последние цифры этих чисел между собой, т.е. 2 последних Х заменить...

Побитовые операции
От друга услышал идею о побитовой сортировки имен (например). К примеру, если у нас набор структурных переменных с анкетами работников, и...

Побитовые операции
Задача: битовый образ 8*8 задается при помощи 8 байт, каждый байт состоит, соответственно, из 8 бит, бит={0,1}; при помощи побитовых...

Побитовые операции
Помогите решить несколько задач по битовым операциям,они все малы по реализации. И объяснить начиная с 3 задачи,что нужно сделать?А то не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru