Cкорость, память и VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
X-hacker
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 26.08.2006 (Сб) 1:22
Откуда: Moldova

Cкорость, память и VB

Сообщение X-hacker » 19.05.2007 (Сб) 18:51

У меня не совсем обычные вопросы!

1:Мне не очень понятно, как функции рисующие например линии не перерисовывают весь девайс?Может, они изменяют содержимое памяти девайса, что и приводит к появлению линии.

2:Можно ли как-то получить указатель на эту память и проделать нечто подобное?

3:При создании битмапа с помощью CreateDIBSection() можно получить
указатель на него и ещё какой-то один (для этого lpVoid кажется надо изменить на ByRef), что же это за указатель?

4:Пробовал "присвоить" битмап к девайсу формы (SelectObject), ф-я послала меня на... вобщем нуль вернула.Почему же это проходит только с "похожими" формами (CreateCompatibleDC)

5:Как функция BitBlockTransfer (BitBlt) не спрашивая указателя на битмап (в отличие от GetDIBits) переносит биты с одного девайса на другой?

6:Читал, что для повышения скорости работы графических приложений можно копировать обработанный например массив байт
прямо в память видюхи?Такой трюк вроде используют OpenGL, DirectX, как это делается?
:roll:
_____________________________________________________________

7:Почему у меня не создаётся окно при вомощи WinAPI, хотя код вроде переведён с Си++ правильно, ну и конечно работает (Сама CreateWindowEx() возвращает ноль), в чём же проблема?Xотя васик на код не жалуется, WndProc передаю при помощи AddressOf, я имею ввиду может васик просто не способен именно этот код откомпилить)

8:В винде98 и 95 ChangeDisplaySettings() была в GDI, A B WindowsXP у меня только ChangeDisplaySettingEx() и то в кернеле. Да и как юзать эту функцию :?:

Заранее спасибо!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.05.2007 (Сб) 19:23

1. Эти функции просто посылают GDI-команды видеодрайверу.

2. Что нужно-то?

3. Нет там lpVoid. О чём речь?

4. Потому что формы рисуются прямо на экран, безо всяких битмапов.

5. Это тоже команда GDI, т.е. ей занимается видеодрайвер, а не Винда.

6. http://bbs.vbstreets.ru/viewtopic.php?t=32432

7. Возьми пример из API-Guide, он работает.

8. И ChangeDisplaySettings, и ChangeDisplaySettingEx в WinXP есть, обе в user32. И на Win9x она была там же, нечего выдумывать.
Изображение

X-hacker
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 26.08.2006 (Сб) 1:22
Откуда: Moldova

Сообщение X-hacker » 19.05.2007 (Сб) 20:12

