|  Работа с "графикой" | 
 ПРАВИЛА РАЗДЕЛА!!!
 ПРАВИЛА РАЗДЕЛА!!!1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE] 
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали! 
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
 
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
|   | 
|  Работа с "графикой" | 
| Account |  7.10.2011 21:47 
				 Сообщение
					#1				
			 | 
| Бывалый    Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация:  0    | Поставлена вот такая задача: Нарисовать 8 разноцветных полос (не линий) во весь экран, режим например использовать 640х350 параллельных главной диагонали. Пример результата в прикрепленной картинке Сообщение отредактировано: Account - 7.10.2011 21:47 Эскизы прикрепленных изображений   | 
| IUnknown |  10.10.2011 20:57 
				 Сообщение
					#2				
			 | 
|  a.k.a. volvo877      Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация:  627    | Вот так:  lines5.zip ( 1.04 килобайт )
Кол-во скачиваний: 889 (по непонятной причине ASM-файл загружаться отказался. Странно, почему PAS можно, и CPP можно, а ASM-нельзя) Но задача решена "в лоб", с выводом напрямую в видеопамять в этом режиме заморачиваться не очень хочется, поэтому вывод сделан через BIOS, откуда и быстродействие: ниже плинтуса, тем более, что запускалось это всё в эмуляторе. Хочешь - измени вывод пиксела на запись в видеопамять - будет на порядок (если не на 2) быстрей. Картинка получается очень похожая на ту, что ты показал... Да, там можно, разумеется, код еще подшлифовать, но пока я этого делать не стал... | 
| IUnknown |  13.10.2011 12:10 
				 Сообщение
					#3				
			 | 
|  a.k.a. volvo877      Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация:  627    | Похоже, эта тема интересна мне одному, но оставить недоделанным это задание я не мог. Вот версия, которая пишет напрямую в видеопамять.   lines8v.zip ( 3.75 килобайт )
Кол-во скачиваний: 908 Работает гораздо быстрее, чем предыдущая. Компилировалось TASM 3.0 : >tasm lines8v.asm | 
| Account |  13.10.2011 14:05 
				 Сообщение
					#4				
			 | 
