Троллота
Регистрация: 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 раз быстрее.
Но искажения действительно есть. Что является существенным недостатком.
|