?

Log in

No account? Create an account
21 апр, 2008 @ 12:00 Как программно отразить спрайт в DirectХ?
UPD: решено

 Я пишу 2д файтинг, и такое тупое дублирование кода получается, самому противно. Пробовал sprite.Transform = sprite.Transform.Reflect(...);, но что то ничего не происходет. Буду очень благодарен, если дадите пример отражения спрайта в directХ.
P.S. Отразить - всмысле как в зеркале, или то что в фотошопе зовется canvas->flip horizontal
Slon
pink_master:
[User Picture Icon]
From:k0t_igrun
Date:Апрель, 21, 2008 12:29 (UTC)
(Ссылка)
я не умею DirectDraw, но умею гугль...

гугление показало, что достаточно перевернуть поверхность на которой находится битмэп...
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:pink_master
Date:Апрель, 22, 2008 07:46 (UTC)
(Ссылка)
я пробовал что-то похожее, но спрайт это не невидимая поверхность с натянутой текстурой, а именно такая вот штука. когда его поворачиваешь, на 180 он просто исчезает(:
(да пробовал я гугл, и мсдн... повернуть, маштабировать - пожалуйста, отразить - болт(: )
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:bazzilic
Date:Апрель, 22, 2008 08:57 (UTC)
(Ссылка)
А масштаб с коеффициентом -1 не сработает?
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:pink_master
Date:Апрель, 23, 2008 13:28 (UTC)
(Ссылка)
спасибо, сработал)))
только если просто так маштабнуть, текстура вобще исчезнет. я сперва подумал что маштаб < 0 значит вобще не выводить, а потом нашел на gamedev.net что еще надо координаты вывода на отрицательные поменять(по той оси, по которой скалируешь)
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:zloe_zlo
Date:Апрель, 21, 2008 14:46 (UTC)
(Ссылка)
Где в директиксе? В директдроу, в директ3д?
Каким инструментом пользуетесь?
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:pink_master
Date:Апрель, 22, 2008 07:41 (UTC)
(Ссылка)
В Direct3D,
класс Microsoft.DirectX.Sprite(но не суть)
(C#)
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:zloe_zlo
Date:Апрель, 22, 2008 13:18 (UTC)
(Ссылка)
почему не суть
у DirectX.Sprite есть несколько перегруженых функций Draw. Одна из них принимает Rectangle с текстурными координатами. Выверни координаты с лева на право и получишь зеркальный спрайт.
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:pink_master
Date:Апрель, 23, 2008 13:24 (UTC)
(Ссылка)
а что ты имеешь ввиду "слева направо"?
этот прямоугольник вроде просто означает выводить всю текстуру, или ее кусочек.

Я кстати уже нашел как отразить: маштабировать с отрицательным значением + изменить координаты() на отрицательные, а то текстура просто исчезнет из поля зрения.
но спасибо)))
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:zloe_zlo
Date:Апрель, 23, 2008 16:43 (UTC)
(Ссылка)
просто если ты в этом прямоугольнике укажешь например (X,Y,0,0) вместо (0,0,X,Y) то текстура нарисуется наоборот (покрайней мере в с++ :) )
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:helvene
Date:Апрель, 21, 2008 15:07 (UTC)
(Ссылка)
Стоит учить английский.
(Ответить) (Ветвь дискуссии)
[User Picture Icon]
From:pink_master
Date:Апрель, 23, 2008 13:31 (UTC)
(Ссылка)
> Стоит учить английский.

все равно что послать на ***, только с издевкой=)
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:helvene
Date:Апрель, 24, 2008 12:09 (UTC)
(Ссылка)
Почему?
Тогда можно будет читать англоязычную документацию и задавать вопросы в англоязычных сообществах. От этого бывает польза, поверьте :)
(Ответить) (Уровень выше) (Ветвь дискуссии)
[User Picture Icon]
From:pink_master
Date:Апрель, 24, 2008 13:50 (UTC)
(Ссылка)
я там ответ и нашел)))
(Ответить) (Уровень выше) (Ветвь дискуссии)