| Бывалый    Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация:  0    | Похоже, эта тема интересна мне одному, но оставить недоделанным это задание я не мог. Вот версия, которая пишет напрямую в видеопамять. Ну как это, не только тебе одному (свой скромный результат я тебе показывал). Мне она тоже интересна, просто я пока не смог разобраться с прямым выводом в видеопамять в графическом режиме, знаний мало и способности видимо нет. Так же голова забита о предстоящей в скором времени сессии, предпоследней перед Дипломным проектом, в поиске темы для которого я сейчас так же нахожусь.((( Остальное в приват отправил. Сообщение отредактировано: Account - 13.10.2011 14:07 | 
| IUnknown |  13.10.2011 17:15 
				 Сообщение
					#5				
			 | 
|  a.k.a. volvo877      Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация:  627    | Значит, по поводу артефактов... Большую часть убрал, со ступенчатостью, извини, сделать ничего не могу, это все-таки не горизонтальные/вертикальные, а диагональные линии, причем соотношение сторон в этом граф. режиме тоже не самое благоприятное. Касаемо черных точек, проскакивающих в некоторых местах - еще раз проверил всю работу с битами в начальном/конечном неполных байтах (уверен, проблема - именно там, какой-нибудь бит маски неправильно выставляется, или что-то в этом роде, отсюда и "битый пиксель", опять же - заметил, что появляются эти черные только на стыках разных цветов, а не в середине?). Пока ничего некорректного в коде найти не могу, потом еще покопаюсь. Что касается правого нижнего угла - это вообще для меня загадка, я уже ограничил входные данные в процедуре ScanLine, теперь физически линия не может заходить на предыдущую/последующую строки (а очень похоже на то, что где-то все-таки происходит выход за пределы 0 .. 639 и пиксель уходит на соседнюю строку). Прогнал несколько раз в отладчике - не вижу, где проблема (то есть, время возникновения - как раз увидел, эта фигня проявляется, когда рисуется нижняя часть малинов Сообщение отредактировано: IUnknown - 13.10.2011 17:16 Прикрепленные файлы  lines9v.zip ( 4.18 килобайт )
Кол-во скачиваний: 689 | 
| Account |  13.10.2011 17:38 
				 Сообщение
					#6				
			 | 
| Бывалый    Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация:  0    | Значит, по поводу артефактов... Большую часть убрал, со ступенчатостью, извини, сделать ничего не могу, это все-таки не горизонтальные/вертикальные, а диагональные линии, причем соотношение сторон в этом граф. режиме тоже не самое благоприятное. Касаемо черных точек, проскакивающих в некоторых местах - еще раз проверил всю работу с битами в начальном/конечном неполных байтах (уверен, проблема - именно там, какой-нибудь бит маски неправильно выставляется, или что-то в этом роде, отсюда и "битый пиксель", опять же - заметил, что появляются эти черные только на стыках разных цветов, а не в середине?). Пока ничего некорректного в коде найти не могу, потом еще покопаюсь. Что касается правого нижнего угла - это вообще для меня загадка, я уже ограничил входные данные в процедуре ScanLine, теперь физически линия не может заходить на предыдущую/последующую строки (а очень похоже на то, что где-то все-таки происходит выход за пределы 0 .. 639 и пиксель уходит на соседнюю строку). Прогнал несколько раз в отладчике - не вижу, где проблема (то есть, время возникновения - как раз увидел, эта фигня проявляется, когда рисуется нижняя часть малинов По поводу ступенчатости. Я понимаю что от нее не деться. Я там обвел только в одном месте что то слишком торчало)) Далее, верхний левый угол, такое ощущение что не с 0-го пикселя (по оси Y) начинало рисовать, я стрелочкой показал. При том что это только на первой полоске от главной диагонали почему то. //----------------------------------------------------- Посмотрел последнюю версию. Все шикарно и быстро. Только уголок остался.)) Может, еще кто посмотрит и найдет что не так... Честно, гложет большое сомнение, что кто то захочет копаться в чужом коде на данном языке). Но время покажет, может и ошибаюсь... Сообщение отредактировано: Account - 13.10.2011 17:48 | 
| TarasBer |  13.10.2011 21:47 
				 Сообщение
					#7				
			 | 
|  Злостный любитель      Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация:  62    | Похоже, эта тема интересна мне одному, но оставить недоделанным это задание я не мог. Вот версия, которая пишет напрямую в видеопамять. Париться с "удобным" устройством видеопамяти в 640х350 мало кому интересно. Возни много, а толку? 320х200, 256 цветов намного интереснее. -------------------- | 
| IUnknown |  14.10.2011 13:02 
				 Сообщение
					#8				
			 | 
|  a.k.a. volvo877      Группа: Пользователи Сообщений: 1 013 Пол: Мужской Репутация:  627    | Надо ж было так ошибиться... Account, исправь (строка 494): ; Рисуем пиксели из конечного неполного байта , я ж говорил, что проблема - с замыкающим байтом... | 
| Account |  14.10.2011 16:22 
				 Сообщение
					#9				
			 | 
| Бывалый    Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация:  0    | Надо ж было так ошибиться... Account, исправь (строка 494): ; Рисуем пиксели из конечного неполного байта , я ж говорил, что проблема - с замыкающим байтом... От ошибок никто не застрахован, особенно в этом языке. Подправил, проверил. Ну что тут можно сказать, супер, быстро и красиво. А ты как всегда на высоте. Сообщение отредактировано: Account - 14.10.2011 16:26 | 
|   | 
|   | Текстовая версия | 1.11.2025 0:48 |