Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2009, 18:51   #1
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию Вопросы по разработке приложений DirectX.

Начал смотреть книгу "DirectX. Графика в проектах Delphi Краснова". Cюда буду писать вопросы относительно DX. Для начала проблемы с файлом(поставляются с книгой) DirectDraw.pas. Компилятор (Delphi7) ругается на строчки:
Код:
var
  NilGUID : TGUID absolute 0;
Код:
lpDDSZBufferDest            : PDirectDrawSurface; // Surface to use as Z buffer for dest
и многие другие. В чем дело?

Последний раз редактировалось Вадим Буренков; 29.10.2009 в 19:56.
Вадим Буренков вне форума Ответить с цитированием
Старый 29.10.2009, 19:29   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

возьмите другие заголовочные файлы... у него они устаревшие
Вложения
Тип файла: zip header.zip (366.6 Кб, 15 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.10.2009, 19:52   #3
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Спасибо , уже скачал.
Вадим Буренков вне форума Ответить с цитированием
Старый 30.10.2009, 10:08   #4
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

В примере одной из программ есть такой код:
Цитата:
while True do begin
hRet := FDDSPrimary.GetDC(DC);
if Succeeded (hRet) then begin
wrkCanvas := TCanvas.Create;
wrkCanvas.Handle := DC;
wrkBitmap := TBitmap.Create;
wrkBitmap.LoadFromFile ('..\lake.bmp');
wrkCanvas.Draw(100, 100, wrkBitmap);
wrkBitmap.Free;
wrkCanvas.Free;
FDDSPrimary.ReleaseDC (DC);
Break;
end;
Впервые вижу такую строчку:
while True do begin - что это за true?
Вадим Буренков вне форума Ответить с цитированием
Старый 30.10.2009, 10:39   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

просто бесконечный цикл или проверка на полож.результат функции
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 30.10.2009 в 10:41. Причина: но хотелось-бы увидеть весь контекст, так сказать
raxp вне форума Ответить с цитированием
Старый 30.10.2009, 22:15   #6
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Как я понял DX делится на DirectDraw и Direct3D. Первый работает с 3D, а второй с 2D и 3D. Мне 3D не нужно пока, но с чем работать? На первый взгляд там разница большая.
Вадим Буренков вне форума Ответить с цитированием
Старый 31.10.2009, 00:13   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...если вы используете компоненты, то разницы не вижу. Но смотря для каких задач вы используете. Например, в DirectDraw добавлена поддержка стерео дисплеев...но это конечно частный случай. У D3D основной недостаток - не кроссплатформенный абсолютно (почему лично пришлось на OGL), в тоже время полная поддержка всеми видеокартами.

...а теперь основной камень в огород - DirectDraw использовался для работы только с 2D и начиная с DX8 слился с direct3d. Так, что перспективы d3d, если вы будете разрабатывать для win32

пы-сы: много конечно тут наговорил, но в меру сил
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 03.11.2009, 18:24   #8
Вадим Буренков
Участник клуба
 
Аватар для Вадим Буренков
 
Регистрация: 06.03.2009
Сообщений: 1,346
По умолчанию

Решил написать по одной статье простенький движок на D3D в DLL. С инициализацией и рисованием вроде разобрался, но как создать форму процедурой? То есть когда мы делаем простые приложения они сами создаются, а мы на них компоненты кидаем. А как создать форму в DLLной процедуре?
Вадим Буренков вне форума Ответить с цитированием
Старый 03.11.2009, 19:49   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

дык, а в чем проблема... создайте форму динамически и экспортируйте ее вызов из dll... например всегда делал так:
Код:
library ra_gl;

uses
  windows,
  SysUtils,
  Classes,
  Forms,
  tst in 'tst.pas' {dllg1}; - саму форму проектирую как обычно, в визуальном режиме

function key(pid,par:dword):pchar; stdcall;
var Form: TDLLg1;
begin
 Form  := Tdllg1.Create(Application);
 Result:=pchar(inttostr(Form.ShowModal));
 Form.Free;
end;
exports key;

begin

end.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 05.11.2009, 11:42   #10
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Вадим Буренков
Возьми книгу DirectX и Delphi: разработка графических и мультимедийных приложений
тоже есть изюминка.
VintProg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите в разработке shkipper Общие вопросы по Java, Java SE, Kotlin 5 08.04.2009 02:32
общие вопросы по разработке ГИС alba84 Общие вопросы Delphi 1 02.07.2008 13:53