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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Буффер вершин в DirectX 3D 
:(
    Опции темы
DelphianOracle
Дата 20.2.2008, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Для создания буффера вершин куба я использую следуйщее:
Код

function TMainForm.PrepareVertices: HResult;
const
  Vertices: array[0..7] of TCustomVertex = (
    (x: -1; y:  1; z: -1; color: $000000FF),
    (x:  1; y:  1; z: -1; color: $000000FF),
    (x:  1; y: -1; z: -1; color: $000000FF),
    (x: -1; y: -1; z: -1; color: $000000FF),
    (x: -1; y:  1; z:  1; color: $000000FF),
    (x:  1; y:  1; z:  1; color: $000000FF),
    (x:  1; y: -1; z:  1; color: $000000FF),
    (x: -1; y: -1; z:  1; color: $000000FF)
  );
  Indexes: array[0..35] of WORD = (
     0,1,2,2,3,0,
     4,5,6,6,7,4,
     0,4,5,5,1,0,
     3,7,6,6,2,3,
     0,4,7,7,3,0,
     1,5,6,6,2,1
  );
var
  pVertices: pointer;
begin
  Result := FD3DDevice.CreateVertexBuffer(SizeOf(Vertices), 0,
    D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, FD3DVertexBuffer, NIL);
  if FAILED(Result) then EXIT;
  Result := FD3DVertexBuffer.Lock(0, SizeOf(Vertices),
    pVertices, 0);
  if FAILED(Result) then EXIT;
  try
    CopyMemory(pVertices, @Vertices, SizeOf(Vertices));
  finally
    FD3DVertexBuffer.Unlock;
  end;
  Result := FD3DDevice.CreateIndexBuffer(SizeOf(Indexes), D3DUSAGE_WRITEONLY,
    D3DFMT_INDEX16, D3DPOOL_MANAGED, FD3DIndexBuffer, NIL);
  if FAILED(Result) then EXIT;
  Result := FD3DIndexBuffer.Lock(0, SizeOf(Indexes), pVertices, 0);
  if FAILED(Result) then EXIT;
  try
    CopyMemory(pVertices, @Indexes, SizeOf(Indexes));
  finally
    FD3DIndexBuffer.Unlock;
  end;
end;

При прорисовке куб выводится, но как будто перестает работать z-буфер. В примере из книги буфер задавался так:
Код

Vertices: array[0..23] of TCustomVertex = (
    (x: -1; y:  1; z: -1; color: $000000FF),
    (x:  1; y:  1; z: -1; color: $000000FF),
    (x:  1; y: -1; z: -1; color: $000000FF),
    (x: -1; y: -1; z: -1; color: $000000FF),

    (x: -1; y:  1; z:  1; color: $00F00FF0),
    (x: -1; y:  1; z: -1; color: $00F00FF0),
    (x: -1; y: -1; z: -1; color: $00F00FF0),
    (x: -1; y: -1; z:  1; color: $00F00FF0),

    (x:  1; y:  1; z:  1; color: $0000FF00),
    (x: -1; y:  1; z:  1; color: $0000FF00),
    (x: -1; y: -1; z:  1; color: $0000FF00),
    (x:  1; y: -1; z:  1; color: $0000FF00),

    (x:  1; y:  1; z: -1; color: $000FF000),
    (x:  1; y:  1; z:  1; color: $000FF000),
    (x:  1; y: -1; z:  1; color: $000FF000),
    (x:  1; y: -1; z: -1; color: $000FF000),

    (x: -1; y:  1; z:  1; color: $00FF0000),
    (x:  1; y:  1; z:  1; color: $00FF0000),
    (x:  1; y:  1; z: -1; color: $00FF0000),
    (x: -1; y:  1; z: -1; color: $00FF0000),

    (x:  1; y: -1; z: -1; color: $00FFFFFF),
    (x:  1; y: -1; z:  1; color: $00FFFFFF),
    (x: -1; y: -1; z:  1; color: $00FFFFFF),
    (x: -1; y: -1; z: -1; color: $00FFFFFF)
  );
  
  Indexes: array[0..35] of WORD = (
     0,  1,  2,  2,  3,  0,
     4,  5,  6,  6,  7,  4,
     8,  9, 10, 10, 11,  8,
    12, 13, 14, 14, 15, 12,
    16, 17, 18, 18, 19, 16,
    20, 21, 22, 22, 23, 20
  );

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

Запрещено:

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

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

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

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


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

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


 




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


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

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