Очень медленно выводятся некоторые фигуры, например, окружность.
Как можно ускорить вывод графики?
В программе выводятся только окружности, но много.
Вывод осуществляется ОЧЕНЬ медленно.
Может поможет написание процедуры Circle на асме?
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
| Altair |
Сообщение
#1
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 825 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Очень медленно выводятся некоторые фигуры, например, окружность.
Как можно ускорить вывод графики? В программе выводятся только окружности, но много. Вывод осуществляется ОЧЕНЬ медленно. Может поможет написание процедуры Circle на асме? -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
| BlackShadow |
Сообщение
#2
|
|
Гость |
Принцип примерно такой:
1). Готовишь матрицу m*n, в которой записываешь коды цвета каждого пикселя. Например: Код 0 0 1 0 0 0 1 0 1 0 1 0 2 0 1 2). Когда нужно вывести фигуру пробегаешь по массиву и вместо кода цвета подставляешь нужный цвет или пропускаешь точку вобще. Например при выводе фигуры указанного массива можно поступить так.Написать функцию DrawShtuka с четырьмя параметрами: x, y, цвет №1 и цвет №2. В функции пробежаться по этому массиву типа Код For i:=0 To 4 Do For j:=0 To 2 Do Case Matrix[i,j] Of 1: PutPixel(x+i,y+j,Color1); 2: PutPixel(x+i,y+j,Color2) End Для шибкоразноцветных фигур можно передавать массив цветов. А в идилии такая функция описывается примерно так: Код Type TIntVector=Array Of Integer; TIntMatrix=Array Of TIntVector; Procedure Draw(x,y:Integer;Matrix:TIntMatrix;Colors:TIntVector); Var i,j:Integer; Begin For i:=0 To Hi(Matrix) Do For j:=0 To Hi(Matrix[i]) Do If Matrix[i][j]<>-1 Then PutPixel(x+i,y+j,Colors[Matrix[i][j]] End; Ну, или примерно так. В твоём случае, конечно, это плохой выход. Даже, наверное, совсем не выход. Но в будующем может и пригодится |
Altair Ускорение графики 4.07.2004 19:15
NetAnton Могу привести тебе программку с рисованием окружно… 4.07.2004 19:51
GLuk
С дизассемблером не пробовал поработать? 4.07.2004 22:05
NetAnton с тем, что tpu расклеивает в текстовый документ с … 4.07.2004 22:38
Altair :lol:
нет, дизасемблировать, значит загружать с п… 4.07.2004 22:49
NetAnton :lol:
зачем мне объяснять, что это такое. я прекр… 4.07.2004 23:20
Altair тогда зачем спрашивал что это?
Кстати не все раск… 4.07.2004 23:48
NetAnton у меня есть такие утилитки для tpu-шников для 5, 6… 5.07.2004 0:58
Altair Ладно, так есть какие-нибудь реальные способы уско… 5.07.2004 10:56
APAL Та прога, что была выложена, она использует станда… 5.07.2004 13:25
Altair Точно, как я сразу не догадался. Спасибо, APAL.
Ос… 5.07.2004 14:32
BlackShadow :)
Уж лучше 13h. Там явно проще.
А вообще можно бы… 5.07.2004 15:23
Altair 13h проще, но мне надо именно 640*480.
А можешь по… 5.07.2004 15:48
Romtek Ладно, так есть какие-нибудь реальные способы уск… 14.07.2004 15:44
Romtek Во первых, это лишнее использование памяти.
Во вто… 14.07.2004 18:46
BlackShadow Я про сложные фигуры. Например 20 камазов разного … 14.07.2004 18:59
P@sh@ Oleg_Z
но мне надо именно 640*480
да еще в 16 цве… 16.07.2004 11:47
Shadow необязательно ASM, но напрямую в видео память
можн… 29.07.2004 7:32
BlackShadow Не всегда оптимизация по скорости приводит к росту… 29.07.2004 16:58
Shadow BlackShadow
представь что программа в исходнике н… 29.07.2004 17:14![]() ![]() |
|
Текстовая версия | 6.11.2025 0:19 |