Пятница, 20.06.2025, 21:52
Приветствую Вас Гость | RSS
Главная | TO DoomCross - Форум | Регистрация | Вход
Direct3D. Разработка игр
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
TO DoomCross
SvakeДата: Четверг, 21.02.2008, 18:11 | Сообщение # 1
Лейтенант
Группа: Модераторы
Сообщений: 25
Репутация: 2
Статус: Offline
я делал так: сделлал класс TEngine т.е. сам движок, в нем происходит инициализация и тд. и рендер. затем создал класс TEngineObject ну это объект создал в нем процедуру прорисовки Draw в нем прописал матрицы, затем создал класс TEngineMesh - наследник класса TEngineObject в нем тоже создал процедуру Draw и унаследовал ее на Delphi это выглядит так:
TEngineObject=classs
.......
function Draw:HResult;
.....
end;

TEngineMesh=class(TEngineObject)
.........
function Draw:HResult; override;
.........
end;
..............
function TEngineMesh.Draw:HResult;
begin
Inherited Draw;
................
end;

а в рендере движка писал так:
function TEngine.Render:HResult;
begin
Result := ClearDevice;
if FAILED(Result) then EXIT;
FD3DDevice.BeginScene;
try
if FNobj>=0 then
for i:=0 to FNobj-1 do
FObjects[i].Draw;
finally
FD3DDevice.EndScene;
end;
FD3DDevice.Present(NIL, NIL, 0, NIL);
end;

FObjects - это динамический массив объектов если что то не понятно пиши, в другом случае затери эту тему.


ﻕﺭﯛﻂﻣﻯ ﭳﯛﻭﻣﻕ
я ктулху...бойтесь меня
 
DoomCrossДата: Вторник, 26.02.2008, 18:14 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 34
Репутация: 3
Статус: Offline
Svake, Сам принцип понятен. Но я хочу не отрисовывать объекты через цикл, с помощью массива, а хочу, чтобы каждый объект сам себя рисовал. Но при использовании DXUT все как-то глючит... Заместь черного экрана (как это обычно бывает, если что-то не работает)))) появляется какой-то болотного цвета мигающий монитор... wacko
Короче, я думал так, что в конструкторе запустить функцию прорисовки, которая потом сама себя вызывает. Но и так тоже не выходит.
Даже не знаю, что еще можно попробовать...


Не мертво то, что в вечности живет.
Со смертью времени и смерть умрет.
--------------------------------------------
Visual C++ 2005, DirectX9.0 (November), Windows XP
 
SvakeДата: Вторник, 26.02.2008, 19:56 | Сообщение # 3
Лейтенант
Группа: Модераторы
Сообщений: 25
Репутация: 2
Статус: Offline
НЕ DXUT я не использую т.ч. не знаю даже чем помочь,
можно впринцыпи масивом не делать но от этого пострадает удобность, т.е. писать
Device.BeginScene;
obj.draw;
.......
device.endscene; но разницы я не вижу.


ﻕﺭﯛﻂﻣﻯ ﭳﯛﻭﻣﻕ
я ктулху...бойтесь меня
 
DoomCrossДата: Четверг, 28.02.2008, 15:43 | Сообщение # 4
Admin
Группа: Администраторы
Сообщений: 34
Репутация: 3
Статус: Offline
Svake, Ты не правильно понял. Я хочу сделать так, чтобы объект сам себя рисовал. Чтобы типа
Code

Device.BeginScene;  
obj.draw;  
.......  
device.endscene;

было внутри, например, функции Draw() самого объекта. И в конструкторе объекта запускаешь эту самую функцию, и зацикливаешь ее. Так по-моему, проще. Но возможно ли это реализовать?


Не мертво то, что в вечности живет.
Со смертью времени и смерть умрет.
--------------------------------------------
Visual C++ 2005, DirectX9.0 (November), Windows XP
 
SvakeДата: Четверг, 28.02.2008, 16:34 | Сообщение # 5
Лейтенант
Группа: Модераторы
Сообщений: 25
Репутация: 2
Статус: Offline
Quote
Device.BeginScene;
obj.draw;
.......
device.endscene;

а это разве не то что ты имеешь ввиду?


ﻕﺭﯛﻂﻣﻯ ﭳﯛﻭﻣﻕ
я ктулху...бойтесь меня
 
DoomCrossДата: Четверг, 28.02.2008, 16:44 | Сообщение # 6
Admin
Группа: Администраторы
Сообщений: 34
Репутация: 3
Статус: Offline
??????????
Короче, вот типа так:

Code

class AnimatedObject
{
public:

AnimatedObject() //Конструктор
{
     LoadObject()
     DrawObject()
}
LoadObject()
{
    ........ //Процедура загрузки меша, текстур и т.д. и т.п.
}
DrawObject()
{
    ........ //Прорцедура отрисовки с BeginScrene() и EndScene()
   DrawObject() //Типа зацикливаем отрисовку, но не знаю правильно ли будет так...
}

};

Тока не знаю, как это будет на Делфи...
Такова моя идея. Но не знаю реальна ли она, и можно ли ее реализовать.
Но в програме все будет просто:

Code

AnimatedObject("FILENAME", pd3dD3vice) //Как параметры в конструктор передаются только путь к файлу, и указатель на Device

А потом он сам себя рисует... Такова идея...


Не мертво то, что в вечности живет.
Со смертью времени и смерть умрет.
--------------------------------------------
Visual C++ 2005, DirectX9.0 (November), Windows XP
 
SvakeДата: Четверг, 28.02.2008, 16:54 | Сообщение # 7
Лейтенант
Группа: Модераторы
Сообщений: 25
Репутация: 2
Статус: Offline
Quote

DrawObject()
{
........ //Прорцедура отрисовки с BeginScrene() и EndScene()
DrawObject() //Типа зацикливаем отрисовку, но не знаю правильно ли будет так...
}

по моему это будет выполнятся бесконечно, и тем более зачем
Quote
{
........ //Прорцедура отрисовки с BeginScrene() и EndScene()
DrawObject() //Типа зацикливаем отрисовку, но не знаю правильно ли будет так...
}
вызывать повторно?


ﻕﺭﯛﻂﻣﻯ ﭳﯛﻭﻣﻕ
я ктулху...бойтесь меня
 
DoomCrossДата: Четверг, 28.02.2008, 16:57 | Сообщение # 8
Admin
Группа: Администраторы
Сообщений: 34
Репутация: 3
Статус: Offline
Ну, а как? Эта процедура, получается, как основная процедура отрисовки в главном приложении. Повторяется постоянно.

Не мертво то, что в вечности живет.
Со смертью времени и смерть умрет.
--------------------------------------------
Visual C++ 2005, DirectX9.0 (November), Windows XP
 
SvakeДата: Четверг, 28.02.2008, 17:02 | Сообщение # 9
Лейтенант
Группа: Модераторы
Сообщений: 25
Репутация: 2
Статус: Offline
я имел ввиду бесконечно т.е. в одном рендере, у тебя комп будет показывать 1фпс,
а тут пропиши
{
pd3device->BeginScrene();
// а тут пропиши рендер меша и матрицы
pd3device->EndScene()
}


ﻕﺭﯛﻂﻣﻯ ﭳﯛﻭﻣﻕ
я ктулху...бойтесь меня
 
  • Страница 1 из 1
  • 1
Поиск:


Doom†Cross Software ® 2025
Создать бесплатный сайт с uCoz