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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2012, 10:04   #1
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию Загрузка текстуры DirectX+Delphi

Всем привет, в общем достаточно хорошо изучил Canvas, но для создания игр он слабоват. Встал выбор перед OpenGL и DirectX, выбор пал на DirectX. По немногу уже осваиваю и осмысливаю его функционал. Но тут встала проблема, когда пытаюсь загрузить текстуру с помощью D3DXCreateTextureFromFile При компиляции открывается вкладка Project1 и наводит курсор на begin (первая строчка). Если нажму Run еще раз, то выведет Аккес виолетион.
Код:
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Вот код загрузки текстуры:
Код:
var
  D3D,g_D3DObject: IDirect3D9;
  g_Device: IDirect3DDevice9;
  g_VB: IDirect3DVertexBuffer9;
  g_Texture: IDirect3DTexture9;

function TForm1.LoadTexture: HRESULT;
begin
 Result := D3DXCreateTextureFromFile(
    g_Device,
    'box.jpg', //Имя файла текстуры
    g_Texture  //Переменная интерфейса текстуры
  );
end;
Остальной код работает нормально, поэтому сюда его не стал писать.
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 29.06.2012, 13:23   #2
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

В общем разобрался с ошибкой, оказалось нехватало двух dll. Теперь нет ошибок, но почемуто текстура не накладывается на четырехугольник.
Код:
type TVertex = record
  x,y,z,rhw: single;
  tu,tv: single; //Текстурные координаты
end;

const
  FVF = D3DFVF_XYZRHW or D3DFVF_TEX1;

function TForm1.LoadVertices: HRESULT;
var
  Vertices: array [0..3] of TVertex;
  pVertices: Pointer;
begin
  //Vertex 0
  Vertices[0].x := 0; Vertices[0].y := 0; Vertices[0].z := 0; Vertices[0].rhw := 1;
  Vertices[0].tu := 0; Vertices[0].tv := 0;  //Левый верхний угол
  //Vertex 1
  Vertices[1].x := 512; Vertices[1].y := 0; Vertices[1].z := 0; Vertices[1].rhw := 1;
  Vertices[1].tu := 1; Vertices[1].tv := 0;  //Правый верхний угол
  //Vertex 2
  Vertices[2].x := 0; Vertices[2].y := 512; Vertices[2].z := 0; Vertices[2].rhw := 1;
  Vertices[2].tu := 0; Vertices[2].tv := 1;  //Левый нижний угол
  //Vertex 3
  Vertices[3].x := 512; Vertices[3].y := 512; Vertices[3].z := 0; Vertices[3].rhw := 1;
  Vertices[3].tu := 1; Vertices[3].tv := 1;  //Правый нижний угол

  Result := g_VB.Lock(0, sizeof(TVertex)*4, pVertices, 0);
  if FAILED(Result) then Exit;
  Move(Vertices[0], pVertices^, sizeof(TVertex)*4);
  g_VB.Unlock;
end;

function TForm1.LoadTexture: HRESULT;
begin
 Result := D3DXCreateTextureFromFile(
    g_Device,
    'b.jpg', //Имя файла текстуры
    g_Texture  //Переменная интерфейса текстуры
  );
end;

procedure TForm1.Timer1Timer(Sender: TObject);     ///// Таймер отрисовки сцены
begin
  LoadVertices;
  g_Device.Clear(0, nil, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER, $ffffffff, 1.0, 0);
  g_Device.BeginScene;
  g_Device.SetTexture(0, g_Texture);  //Здесь текстура устанавливается в нулевой texture stage
  g_Device.SetStreamSource(0, g_VB, 0, sizeof(TVertex));
  g_Device.SetFVF(FVF);
  g_Device.DrawPrimitive(
    D3DPT_TRIANGLESTRIP, 0, 2
  );
  g_Device.EndScene;
  g_Device.Present(nil, nil, 0, nil);
end;
В чем может быть проблема?
Каждый день узнаю новое...

Последний раз редактировалось Anton911; 29.06.2012 в 13:26.
Anton911 вне форума Ответить с цитированием
Старый 01.07.2012, 01:25   #3
roma20231
Пользователь
 
Регистрация: 03.05.2012
Сообщений: 11
По умолчанию

а как же индексы? (то что объединяет вершины)
roma20231 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка х файла directx MasterSporta Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 06.04.2012 23:31
Delphi GLScene - большие фоновые текстуры Vova777 Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 06.08.2011 12:59
Delphi + DirectX 10/11 Celestia Мультимедиа в Delphi 0 04.03.2011 11:11
DirectX. Загрузка 3d моделей из .3ds файла _-Re@l-_ Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 01.08.2010 15:57
picking directX(Delphi) Mell12345678 Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 04.06.2009 10:31