|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
Работа в окне22.09.2019, 00:57. Показов 6429. Ответов 41
Метки нет (Все метки)
Поделитесь примером как инициализировать directdraw для работы в стандартной форме желательно под bulder, все попытки не увенчались успехом, в полноэкранном режиме работает.
Изучаю первый день )
0
|
|
| 22.09.2019, 00:57 | |
|
Ответы с готовыми решениями:
41
Работа в определенном окне Работа в окне браузера Работа в неактивном окне |
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 05.10.2019, 22:57 [ТС] | |
|
Тут в теме поспешил неправильно ключи вставил, в проге все правильно
lpDDSPrimary->Blt(&dr, lpDDSBack0, &sr, DDBLT_COLORFILL | DDBLT_WAIT, 0); Больше всего конечно из directdraw умиляет что можно выводить чистый график без всяких окон и фона прямо на рабочий стол, смотрится прямо скажем неожиданно ))) Добавлено через 24 минуты Черт перепутал DDBLT_KEYSRC и DDBLT_COLORFILL короче все работает что по отдельности копировать буферы в праймери что сначало слить буферы а потом в праймери )
0
|
|
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 10.10.2019, 17:23 [ТС] | |
|
Вопросик появился,
есть окно, на него отсечение праймери, все отлично выводиться но если сдвинуть окно то на рабочем столе остаются изображения со старого места окна, те фантомы, можно это как то победить ?
0
|
|
|
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,128
|
|
| 10.10.2019, 18:45 | |
|
Первичная поверхность имеет размер равный всему десктопу. В оконном режиме нужно выполнять свои Blt на первичную поверхность относительно текущих координат окна на десктопе. Возможно, вы где-то промахнулись и сделали Blt не по тем координатам. На своих тестах я не замечал подобной проблемы.
0
|
|
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 10.10.2019, 18:51 [ТС] | |
|
Все именно так и делается, при перетаскивании окна изображение тоже сдвигается, но на старом месте остается старое изображение.
Вообще то оно и понятно, если первичная поверхность это видеопамять, а мы ее порисовали а потом перешли в другое место на старом месте останутся все наши рисунки пока винда не обновит экран.
0
|
|
|
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,128
|
|
| 10.10.2019, 19:16 | |
|
Логично, что пока не обновит. Но сдаётся мне, что винда при перетаскивании таки вызывает обновление. А проблема будет если порисовать уже после этого обновления.
0
|
|
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 10.10.2019, 23:49 [ТС] | |
|
Вот так выглядит беда )
https://youtu.be/mNs08fgLUgM мож 98 винда виновата надо на семерке попробовать. Добавлено через 4 часа 28 минут Короче это был какой то жесткий глюк или винды или видеокарты, прошел сам собой.
0
|
|
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 12.10.2019, 00:34 [ТС] | |
|
Вот эту тестовую програмку никак ускорить (те уменьшить загрузку проца) нельзя ?
У меня все тормоза от вызовов lpDDSBack->Lock(NULL, &SurfaceDesc, DDLOCK_WAIT, NULL); lpDDSBack->Unlock(SurfaceDesc.lpSurface); а без этих вызовов невозможно внести данные . Celeron 1.2Ггц грузиться на 100 % (
0
|
|
|
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,128
|
|
| 12.10.2019, 11:30 | |
|
В моём понимании, Lock/Unlock работает так:
- есть поверхность в памяти видео карты, - делаем Lock, поверхность целиком копируется в память компа, возвращается адрес памяти компа, - используя адрес модифицируем содержимое памяти, - делаем Unlock, поверхность из памяти компа целиком копируется обратно в память видео карты. Из-за постоянной переброски памяти туда-сюда такой способ рисовать не очень эффективный. Уменьшайте количество вызовов Lock/Unlock, блокируйте не всю картинку, а только её часть, где планируете вносить изменения. Наверное, я бы ещё попробовал сделать постоянный буфер в памяти компа. При вызове Lock/Unlock для такого буфера не будет вызываться копирование данных. Рисовал бы всё на этой поверхности, а затем копировал её на первичную. Таким образом полная картинка всегда будет в памяти компа и её не нужно забирать из видеопамяти, что в двое уменьшает нагрузку на копирование (по коду, вы похоже и так делаете вспомогательную поверхность в памяти, так что последний совет не актуален). Хотя с другой стороны, копирование данных из одной памяти в другую должно грузить шину, а не процессор. Возможно, загрузка процессора происходит в пользовательском коде при расчётах и модификации точек. Добавлено через 42 минуты Попробовал у себя запустить ваш тест. 1) Создание поверхности с флагом DDSCAPS_SYSTEMMEMORY приводило к эксепшену. Убрал этот флаг и не стал добавлять VIDEOMEMORY. Создавал поверхность без явного указания её местоположения, надеюсь она создавалась в хосте. 2) Замер времени выполнения фрагментов кода показал, что Lock и Unlock выполняются 0 мс, а вот цикл установки точек порядка 37 мс. Полагаю, что именно этот цикл и жрёт ресурсы ЦП.
0
|
|
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 12.10.2019, 12:27 [ТС] | |
|
Странно, я блокировал вывод точек полностью, ( с сохранением голых лок/анлок) загрузка проца не изменилась
вообще я так вижу на разных компах эта directdraw ведет себя совершенно по разному.А как вы замеряли время выполнения куска кода ?
0
|
|
|
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,128
|
||||||
| 12.10.2019, 13:54 | ||||||
|
Примерно так измерял.
1
|
||||||
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 12.10.2019, 14:09 [ТС] | |
|
Попробовал на 3 других компах, действительно грузит в основном ввод точек, может очередной глюк был, пока до того компа где тормозило не добрался.
Тогда вопрос - как же изменить все точки на поверхности быстро и почему так медленно они заносятся ? Перейти на 16 бит цвет не получиться.
0
|
|
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 12.10.2019, 14:41 [ТС] | |
|
Похоже не получиться быстро все точки менять, остановлюсь на таком варианте
0
|
|
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 13.10.2019, 01:57 [ТС] | |
|
Сделал психоделическую програмку )
0
|
|
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 14.10.2019, 20:56 [ТС] | |
|
Беда какая то с этим Dx, вот например как попасть в рабочею область окна без учета шапки (где кнопки меню)
Допустим на одном компе сделаем координаты поверхности Form->Top+36 чтобы меню не закрывать, все отлично, но переходим на другой комп и оба на - вместо +36 надо уже другую величину делать.... как же ее туда запихать чтобы на всех компах вписывалась нормально ? (те высота шапки в форме на разных видеокартах/дисплеях имеет разную величину в точка) Добавлено через 20 минут надо наверно все таки отсечение использовать.
0
|
|
|
фрилансер
6496 / 5727 / 1133
Регистрация: 11.10.2019
Сообщений: 15,298
|
||||||
| 14.10.2019, 21:22 | ||||||
|
whale2, если я правильно понял, что тебе нужно, то вот так сможешь найти смещение
1
|
||||||
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 14.10.2019, 22:22 [ТС] | |
|
Спасибо попробую.
Добавлено через 20 минут Красота, работает
0
|
|
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
||||||
| 15.10.2019, 10:20 [ТС] | ||||||
|
Еще небольшая проблема, если окно выходит на пределы экрана blt перестает работать, есть более менее рабочий вариант запрета выхода окна ? Пытался делать через сообщения и принудительной установкой координат но окно начинает дергаться при попытке вывести за пределы .
0
|
||||||
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 16.10.2019, 01:07 [ТС] | |
|
Кто нить может объяснить такой эффект,
берем форму, вычисляем координаты, создаем праймери на весь экран, блокируем праймери по координатам формы заносим рисунок разблокируем праймери теперь если двигать форму, то рисунок остается в форме ! хотя по идее должен остаться на экране в месте создания.
0
|
|
|
2736 / 891 / 331
Регистрация: 10.02.2018
Сообщений: 2,128
|
||||
| 16.10.2019, 12:28 | ||||
0
|
||||
|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
| 16.10.2019, 14:55 [ТС] | |
|
Еще бы понять где и как этот lparam выцепить.... 90% времени выходить не прогать алгоритмы а искать какую где закорючку поставить (
Насчет кэширования точно, если свернуть-развернуть или перекрыть картинка исчезает/портиться. Непонятно главное - как винда решила что эта картинка привязана именно к форме, нигде это не указано.
0
|
|
| 16.10.2019, 14:55 | |
|
работа приложение в окне формы
Работа с массивом в графическом окне Работа с бэкграундом в окне SFML Работа программы при не активном окне Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знание — сила: Доктрина интенциональности знаний против массовых профанаций
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302
Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
|
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс
Ссылка на сгенерированную музыкальную композицию:
https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013
Я говорю, что Время- как вода
течет. . .
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Салют, шампанское, овации!
:drink:
|
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|