Реализация AntiAlias`а (VB.NET 2008)

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Реализация AntiAlias`а (VB.NET 2008)

Сообщение MIT » 27.11.2008 (Чт) 15:59

Совсем недавно начал изучать MDX (прошел всякие буферы, текстурирование, mesh`ы и прочее), но нигде не нашел примера использования сглаживания. Подскажите, plz, как это дело реализовать? В сцене используется всего 10-15 квадратов (под разными углами), на которые "натянуты" текстуры, соответственно за мега-производительностью гнаться не стоит.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение Mikle » 27.11.2008 (Чт) 18:18

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

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение lellel » 27.11.2008 (Чт) 19:11

интересная тема.. а в VB6 есть средства для управления Antialiasing?

добавлено позже:
а что такое
d3dpp.MultiSampleType ?
нашел в сдк по запросу Antialiasing строку в процедуре инициализации устройства рендера:
d3dpp.MultiSampleType = D3DMULTISAMPLE_2_SAMPLES

вроде как раз сглаживает края.. список констант большой, но дальше D3DMULTISAMPLE_4_SAMPLES не работает..

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение Debugger » 27.11.2008 (Чт) 19:55

lellel писал(а):интересная тема.. а в VB6 есть средства для управления Antialiasing?

С DX - конечно есть. Без DX - только ручки.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение lellel » 27.11.2008 (Чт) 20:18

Debugger
напиши пожалуйста подробнее..

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение Debugger » 27.11.2008 (Чт) 20:58

Антиализинг - сглаживание изображение для избежания "лесенки". Самый простой пример:
Берем ячейки, у которых x Mod 2=0 и y Mod 2=0 . То бишь, каждую вторую ячейку. Для каждой из них вычисляем средний цвет соседних 9 ячеек и ставим полученное значение в ячейку. Назовем их "базовыми". После этого все "небазовые" ячейки очищаем. Для каждой из них: берем среднее значения соседних "базовых" ячеек и ставим в нее. Описание не очень, но код простой. Если надо - покажу.
З.Ы. Алгоритм мой :)

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение lellel » 27.11.2008 (Чт) 21:04

покажи:)
но я думал DX что то сам умеет.. а что я написал выше.. d3dpp.MultiSampleType
что это такое?

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение Debugger » 27.11.2008 (Чт) 21:30

:) В DX это есть. Ты прав, MultiSampleType отвечает за сглаживание углов полигонов. Саму текстуру можно фильтровать для того, чтобы она красиво и без растяжек прорисовывалась на полигон.
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось Debugger 27.11.2008 (Чт) 22:05, всего редактировалось 1 раз.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение MIT » 27.11.2008 (Чт) 21:43

Если честно, то я точно не знаю: мне надо избежать "лесенки" при отображениии квадратов под углом. Я думаю (по аналогии с GDI+), что это решается при помощи сглаживания, а что такое фильтрация текстур, в общем, даже и не знаю. Если можно, то объясните поподробнее.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение Debugger » 27.11.2008 (Чт) 22:08

Фильтрация текстур - это, если я не ошибаюсь, когда берется треугольный кусочек текстуры, растягивается на соответствующие ему координаты в 3D пространстве и потом антиализится.
А с квадратами - смотри пример, мой пост, чуть выше.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение MIT » 27.11.2008 (Чт) 22:47

Не, ну это все хорошо, но как это "прикрутить" к MDX?

Путем анализа вышенаписанного текста придумал вот что
presentParams.MultiSample = MultiSampleType.FourSamples
и вроде стало получше, хотя и не на много...
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение lellel » 28.11.2008 (Пт) 2:11

а что за константы D3DMULTISAMPLE_5_SAMPLE, D3DMULTISAMPLE_6_SAMPLE, и т.д. ?
это как бы степень сглаживания?
а почему некоторые (при циферке в середине больше чем 4) не работают?

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение Vovik » 28.11.2008 (Пт) 10:08

lellel писал(а):а что за константы D3DMULTISAMPLE_5_SAMPLE, D3DMULTISAMPLE_6_SAMPLE, и т.д. ?
это как бы степень сглаживания?
а почему некоторые (при циферке в середине больше чем 4) не работают?

В сдк точного описания не нашел , скорее всего точность сглаживания. Зависит от видеокарты. Нужно caps просмотреть и бушь знать, что твоя видюха может.

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение Vovik » 28.11.2008 (Пт) 10:17

Например моя видюха держит только 2X, 4X, 8X т.е. числа кратные степени двойки. Помнится GFMX440 держала 2X, 3X, 4X. :roll:

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение MIT » 28.11.2008 (Пт) 12:22

Vovik писал(а):скорее всего точность сглаживания

Скорее степень сглаживания. Это и есть тот самый антиалиасинг.

Однако в моей проблеме только этим по ходу дела не обойтись. Все равно получается "лесенкой", наверно дело в фильтрации текстур.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Реализация AntiAlias`а (VB.NET 2008)

Сообщение MIT » 28.11.2008 (Пт) 12:49

Нашел интересную процедуру
Microsoft.DirectX.Direct3D.TextureLoader.FilterTexture
По названию можно догадаться, что это (наверно) то что надо, но как это юзать?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш


Вернуться в Мультимедиа

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 36

    TopList