Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

2D в 3D, DirectX и вообще...

3 views
Skip to first unread message

Daniil Smolyakov

unread,
Sep 23, 2005, 10:10:51 AM9/23/05
to
Привет!

Такие дела:
DirectX 7
Двумерная игрушка. Сначала использовал только DirectDraw.
Наткнулся на то, что не могу вывести Alpha канал картинки.
Сделал вывод таковой вручную, в надежде, что прокатит, но обломался.
Естественно, что скорости недостаточно...
Перешел на Direct3D.
Вывожу 2D графику в 3D режиме используя RHW координаты.
Ура, заработало! Все картинки, как им и положено - полупрозрачные,
никаких острых краев...
На GeForce FX5200 все идет нормально...
А на GeForce 4 и i915 возникает проблема с текстурами:
берет только первую точку текстуры (или цвет только первой
вершины в списке) и красит ей весь многоугольник (trianglestrip).
То есть ни градиентов, ни текстур как таковых не выводит...

Вот. Еще хотца вывести мини экран на общем экране
(аля RenderToTexture). То есть нужно включить как-то отсечение
краев в заданном прямоугольнике. В DirectDraw - это
DirectDrawClipper - благополучно влияет на Blt. А что
использовать для 3D? Есть некие ClipPlanes. Но в DirectX7
примеров их использования я не нашел, а руками и проведением
аналогий от DirectX 8 ничего не получилось.
Пока не получил ответа - зреет мысль вручную отрезать каждый
спрайт, с соответствующим расчетом текстурных координат внутри него...
Но на глаз - как-то это корявенько...

Пресекая некоторые комментарии добавлю, что DX7 использован для
возможности работы со старыми видеокартами. Игрушка для того,
чтобы ее и на старых офисных машинках запускать можно было...
Хотя особо я в этом вопросе не упорен и при накоплении
некоторого неположительного опыта могу перейти-таки на DX8...

Вопросы:
В проблеме с RHW, я, возможно, пропустил установку какого-либо
RenderStat'а, который на ЖеФорсе 5 по умполчанию включен,
а на других картах выключен?

Работает ли ClipPlanes в RHW режиме? Если да, то как?

Где можно взять доступный пример работы со спрайтами в 3D?
Возможно, есть какие-либо приемы работы кроме RHW?
Например вывод всего в честном 3D, но со специфическими
видовыми матрицами (чтобы координаты полигонов былы равны экранным,
то есть в место, например 1.1 можно было написать 235...)
Если да, то какими?
Пробовал FOV=3.134926, Aspect=0.75000.
Экспериментальным путем подобрал для разрешения 800x600.
Почти работает. Почти - это потому, что примерно в центре экрана,
при координатах x~400,y~300, многоугольник меняет размер на 1-3
пискела, что, естественно, непримемлемо.

И есть ли еще где-нибудь путевые доки по DirectX7?

P.S. Понимаю, что все это выглядит как некачественная кустарщина,
но, собсно, чтобы такого не было и прошу помощи.

Наверняка у кого-нибудь из теперь уже матерых гейммейкеров
наработки остались. Поделить, не поленитесь. ;-)

Спасибо.
Пока!

MoonStone.


0 new messages