Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> directx загрузка объекта из .x файла 
:(
    Опции темы
shtuceron
Дата 18.5.2008, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 17.2.2008

Репутация: нет
Всего: нет



Здравствуйте.
Начал недавно изучать directx в delphi дошел до момента импорта моделей с помощью функции d3dxloadmeshfromx, но к сожалению модель выглядит не объемной, хотя я использовал буфер глубины. Может быть я что то не понимаю? Спасибо за внимание.
PM MAIL WWW   Вверх
ILyAHA
Дата 18.5.2008, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гламурный хакер
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 30.3.2007
Где: Ярославская обл. г.Рыбинск

Репутация: нет
Всего: 3



Код покажи....
--------------------
<sсriрt>alert('xss')</sсriрt>
PM MAIL   Вверх
shtuceron
Дата 18.5.2008, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 17.2.2008

Репутация: нет
Всего: нет



Код

type
  pd3dmaterial9array = ^td3dmaterial9array;
  td3dmaterial9array = array[0..maxint div sizeof(td3dmaterial9)-1]
    of td3dmaterial9;
  pidirect3dtexture9array = ^idirect3dtexture9array;
  idirect3dtexture9array = array[0..maxint div sizeof(idirect3dtexture9)-1]
    of idirect3dtexture9;

  TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    procedure FormCreate(Sender: TObject);
    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
  private
    { Private declarations }
    fd3d: idirect3d9;
    fd3ddevice: idirect3ddevice9;
    nummaterial: integer;
    meshmaterial: pd3dmaterial9array;
    meshtexture: pidirect3dtexture9array;
    mesh: id3dxmesh;
    function init: hresult;
    function clear: hresult;
    function camera: hresult;
    function picture: hresult;
    function drow: hresult;
  public
    { Public declarations }
  end;

  TCustomVertex = packed record
    x, y, z: Single;
    color: DWORD;
  end;

const
  fvf = d3dfvf_xyz or d3dfvf_diffuse;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function tform1.init: hresult;
var
  d3dparam: td3dpresentparameters;
  displaymode: td3ddisplaymode;
begin
  fd3d:= direct3dcreate9(d3d_sdk_version);
  fd3d.GetAdapterDisplayMode(d3dadapter_default, displaymode);
  zeromemory(@d3dparam, sizeof(d3dparam));
  d3dparam.Windowed:= true;
  d3dparam.SwapEffect:= d3dswapeffect_discard;
  d3dparam.BackBufferFormat:= displaymode.Format;
  d3dparam.EnableAutoDepthStencil:= true;
  d3dparam.AutoDepthStencilFormat:= d3dfmt_d16;
  
  fd3d.CreateDevice(d3dadapter_default, d3ddevtype_hal, handle,
    d3dcreate_software_vertexprocessing, @d3dparam, fd3ddevice);

  fd3ddevice.SetRenderState(d3drs_zenable, d3dzb_true);
  fd3ddevice.SetRenderState(d3drs_ambient, $ffffffff);
end;

function tform1.clear: hresult;
begin
  fd3ddevice.Clear(0, nil, d3dclear_target or d3dclear_zbuffer,
    d3dcolor_xrgb(0, $ff, $ff), 1, 0);
end;


function tform1.camera: hresult;
var
  view_eye, view_camera, view_mir_coord: td3dvector;
  matview, matproj: td3dmatrix;
begin
  view_eye:= d3dxvector3(0, 0, -5);
  view_camera:= d3dxvector3(0, 0, 0);
  view_mir_coord:= d3dxvector3(0, 1, 0);
  d3dxmatrixlookatlh(matview, view_eye, view_camera, view_mir_coord);
  fd3ddevice.SetTransform(d3dts_view, matview);
  d3dxmatrixperspectivefovlh(matproj, 2, 2, 1, 50);
  fd3ddevice.SetTransform(d3dts_projection, matproj);
end;

function tform1.picture: hresult;
type
  pd3dmaterialarray = ^td3dxmaterialarray;
  td3dxmaterialarray = array[0..maxint div sizeof(td3dxmaterial)-1]
    of td3dxmaterial;
const
  path = 'box.x';
var
  materialbuffer: id3dxbuffer;
  d3dxmaterials: pd3dmaterialarray;
  i: integer;
begin
  d3dxloadmeshfromx(path, d3dxmesh_systemmem, fd3ddevice, nil, @materialbuffer,
    nil, @nummaterial, mesh);
  d3dxmaterials:= materialbuffer.GetBufferPointer;
  getmem(meshmaterial, sizeof(td3dmaterial9)*nummaterial);
  getmem(meshtexture, sizeof(idirect3dtexture9)*nummaterial);
  zeromemory(meshtexture, sizeof(idirect3dtexture9)*nummaterial);
  i:=0;
  while (i<nummaterial) do
  begin
    meshmaterial[i]:= d3dxmaterials[i].MatD3D;
    meshmaterial[i].Ambient:= meshmaterial[i].Diffuse;
    meshtexture[i]:= nil;
    inc(i);
  end;
end;

function tform1.drow: hresult;
var
  i: integer;
begin
  clear;
  fd3ddevice.BeginScene;
  camera;
  i:=0;
  while (i<nummaterial) do
  begin
    fd3ddevice.SetMaterial(meshmaterial[i]);
    fd3ddevice.SetTexture(0, meshtexture[i]);
    mesh.DrawSubset(i);
    inc(i);
  end;
  fd3ddevice.EndScene;
  fd3ddevice.Present(nil, nil, 0, nil);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  init;
end;

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
  var Done: Boolean);
begin
  picture;
  drow;
  done:= false;
end;

end.


Будут замечания пишите.

Это сообщение отредактировал(а) shtuceron - 18.5.2008, 19:02
PM MAIL WWW   Вверх
shtuceron
Дата 20.5.2008, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 17.2.2008

Репутация: нет
Всего: нет



Товарищи, хоть какие нибудь предложения!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0731 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.