1 - Во как :shock:
2 - отпадает после первого
3 - Ну у меня есть ( хэндл оказывается етот на память м изображением и мне удалось скопировать его оттуда (првда при CopyMemory(... ... a)
выдаёт ошибку если а больше 3000, копирую в цикле по 3000 байт), но в я прочитал, что туда можно запихнуть ети байты и вызвать рефреш объекта куда он заселектен, СopyMemory при попытке скопировать туда хоть что-то громит аппликуху и васик вылетает, да и битмап же не селектится в объекты, с выводом на экран ( CreateDC, Picture.hDC and so all)
4 - Во как :shock:
5 - Во как :shock:

Кстати врут они там, SetDIBitsToDevice никак не очень быстрая, по сравнению с директом в полноэкранном режиме 1600*1280 просто улитка( подходит разве что для быстрого вывода спрайтов максимум 500*500, а 200*200 выводит действительно быстро), поэтому может всётаки видеопамять, тем более, дело портят Refresh, CLS

А млин быстрее SetBitmapBits(Me.Image...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 19.05.2007 (Сб) 20:33

3. Ты пьяный, что ли?
Ни одного предложения не смог понять.
Изображение

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 19.05.2007 (Сб) 22:34

tyomitch писал(а):3. Ты пьяный, что ли?
Ни одного предложения не смог понять.

ну почему же, я, вот например, понял что для автора новО то, что обработкой GDI команд занимается видеокарта.

2X-hacker Обьясни конкретно что надо

X-hacker
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 26.08.2006 (Сб) 1:22
Откуда: Moldova

Сообщение X-hacker » 20.05.2007 (Вс) 17:10

Не, я считал, что ГДИ отсылает на драйвер обработанный массив байтов изображения и видюха его выводит на экран (но код обработки содержится именно в ГДИ), а выходит, что например в случае с BitBlt код обработки уже не зависит от ГДИ :roll:
Или нет?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 20.05.2007 (Вс) 17:20

Вы двое настойчиво путаете видеодрайвер и видеокарту.
GDI отсылает драйверу команду (LineTo, BitBlt, etc.), а тот уже волен делать что захочет. Хоть в видеобуфере её применять, хоть слать прямо в видеокарту, если та сама умеет обрабатывать GDI-команды.
Самому GDI даже нет разницы, принадлежит DC экрану или принтеру. Или по-вашему, для принтера тоже на уровне GDI должен поддерживаться "видеобуфер"? :-)

К слову, удалённые рабочие столы именно за счёт того и укладываются в весьма скромные объёмы трафика, что по сети гоняются не "видеобуфера", а GDI-команды. Серверная часть такого стола регистрируется как видеодрайвер, получает весь GDI-поток, гонит его на клиентскую часть, и уже та передаёт команды настоящему видеодрайверу.
Изображение

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 20.05.2007 (Вс) 19:32

tyomitch писал(а):Вы двое настойчиво путаете видеодрайвер и видеокарту.

Это я ошибся при написании поста :oops:
tyomitch писал(а):К слову, удалённые рабочие столы именно за счёт того и укладываются в весьма скромные объёмы трафика, что по сети гоняются не "видеобуфера", а GDI-команды. Серверная часть такого стола регистрируется как видеодрайвер, получает весь GDI-поток, гонит его на клиентскую часть, и уже та передаёт команды настоящему видеодрайверу.

Сюрприз! :shock:

X-hacker
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 26.08.2006 (Сб) 1:22
Откуда: Moldova

Сообщение X-hacker » 21.05.2007 (Пн) 9:35

---- К слову, удалённые рабочие столы именно за счёт того и укладываются в весьма скромные объёмы трафика, что по сети гоняются не "видеобуфера", а GDI-команды. Серверная часть такого стола регистрируется как видеодрайвер, получает весь GDI-поток, гонит его на клиентскую часть, и уже та передаёт команды настоящему видеодрайверу. ----

Мда...

Кстати, по поводу проделать нечто подобное: DeviceIOcontrol ( как-то так) тоже может отсылать команды прямо на драйвер

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.05.2007 (Пн) 10:04

Цель-то какая?
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 21.05.2007 (Пн) 10:44

tyomitch
Это тоже команда GDI, т.е. ей занимается видеодрайвер, а не Винда.
Прикольно. А кто тогда занимается - линукса? :wink:
Кстати, Темыч, задал я вот тутвопрос. Не подскажешь? А то что-то нынче народ стал жутко тупить и даже вопрос прочитать не может нормально... :cry:
А я все практикую лечение травами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 21.05.2007 (Пн) 10:50

Twister, у тебя давнишние исходники Win2000 есть?
Если да, то в них и посмотри. Потому что мне всё равно посмотреть больше негде.
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.05.2007 (Вт) 8:37

Да если были бы - сам бы заглянул... :cry:
Скажи, много ли они весят и есть ли у тя возможность выложить их приватно?
Ну а если оч. много то мне не остается ни чего иного, как просить тебя заглянуть в них...
А я все практикую лечение травами...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.05.2007 (Вт) 10:42

Да, кстати, Темыч. Совсем забыл.
Если все же найдется возможность выложить исходники (на что я, если честно, очень надеюсь :wink: ), то советую сжать их с помощью WinUHA - текстовые данные он сжимает в 2 (!) раза лучше чем WinRAR - сам проверял.
А я все практикую лечение травами...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 1

    TopList  
cron