Показать сообщение отдельно
Старый 27.08.2012, 22:36   #35
burovalex
Разработчик
 
Аватар для burovalex
 
Регистрация: 04.04.2012
Сообщений: 468
Написано 37 полезных сообщений
(для 60 пользователей)
Ответ: Советы по оптимизации

Начал пробывать LOD, получается не плохо. Правда идеально с билборда в меш не перейдешь, но вроде терпимо. Правда меня беспокоит не закончатся ли ресурсы проца?
Если не сложно, разберитесь немного в коде, все ли я нормально делаю
Так я создаю траву, она у меня динамически ростет
	grass\entity=xCreatePivot()
	grass\entityHI=xCopyEntity(grassMesh1hi,grass\entity) : xEntityPickMode grass\entityHI,2 : xHideEntity grass\entityHI
	grass\entityNR=xCopyEntity(grassMesh1nr,grass\entity) : xEntityPickMode grass\entityNR,2
	grass\entityLO=xCopyEntity(grassMesh1lo,grass\entity) : xEntityPickMode grass\entityLO,2 : xHideEntity grass\entityLO
	grass\LODlevel=3
	grass\class=class
	xEntityAutoFade grass\entity,grassAutoFadeDistance,grassAutoFadeDistance
	xPositionEntity grass\entity,x,y,z
	xTurnEntity grass\entity,0,Rand(360),0
	xScaleEntity grass\entity,0,0,0
	grass\scaleMax=Rnd(0.7,1.2)
	grass\gmode=2
так я проверяю траву
For i=1 To Ceil(grassCount/32.)
	grass.grass=First grass
	GrassLOD(grass.grass)
	Insert grass After Last grass
	EndIf 
Next

Function GrassLOD(grass.grass)
If grass\LODLevel=3 Then
	dist#=xEntityDistance(camera,grass\entity)
	If dist<grassLODDistHN And grass\gmode<>3 Then xHideEntity(grass\entityNR) : xShowEntity(grass\entityHI) : grass\gmode=3 : changed=True
	If dist>grassLODDistLN And grass\gmode<>1 Then xHideEntity(grass\entityNR) : xShowEntity(grass\entityLO) : grass\gmode=1 : changed=True
	If dist>grassLODDistHN And dist<grassLODDistLN And grass\gmode<>2 Then xHideEntity(grass\entityHI) : xHideEntity(grass\entityLO) : xShowEntity(grass\entityNR) : grass\gmode=2
EndIf 
End Function
Может еще чтото посоветуете по оптимизации?!
__________________
(Offline)
 
Ответить с цитированием