|
1 / 1 / 0
Регистрация: 20.10.2011
Сообщений: 227
|
|
Работа в окне22.09.2019, 00:57. Показов 6334. Ответов 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,123
|
|
| 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,123
|
|
| 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,123
|
|
| 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,123
|
||||||
| 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
|
|
|
фрилансер
6481 / 5705 / 1132
Регистрация: 11.10.2019
Сообщений: 15,199
|
||||||
| 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,123
|
||||
| 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 | |
|
Помогаю со студенческими работами здесь
40
работа приложение в окне формы
Работа с массивом в графическом окне Работа с бэкграундом в окне SFML Работа программы при не активном окне Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|