Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.06.2010, 10:55
Interface Interface вне форума
Активный
 
Регистрация: 23.05.2008
Адрес: Россия, Уфа
Сообщения: 203
Репутация: 1
По умолчанию Быстрая графика

Год(может 2) назад у меня появилась задача: вывести большое количество точек на экран... Конечно сначала я наивно использовал:
Код:
Image1.Canvas.Pixels[x,y] := clWhite // Это для примера
Естественно, что оно жутко тормозило... Некоторые люди читающие это сообщение уже принялись рассказывать о чудесах ScanLine, о том что оно способно работать прямо с памятью... и естественно весьма скоро я сам нагуглил сканлайн и даже научился его правильно использовать. Прирост скорости был действительно больших и вобщем то этот способ достаточно неплох... Но позже я решил опробывать другой способ: Он был основан на создании DIB'a и последующией работе с ним по такой схеме
Код:
  for x := 0 to SX - 1 do for y := 0 to SY - 1 do
    TBig(Scr^)[x + y * SX] := RGB(Random(256),Random(256),Random(256));
(кому надо могу выложить исходник)
И вобщем то прирост скорости был тот же...
Проблема в том, что мне мало этого прироста... Паралельно изучая ассемблер, я узнал, что тот для рисования обращается к видеопамяти и понял, что это будет несколько быстрее того, что есть... И вообще пришел к выводу, что для непосредственно вывода точек желательно использовать ресурсы видеокарты... Но насколько мне известно напрямую это возможно в Dos, но естественно писать на него какие либо приложения сейчас нет смысла... зато у Windows есть тот самый DirectX, позволяющий использовать ресурсы видеокарты, но дело в том, что скоко я не гуглил так и не смог найти как в нем вывести на экран N-ое кол-во точек... сплошные спрайты, 3д, развороты, прозрачность... а мне всего то надо вывести множество точек... при том я уверен что сделать это быстро вполне реально, ведь как то это реализуется самим компом и ОС... То есть вывод спрайта - есть вывод ряда точек (на аппаратном уровне это точно так), а раз так то можно предположить что либо этот спрайт, либо изображение всего экрана где то храниться, и я так понимаю это и есть видеопамять(или видеобуфер, не знаю как это правильно называется...)... Так Вот мне необходимо получить туда доступ. Как это сделать? Как редактировать изображение непосредственно перед его выводом на экран? Как вобще работают полноэкранные приложения выводящие по 1024*768 и более (реже менее) точек?.. Понимаю что они не занимаются этим, а лишь передают эту задачу Windows(или чему то еще), DirectX'у, видеокарте, но возможно есть смысл позаимствовать их методы.
Итак... Как максимально быстро вывести на экран большое количество точек?
Если не сложно выложите исходники... Если я где то ошибся в рассуждениях - отпишитесь об этом плиз... Если есть литература по этой теме - дайте ссыль
__________________
Я ни в чем никогда не уверен... И в этом тоже...
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:48.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025