![]() |
|
#1
|
|||
|
|||
![]() Год(может 2) назад у меня появилась задача: вывести большое количество точек на экран... Конечно сначала я наивно использовал:
Код:
Image1.Canvas.Pixels[x,y] := clWhite // Это для примера Код:
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'у, видеокарте, но возможно есть смысл позаимствовать их методы. Итак... Как максимально быстро вывести на экран большое количество точек? Если не сложно выложите исходники... Если я где то ошибся в рассуждениях - отпишитесь об этом плиз... Если есть литература по этой теме - дайте ссыль Я ни в чем никогда не уверен... И в этом тоже... ![]() |