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

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

Восстановить пароль Регистрация
 
Alex_Sabaka
 Аватар для Alex_Sabaka
622 / 39 / 9
Регистрация: 28.07.2010
Сообщений: 895
Завершенные тесты: 3
19.08.2012, 15:32     Заполнить участок памяти #1
Вот такой вопрос: допустим есть у нас участок памяти размером 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     Заполнить участок памяти
Посмотрите здесь:

C++ закрасить участок шахматной доски
C++ Обращение в неправильный участок памяти, используя структуры и pcap.h
Что делает этот участок кода? C++
Найти непрерывный участок C++
C++ Найти непрерывный участок из 10 элементов, сумма которых максимальна
C++ Объясните пожалуйста участок кода
C++ Объясните участок кода
C++ Найти непрерывный участок последовательности

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 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
 Аватар для Alex_Sabaka
622 / 39 / 9
Регистрация: 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
Yandex
Объявления
19.08.2012, 17:22     Заполнить участок памяти
Ответ Создать тему
Опции темы

Текущее время: 08:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru