![]()
DimP
![]() ![]() offline
Опыт:
1,741Активность: |
Прорисовка текста с помощью DirectX api (для новичков)
Инструменты:Directx SDK (Microsoft.com) Microsoft Visual Studio (нужен VC++)(Microsoft.com) D3D Starterkit by Azorbix (В архиве) Подготовка:Будем считать что MVS и DirectX sdk уже скачаны и установлены. Запускаем VC++, идем tools->options, выбираем вкладку directories и прописываем пути ко всем папкам из directx sdk. (если у вас старая версия VC++ ,например 6.0, тогда скопируйте все файлы проекта в папку old worksplace ,и запустите TatniumD3D.dsw) Для DirectX 9 приложений.Для прорисовки текста можно писать свои функции, но я думаю для начала проще и надежнее использовать уже готовые. Будем использовать d3dfont class by Azorbix. Копируем .h и .cpp файлы в папку с проектом, потом загружаем их (Project-> Add to Project -> Files). Далее идем d3d9dev.cpp , и создаем две функции: Код:
Находим Код:
Записываем туда Код:
Находим Код:
Записываем Код:
Теперь мы можем использовать функцию AddFont() Код:
Где x,y -позиция текста на экране, a,r,g,b цвет в формате argb. Остальные два параметра это формат(можно использовать FT_CENTER, FT_BORDER), и собственно строка. Для прорисовки созданного текста в IDirect3DDevice9::EndScene() нужно написать Код:
Пример, рисуем Hello World в середине экранаОбъявляем переменные: Код:
В BeginScene(): записываем середину экрана в x, y. Код:
В EndScene() : Код:
Для DirectX 8 приложенийСоздайте проект с файлами из папки D3D8/. Теперь создадим функцию рисующую текст. Код:
В BeginScene() пишем: Код:
В EndScene () рисуем текст: Код:
ЗагрузчикКомпилируем dll ,теперь ее нужно внедрить в процесс. Для этого можно использовать TatniumLoader из D3D Starterkit, или написать загрузчик самому. Будем использовать TatniumLoader. Идем в папку Injector и запускаем проект. Находим main.cpp ,в нем строку #define APP_EXE "target_application.exe" И записываем название процесса приложения, в который надо поместить dll, вместо "target_application.exe" . Думаю это пригодится для изготовления ingame меню и т.п. Пример меню для WarCraft 3Скриншоты: ![]() ![]() Исходник и текстуры в архиве. Отредактировано DimP, 01.01.2010 в 20:17. |
![]() |
#1
+1/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
RazArt
![]() ![]() offline
Опыт:
11,197Активность: |
И чё? Какая связь с варом? о_О
|
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
DragonSpirit
у - уходи
![]() ![]() offline
Опыт:
22,625Активность: |
RazArt, мб для создания ingame меню в модах.. |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
Nekit1234007
![]() ![]() offline
Опыт:
11,916Активность: |
Новички будут делать
Цитата:
|
|
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
RazArt
![]() ![]() offline
Опыт:
11,197Активность: |
Для этого есть целые учеблики по сипп и графике...
|
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
DimP
![]() ![]() offline
Опыт:
1,741Активность: |
RazArt тут конкретные функции, готовые инструменты... Думаю посмотреть статью проще чем читать толстый учебник(и не один) с первой страницы. Связь с warcraft есть, т.к warcraft использует directx, 8.1 вроде.
|
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
RazArt
![]() ![]() offline
Опыт:
11,197Активность: |
То есть ты хочешь вшить свои ф-ции в вар?)
А если серьёзно, то вар для винды, мб напишем какую-нибудь статью про неё?) |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
DimP
![]() ![]() offline
Опыт:
1,741Активность: |
В теме "Темы написания статей" есть пункт "Взаимодействие внешних программ с движком Warcraft и его редактирование" ,статья должна помочь сделать "взаимодействие внешних программ с движком Warcraft" более понятным пользователю (GUI к какой-нибудь программе например). =)
|
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
Lazdakon
/dev/null
![]() offline
Опыт:
43,970Активность: |
RazArt, солидарен. Статья не нужная, большая аудитория новичков и не только, этим не заинтерисуется. Некоторые даже не знают об этом.
Отредактировано Nething, 17.07.2010 в 11:31. |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
RazArt
![]() ![]() offline
Опыт:
11,197Активность: |
DimP, напиши статью о вшивки в дллки вара сторонних ф-ций, тогда станет интересно
|
![]() |
#10
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
Cytaster
![]() ![]() offline
Опыт:
3,757Активность: |
Можно скрины или примеры? |
![]() |
#11
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
DimP
![]() ![]() offline
Опыт:
1,741Активность: |
Sarcazi, добавил пример простенького меню и скриншоты.
|
![]() |
#12
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
для меню есть DGUI :P |
![]() |
#13
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
DimP
![]() ![]() offline
Опыт:
1,741Активность: |
ScorpioT1000, С помощью dgui можно рисовать меню для внешних программ ?
|
![]() |
#14
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
YellowStar
poon
![]() ![]() offline
Опыт:
15,144Активность: |
Круче добавить блур эффект. Или сглаживания плюс анизатропные фильтрации. Даешь такую модификацию! |
![]() |
#15
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
SwuJe
aka Sakh_badboy
![]() ![]() offline
Опыт:
15,238Активность: |
DimP, как это чудо вставить в вар? |
![]() |
#16
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
FunkieFoO
![]() ![]() offline
Опыт:
7,159Активность: |
сах а ты статью то прочитай :Р
статья хороша, автору респектище |
![]() |
#17
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
DragonSpirit
у - уходи
![]() ![]() offline
Опыт:
22,625Активность: |
Всё же респект :) удобнее дгуи,но отдельная прога не есть гуд => только для модов |
![]() |
#18
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
Sonic456
![]() offline
Опыт:
943Активность: |
>Компилируем dll ,теперь ее нужно внедрить в процесс.
Для этого можно использовать TatniumLoader из D3D Starterkit, или написать загрузчик самому. Будем использовать TatniumLoader. Идем в папку Injector и запускаем проект. Находим main.cpp ,в нем строку #define APP_EXE "target_application.exe" И записываем название процесса приложения, в который надо поместить dll, вместо "target_application.exe" .> То есть, я так понимаю, Вар взламывать? |
![]() |
#19
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
![]()
agentex
![]() offline
Опыт:
34,834Активность: |
хрена себе.. а мы с дгуи мучаемся ^_^ хотя я подозреваю тут тоже не без косяков.. |
![]() |
#20
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|