|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 25, 2003 12:59:39 Как просто и без затей вывести немного текста на поверхность в нужном месте? Чтоб мона было шрифт задать и чтоб не мерцало. |
|
|
Дата: Июл 25, 2003 15:23:43 Если совсем без затей, то банально TextOut. Для многих простых применений, типа отладки, GDI вполне подходит... Правда, иногда изрядно тормозит... |
|
|
Дата: Июл 25, 2003 16:10:15 Никакого GDI в DirectX применять ненужно ! Я уже отослал очередную статью об использовании текста в DirectX. Это именно то что тебе нужно. Надеюсь что через пару дней она будет опубликована. |
|
|
Дата: Июл 25, 2003 16:54:47 > Надеюсь что через пару дней она будет опубликована Но fuck, мне надо щас а не через два дня =) Сложно чтоли куском сорца кинуться, не думаю что там больше десяти строк будет. |
|
|
Дата: Июл 25, 2003 18:56:38 До седьмых директдров можео было у сурфейса получить DC, а на него уже GDIшными функциями пихать и линии и текст. А вот в как на 8 и больше сам понятия не имею, даже в хелпах с MS DX8 SDK не нашел. Вообще-то в играх делают так: Загоняют в битмам картинку со всеми буквами алфавита(типа таблица), а оттуда уже копируют на сурфейс. |
|
|
Дата: Июл 26, 2003 14:45:05 · Поправил: Безпощадный даос >Но fuck, мне надо щас а не через два дня =) >Сложно чтоли куском сорца кинуться, не думаю что там >больше десяти строк будет. Специально для всех нетерпеливых :) выкладываю сабж. Использование данного сабжа не освобождает вас от просмотра полноценной статьи по этому вопросу :)
0. Подготовка
-------------
Подключаем файл font.inc
( все используемые функции будут вызываться из d3dx8d.dll )
1. Создание шрифта
-------------------
.DATA
;LOGFONT ------------------------------; Параметры шрифта
lfHeight dd 16 ; Размер
lfWidth dd 0 ;
lfEscapement dd 0 ;
lfOrientation dd 0 ;
lfWeight dd FW_BOLD ;
lfItalic db 0 ;
lfUnderline db 0 ;
lfStrikeOut db 0 ;
lfCharSet db DEFAULT_CHARSET ; Кодировка по умолчанию
lfOutPrecision db 0 ;
lfClipPrecision db 0 ;
lfQuality db 0 ;
lfPitchAndFamily db 0 ;
lfFontName db "verdana",0 ; Имя шрифта
.DATA?
pd3dFont dd ?
.CODE ; Без Direct3DDevice шрифт создать нельзя
invoke D3DXCreateFontIndirect, pd3dDevice, ADDR lfHeight , ADDR pd3dFont
2. Отрисовка текста
-------------------
.DATA
szText db "Специально для всех нетерпеливых :)",0
TextLeft dd 100 ; Прямоугольник для вывода текста
TextUp dd 100 ;
TextRight dd 0 ;
TextBottom dd 0 ;
.CODE
d3dxfont8 DrawTextA, pd3dFont, ADDR szText, -1 , \
ADDR TextLeft , DT_NOCLIP , 0FFFFFFFFh
3. Замочить все связанное с текстом
-----------------------------------
.CODE
d3dxfont8 Release, pd3dFont
Также это можно взять здесь: _345790448__DirectX_Text.zip |
|
|
Дата: Июл 27, 2003 01:01:44 Мля, fuckup опять, нету у меня Direct3DDevice и быть не может - приложение то DirectDraw использует а не Direct3D :( А прога чужая и в бинарнике, так штаа ее особо не перепишешь. |
|
|
Дата: Июл 28, 2003 11:52:21 >Мля, fuckup опять, нету у меня Direct3DDevice и быть не может - приложение то DirectDraw использует а не Direct3D :( Надо быть поточнее в своих вопросах. Так сразу бы и написал. GanDJuStasправ. До восьмого Direct'а, рисовать на сурфейсе можно через GetDC, но только на BackSurface и затем Flip'ом показывать. Если сразу на экран, тогда мерцание обеспечено. Насчет тормозов bsl_zcs тоже правильно заметил. Это все таки GDI, а не Direct3D. В восьмом директе и выше, если не ошибаюсь, DirectDraw вообще упразднили за ненадобностью. Отрисовка всех 2D элементов производится через 3D без координаты Z. Если он как-то и присутсвует, то в виде завуалированных Surface'ов до которых добираться... Скорее всего у тебя приложение использующее директ не выше седьмого. А с ним дорога одна - GDI и GetDC. >А прога чужая и в бинарнике, так штаа ее особо не перепишешь. А как ты в нее вообще собираешся что-то дополнительно напихать? |
|
|
Дата: Июл 28, 2003 13:27:14 Да, прога юзает седьмой DirectDraw, где хранится адрес back-buffer я знаю, но мне интересно куда тут девать GetDC() - эдак я похоже на primary-surface буду рисовать а не на заднем. Ы? А дополнительное я собираюсь напихать в отдельную dll а потом запатчить прогу чтоб она дергала из нее функции ;) |
|
|
Дата: Июл 29, 2003 00:41:29 Так у тебя адрес или указатель? Если указатель на back-Buffer, тогда берем методом DirectDraw контекст Surface'а: GetDC, lpDDSBackSurface, ADDR hdc Рисуем... Ну а потом освобождаем методом DirectDraw контекст Surface'а: ReleaseDC, lpDDSBackSurface, hdc Думаю ты это и без меня знаешь С Dll хитро :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.078 |