Показать сообщение отдельно
Старый 07.09.2007, 16:24   #59
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Re: Отражения в воде Что есчё за SetCubeFace?

Я думаю, SetCubeFace гафно ибо там КУЧА лишних рендеров... а это никому не надо...
Блин, ну я же уже говорил, что можно рендерить за цикл только одну сторону! Для тех кто не понимает - вот:

Global water_side

Function RenderWater()

CameraProjMode camera,0
CameraProjMode WaterCamera,1

PositionEntity WaterCamera,EntityX(player),EntityY(water),EntityZ(player)

;Left view 
If water_side = 0 
   SetCubeFace WaterMapTexture,0
   RotateEntity WaterCamera,0,90,0
   RenderWorld
   CopyRect 0,0,WaterMapSize,WaterMapSize,0,0,BackBuffer(),TextureBuffer(WaterMapTexture)
Endif
;forward view
If water_side = 1
   SetCubeFace WaterMapTexture,1
   RotateEntity WaterCamera,0,0,0
   RenderWorld
   CopyRect 0,0,WaterMapSize,WaterMapSize,0,0,BackBuffer(),TextureBuffer(WaterMapTexture)
Endif
;right view 
If water_side = 2
   SetCubeFace WaterMapTexture,2
   RotateEntity WaterCamera,0,-90,0
   RenderWorld
   CopyRect 0,0,WaterMapSize,WaterMapSize,0,0,BackBuffer(),TextureBuffer(WaterMapTexture)
Endif
;backward view
If water_side = 3 
   SetCubeFace WaterMapTexture,3
   RotateEntity WaterCamera,0,180,0
   RenderWorld
   CopyRect 0,0,WaterMapSize,WaterMapSize,0,0,BackBuffer(),TextureBuffer(WaterMapTexture)
Endif
;up view
If water_side = 0 
   SetCubeFace WaterMapTexture,4
   RotateEntity WaterCamera,-90,0,0
   RenderWorld
   CopyRect 0,0,WaterMapSize,WaterMapSize,0,0,BackBuffer(),TextureBuffer(WaterMapTexture)
Endif

water_side = water_side + 1
If water_side > 4 
   water_side = 0
EndIf

CameraProjMode WaterCamera,0
CameraProjMode camera,1

End Function
Причем, отражение такое же, но в 6 раз быстрее.

Но искажения действительно есть. Что является существенным недостатком.
(Offline)
 
Ответить с цитированием