![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Шо не так?
Lamer_2006 © (2006-10-27 14:43:00)Люди, помогите, плиз! Есть текстура 512х512, в центре нарисован Rectangle. Как теперь этот Rectangle наложить на пару тругольников, составляющих квадрат. Проблема в том что я четко задаю Direct'у текстурные координаты, но в нужные пиксели не попадаю....
Lamer_2006 (2006-11-05 07:21:00) [1]Спасибо
Cash (2006-11-04 07:45:00) [2]неа!
У тебя уже есть все нужные тебе ТК. тебе их толко сместить надо.
Можно к центру, можно все +0,5, можно все -0,5.
Главное, чтобы определить какой именно пиксель из карты тебе нужен,
тебе надо ТК установить имеено на этот пиксель, а не на его границу,
т. е. +/-0,5.
Вот смотри, надо указать область с 80 по 92 пиксель карты, при этом
ширина полигона будет равна 12 (замечаем сходство, не проходим мимо).
Берем и говорим, что вершины будут такими:
((50,50,0),1,(80.5/1024,0)),((62,50,0),1,(92.5/1024,0)),
((50,80,0),1,(80.5/1024,1)),((62,80,0),1,(92.5/1024,1)).
И потом рисуем их в связке D3DPT_TRIANGLELIST.
Если нужен первый пиксель, то надо сказать: 0.5, а если последний -
то 1023.5.
Lamer_2006 (2006-11-03 19:09:00) [3]Т.е. у каждого треугольника мне надо найти MaxTX, MinTX, MaxTY, MinTY и к ним уже прибавлять?
Cash (2006-10-30 10:44:00) [4]ыыы! бывает! :)
Дак так ты задаешь конец 54 пикселя!
надо так: (53,5)/1024;
Все ТК деформируй тогда на 0.5 пикселя к центру, т. е. верхие ТК по Y
делай по +0,5, а нижние - по -0,5.
Так ты попадешь по центру пикселя.
И... включи линейную фильтрацию по магнификату, поможет!
Lamer_2006 (2006-10-30 06:26:00) [5]Сорри, под ником моего брата написал :(
Lamer_2006 (2006-10-30 06:25:00) [6]Например, задаю нижний правый угол, пусть мне нужен 54 пиксель текстуры => 54/1024=0.05273, но на экране этого пикселя нет, как так?
VolanD666 (2006-10-30 06:25:00) [7]Например, задаю нижний правый угол, пусть мне нужен 54 пиксель текстуры => 54/1024=0.05273, но на экране этого пикселя нет, как так?
Cash (2006-10-29 20:38:00) [8]Так! А как именно?
1024/1024 ???
или 1?
или 0.95?
Lamer_2006 (2006-10-29 14:27:00) [9]Проблема в том, что верхняя левая вершина попадает, а нижняя правая отстает на один пиксель, хотя я четко координатами указал нужный...
Cash (2006-10-29 07:46:00) [10]Lamer_2006 (28.10.06 18:40) [10]:
Вершины трансформированные (RHW)?
Включи линейную фильтрацию по магнификату.
Смести позиции точек к центру на 0.5.
Оставь ты эти ТК! Они пусть будут (0,0,1,1).
Ketmar (2006-10-28 18:57:00) [11]>[10] Lamer_2006 28-Oct-2006, 18:40
>Да мне не надо посередине, мне надо чтобы рамка вошла вся
>полностью!
иди за метлой. все проблемы с пикселами сразу исчезнут. в стране дворников хороших мало.
Lamer_2006 (2006-10-28 18:40:00) [12]Да мне не надо посередине, мне надо чтобы рамка вошла вся полностью!
Rial (2006-10-28 11:59:00) [13]Ну вот смотри: поставь карандаш на пересечение линий в
тетрадке в клеточку...
А тебе теперь нужно так переместить карандаш (читай - сместить
текстурные координаты), чтобы он встал ровно посерединке клеточки...
Lamer_2006 (2006-10-28 11:24:00) [14]А в центр ето как?
Ketmar (2006-10-27 19:28:00) [15]для информации: в данном случае точка имеет размеры. ага.
Ketmar (2006-10-27 19:28:00) [16]да хоть вверх. лишь бы в центр.
Lamer_2006 (2006-10-27 19:12:00) [17]Фильтрация отключена. Так влево или вправо?
И что значит эта формула:
Tx=(u*Mx)-0.5 ( DirectX SDK)
Ketmar (2006-10-27 18:27:00) [18]да не "влево-вправо". а по центру. %-))
Rial (2006-10-27 18:00:00) [19]У меня была такая же беда.
Насколько я помню, чтобы точно в пискселы попадать, нужно
сместить координаты то ли влево, то ли вправо на 0.5 пиксела
в относительных размерах.
Еще присоединюсь к
> [2] XProger © (27.10.06 16:48)
XProger (2006-10-27 16:48:00) [20]Lamer_2006, отключи фильтрацию текстур
Cash, написано про API...