Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Alex_Sabaka
624 / 41 / 10
Регистрация: 28.07.2010
Сообщений: 895
Завершенные тесты: 3
#1

Заполнить участок памяти - C++

19.08.2012, 15:32. Просмотров 771. Ответов 2
Метки нет (Все метки)

Вот такой вопрос: допустим есть у нас участок памяти размером WIDTH * HEIGHT * 4, и есть структура/массив такого вида: {0xFF, 0xCC, 0xAA, 0xEE} (это проосто для примера, данные в масиве могут быть любыми). Так вот, нужно Нужно данными из этой структуры заполнить весь участок памяти, что-бы в памяти получилось так: {0xFF, 0xCC, 0xAA, 0xEE, 0xFF, 0xCC, 0xAA, 0xEE, 0xFF, 0xCC, ... }
Желательно это сделать за один "проход" - без циклов, т.е. что-то вроде одного вызова memset:
C++
1
memset(ptr, {0xFF, 0xCC, 0xAA, 0xEE}, WIDTH * HEIGHT)
PS Заранее спасибо, и извините за, возможно, плохое изложение мыслей
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.08.2012, 15:32     Заполнить участок памяти
Посмотрите здесь:

Обращение в неправильный участок памяти, используя структуры и pcap.h - C++
Суть в чем: Есть программка, которая использует libpcap. При получении нового пакета функцией: pcap_t *adhandle; struct pcap_pkthdr...

Как правильно заполнить буфер памяти? - C++
Драйвером некоторого устройства выделен буфер в памяти. Имеющимися средствами могу запросить его адрес. Далее хочу заполнить его...

Объясните участок кода - C++
Такой вопрос, ребят, что означает данная часть кода for(start_v=1;start_v<=n;start_v++) { rez=new int ; for...

Найти непрерывный участок - C++
Найти непрерывный участок из 10 элементов, сумма которых максимальна. Размер массива 50-200, диапазон чисел в массиве 0-100. Подскажите...

Закрасить участок шахматной доски - C++
Люди помогите плиз, у меня в С++ вообще башка не варит((( написать программу для выполнения следующей задачи (): Нужно решить такую...

Найти непрерывный участок последовательности - C++
Здравствуйте, уважаемые форумчане!! Помогите разобраться с лабораторной работой: Дан массив размером в 200 элементов.Нужно найти...

Объясните пожалуйста участок кода - C++
Узнал что это ассоциативный массив for (map<std::string,int>::iterator p = count.begin(); p != count.end(); p++) cout <<...

Как перезаписать участок текста в файле? - C++
Здравствуйте, не могли бы вы рассказать как можно перезаписать конкретное значение в файле? Поиск значения у меня осуществляется так: ...

Что делает этот участок кода? - C++
Уважаемые программисты не могу разобраться что делает следующий кусочек кода, помогите пожалйста int ch; if( ( ch = getch() ) == 0...

Развернуть участок массива с помощью reverse - C++
Здравствуйте! Нужно использовать функцию "reverse". Знаю только вариант: reverse(a, a + n) Но это переворачивает весь массив, а мне...

Найти непрерывный участок из 10 элементов, сумма которых максимальна - C++
Найти непрерывный участок из 10 элементов, сумма которых максимальна. Если размерность массива 200, а диапазон значений от 0 до 100.

Найти непрерывный участок из 10 элементов, сумма которых максимальная - C++
Задание такое: Найти непрерывный участок из 10 элементов, сумма которых максимальная. Нельзя использовать индексацию. Максимальную...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
19.08.2012, 16:42     Заполнить участок памяти #2
Преждевременная оптимизация — корень просранного дедлайна. Чем
C++
1
2
3
4
unsigned char pattern_array[4] = {0xFF, 0xCC, 0xAA, 0xEE};
for (unsigned char *i = ptr, *lim = ptr + 4 * WIDTH * HEIGHT; i < lim; i += 4) {
  memcpy(i, pattern_array, 4);
}
не угодил?
Alex_Sabaka
624 / 41 / 10
Регистрация: 28.07.2010
Сообщений: 895
Завершенные тесты: 3
19.08.2012, 17:22  [ТС]     Заполнить участок памяти #3
Пробовал уже. Заполнение памяти через цикл дает мне 130-150fps (я с графикой работаю). Тогда когда растеризация двух треугольников(делаю очистку буфера заданным цветом) дает ~300fps.

Добавлено через 12 минут
Всем спасибо! Сам разобрался. Дело было в количестве итераций цикла, т.е. в одном проходе по участку памяти 4 * WIDTH * HEIGHT итераций, а в двух проходах растеризации треугольника только WIDTH * HEIGHT итераций, и на каждую итерацию один вызов SetPixel. Сделав Двойной цикл по WIDTH и HEIGHT с вызовом SetPixel, удалось поднять fps до 343
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru