Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка в рендере ландшафта


Ford ©   (2006-09-29 20:20:00) 

Здраствуйте.

Помогите выловить баг, програмир. на Delphi, апи DX.

Имееться класс ландшафта, ландщафт 16 на 16,  256 вершиных буферов,  
идёт цикл рендера каждого буфера,  доходя до 253 буфера возникает исключенние
EAcessVialotion, оставшившиеся 3 буфера не рендериться даже если рендерить 253, 254, 255 буфер
вне цикла всё ровно возникает ошибка, хотя данные в них правильнные, проверил лично.
Вне класса  (процедурно) ландшафт рендериться без ошибок все 256 буферов рисуються.
Ещё одно ошибка может вылезти, может не вылезти

В чём может быть проблемма, весь аналогичный код вне класса идеальнно работает, в классе возникает ошибка.
Предполагаю что дело в неправильном использованние памяти, но не понятно как исправлять, кто что может подсказать ???

ps
pliz не удалять, оченб срочно надо найти решенние данной проблемы


Ford   (2006-10-02 08:27:00) [1]

я через octree, и тоже думаю пора сокращать vb


XProger   (2006-09-30 14:58:00) [2]

Cash, с каких пор переключение буферов стало накладной операцией?
Верно, такие самураи как ты вообще не кодят ;)


Cash   (2006-09-30 14:43:00) [3]

256 VB - этож какое падение производительности!!!
Они наверняк еще в управляемом пуле создаются.
Это же ваще... нет, так самураи не кодят! :)
Хуч ба объяснил, зачем столько...


@!!ex   (2006-09-30 12:43:00) [4]

Может просто для каждой точки поверхности свой ВБ? :)


Cash   (2006-09-30 12:26:00) [5]

256 VB - это монстер! За что так бедный девайс нагружать???
Э-э-э-э, а меши в эти 256 входят? Если нет, то - Монстер!


@!!ex   (2006-09-30 10:08:00) [6]


> Ford ©   (29.09.06 23:26) [4]
> все тема закрыта, неправильно подсчитывал кол - во вершин
> из за этого и баг лез.


Вот поэтому я и говорил, что нужен код. :)


Ford   (2006-09-29 23:26:00) [7]

все тема закрыта, неправильно подсчитывал кол - во вершин из за этого и баг лез.


Ford   (2006-09-29 21:35:00) [8]

рендер, ни чем особо не отличаеться, всё верно работает.
------------------------

 self.Scene.SceneCore.dxDevice.SetFVF(TDXVertexTerrainFVF);
 self.Scene.SceneCore.dxDevice.SetIndices(FIndexBuffer.AsBuffer);

 for i:= 0 to High(FVertexBuffers)  do
 begin

   self.Scene.SceneCore.dxDevice.SetStreamSource(0, FVertexBuffers[i].ASBuffer, 0, FVertexBuffers[i].SizePerVertex);

   self.Scene.SceneCore.dxDevice.DrawIndexedPrimitive(D3DPT_TRIANGLESTRIP,
     self.RenderInfo.InfoFromIndexBuffer.BaseVertexIndex,
     self.RenderInfo.InfoFromIndexBuffer.MinIndex,
     self.RenderInfo.InfoFromIndexBuffer.NumVertices,
     self.RenderInfo.InfoFromIndexBuffer.StartIndex,
     self.RenderInfo.InfoFromIndexBuffer.PrimitiveCount
   );

 end;
-------------------------

в этом цикле при подходе к 253-255 буферам, происходит ошибка, причём данные в них есть, они верны, если же использовать вне класса и они рендериться, что за фигня хз, если какая нибудь разница в расположенния данных в памяти между ООП и процедурного.


RzCoDer   (2006-09-29 21:17:00) [9]


> Типа тут все экстрасенсы?

а что, разве нет? ;)


@!!ex   (2006-09-29 20:55:00) [10]

Ну ты крут...
ТАКОЕ и без примера?
Типа тут все экстрасенсы?


Наверх

Титульная страница Поиск, карта сайта Написать письмо