Здравстуйте товарищи трудящиеся :lol:
B) Объявляется общий сбор, цель которого помощь в испровлении ошибок описанного ниже кода. :) теперь серьезно: Помогите с прогой пишу ее для тестирования тура, чтобы с разных видов смотреть и выявлять ошибки в туре но как видете ,если уже посмотрели, не очень . Описание: один игрок двигается, а камеры других игроков отоброжаются на экране (код проецирования позаимствован из сампла tex_render.bb) по типу как в играх RAINBOW SIX, как сделать чтобы не тормозило. Graphics3D 640,480,32,2 Global af$ af=LoadFont("arial cyr",18,True) SetFont af Global C_ind;номер активной камеры ;ставим объекты Dim Obj(10) Dim cam(10) Global C_Count=3 ;колво объектов For i=1 To c_count obj(i)=CreateCube() cam(i)=CreateCamera (obj(i)) PositionEntity obj(i),i*10,1,0 EntityColor obj(i),Rnd(255),Rnd(255),Rnd(255) PositionEntity cam(i),0,2,-15 Next ;---------------------------------------- ;нарисуем поле в клетачку :) grid_tex=CreateTexture( 16,16,8,2 ) ScaleTexture grid_tex,10,10 SetBuffer TextureBuffer( grid_tex ) ClsColor 255,255,255:Cls:ClsColor 0,0,0 Color 192,192,192:Rect 0,0,8,8:Rect 8,8,8,8 SetBuffer BackBuffer() plane=CreatePlane() EntityTexture plane,grid_tex ;-------------------------------------- c_ind=2 While Not KeyHit(1) ;устанавливаем номер активной камеры If KeyDown(59) c_ind=1 If KeyDown(60) c_ind=2 If KeyDown(61) c_ind=3 For i=1 To c_count;переключаем камеры If i=c_ind ShowEntity cam(c_ind) Else HideEntity cam(i) Next If KeyDown( 205 )=True Then TurnEntity obj(c_ind),0,-2,0 If KeyDown( 203 )=True Then TurnEntity obj(c_ind),0,2,0 If KeyDown( 208 )=True Then MoveEntity obj(c_ind),0,0,-0.5 If KeyDown( 200 )=True Then MoveEntity obj(c_ind),0,0,0.5 ScreenCamera c_ind,3,340,0 UpdateWorld RenderWorld Text 20,20,c_ind,True,True Text 320,400,"F1~F3 - переключение между объектами",True,True Text 320,430,"стрелки - движение",True,True Flip Wend End Function ScreenCamera(ind,plan_cam,xc,yc) ;Описание: ind -активная камера ; plan_cam- номер камеры которая ваводится о окне ; xc,yc -позиция окна ; texture=CreateImage( 640,480) ;UpdateWorld ;RenderWorld HideEntity cam(ind) ShowEntity cam(plan_cam) UpdateWorld RenderWorld CopyRect 0,0,640,480,0,0,0,ImageBuffer( texture ) ResizeImage texture ,180,120 Cls ShowEntity cam(ind) HideEntity cam(plan_cam) DrawImage texture,xc,yc Flip End Function |
ResizeImage texture ,180,120
это зло Сразу задай размер изображения для камеры через CameraViewport camera,x,y,width,height |
Ну если кортенько, то вот:
Код:
Graphics3D 640,480,32,2 :rolleyes: |
а разрулил то не плохо! :super:
|
мммда, а я хотел через cameraviewport сделать - нифига не получилось.
есть в блице один недостаток, нельзя определить порядок рендера камер, камеры рендерятся в порядке или их создания, или тогда, когда реендерится родительский объект камеры, который в свою очередь рендерится в своем порядке создания объектов... :unsure: 2 Imp Rulezzz! |
2Akima: Подход к решению вопроса ИМХО изначально неверный. См. код ниже.
2Imp: Проще надо быть, проще!.. Обрати внимание на изменение ФПС. B) Сори, комменты при копировании кода превратились в крякозябры и я их перебивал наскоро... Код:
;инициализация |
Согласен - но твой код более конкретный, я же надеюсь на использование кода в дальнейшем.
|
Часовой пояс GMT +4, время: 11:31. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot