Проблема с ландшафтом

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Stimorol
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 22.02.2007 (Чт) 21:22

Проблема с ландшафтом

Сообщение Stimorol » 25.02.2007 (Вс) 16:22

Люди хелп. Сделал значит все как здесь писалось о ландшафтах. Пашет но не совсем, пожалуйста если не сложно кто-нибудь скачайте архив и скажите что там не так а то я с ума сойду! :?
У вас нет доступа для просмотра вложений в этом сообщении.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 25.02.2007 (Вс) 19:35

Stimorol
1. Ландшафт - криво построеный! Ну как сказать. Как ты будешь его оптимизировать придумал?
2. Проекция кривая. Поставь
D3DXMatrixPerspectiveFovLH matProj, Pi/3,1,30,100000
Пока всё.
#define ROFL 0xDDDD

Stimorol
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 22.02.2007 (Чт) 21:22

Сообщение Stimorol » 26.02.2007 (Пн) 10:48

А можеш пожалуйста сказать где его кривость, а то я никак не могу найти где в коде неправильно?

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 26.02.2007 (Пн) 13:31

НЕ возможно трианглстрипом за раз нарисовать весь ландшафт
если надо за раз то используй триангл лист
Init:
For z = 1 To SizeY - 1
For x = 1 To SizeX - 1
iBuf(i) = (z - 1) * SizeX + (x - 1): i = i + 1
iBuf(i) = (z - 0) * SizeX + (x - 1): i = i + 1
iBuf(i) = (z - 1) * SizeX + (x - 0): i = i + 1
iBuf(i) = (z - 1) * SizeX + (x - 0): i = i + 1
iBuf(i) = (z - 0) * SizeX + (x - 1): i = i + 1
iBuf(i) = (z - 0) * SizeX + (x - 0): i = i + 1
Next x

Next z
render:
d3dDev.DrawIndexedPrimitiveUP D3DPT_TRIANGLELIST, 0&, m_NumVertices, m_NumIndices / 3, iBuf(0&), D3DFMT_INDEX32, vBuf(0&), SizeOfVertex

если же хочется рисовать стрипом то тогда рисуем по 1 линии за проход
Init:
ReDim iBuf((SizeX - 1) * 2 + 1) As Long
i = 0
For x = 0& To SizeX - 1
iBuf(x * 2&) = x
iBuf(x * 2& + 1&) = SizeX + x
Next x
render:
For i = 0 To SizeY - 2
d3dDev.DrawIndexedPrimitiveUP D3DPT_TRIANGLESTRIP, 0&, SizeX * 2, SizeX * 2 - 2, iBuf(0&), D3DFMT_INDEX32, vBuf(SizeX * i), SizeOfVertex
Next i

Stimorol
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 22.02.2007 (Чт) 21:22

Сообщение Stimorol » 26.02.2007 (Пн) 20:36

Спасибо, сделал как ты написал, работает как трактор!

:D

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 27.02.2007 (Вт) 5:43

Stimorol
Если рисуешь по рядам, как сказал Stimorol можно сделать отсечение, и ландшафт будет вообще летать! :D
#define ROFL 0xDDDD

Ktulhu
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 14.07.2007 (Сб) 14:03
Откуда: Киев, Р'льех

Сообщение Ktulhu » 26.07.2007 (Чт) 1:07

DirectXManiac писал(а):Stimorol
Если рисуешь по рядам, как сказал Stimorol можно сделать отсечение, и ландшафт будет вообще летать! :D


А можно подробнее, по какому принципу эти полоски отсекать?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 26.07.2007 (Чт) 9:30



Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList  
cron