Показать сообщение отдельно
Старый 23.01.2008, 23:39   #1
BlackDragon
Проектировщик
 
Аватар для BlackDragon
 
Регистрация: 25.03.2007
Сообщений: 536
Написано 252 полезных сообщений
(для 715 пользователей)
Проблема с Masked

Вот код, в котором я пытаюсь сделать так, что бы черные участки были абсолютно прозрачны, но неполучается. Сколько не пытался, сам додуматься не смог, скажите, где у меня ошибка.

Код:
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()

MoveMouse 320,240
zoom#=1
lmp=CreateLight()
PositionEntity lmp,0,1000,0
;=====================================
;создание основной камеры
   .ccam
campiv = CreatePivot() 
 cam = CreateCamera(campiv)
CameraClsColor cam,0,128,255
PositionEntity campiv,0,10,-70
 TurnEntity campiv,0,0,0

pln=CreatePlane()
EntityColor pln,200,24,135

;=========================================
cubic_piv=CreatePivot()
ecub_scale_x=10
ecub_scale_y=10
ecub_scale_z=10
VAR_mashtab=10

;создание дополнительной камеры для рендера в текстуру
cam1=CreateCamera(cubic_piv)
camsphere=CreateSphere(8,cam1)
PositionEntity cam1,0,0,0

;создание кубика
cubik=CreateCube(cubic_piv)
PositionEntity cubik,0,ecub_scale_y,0
ScaleEntity cubik,ecub_scale_x-1,ecub_scale_y-1,ecub_scale_z-1

;==============================================
;создание текстуры, с флагом 4, чтоб места закрашенные черным были невидимы
tex_cub1=CreateTexture(ecub_scale_x*VAR_mashtab,ecub_scale_Y*VAR_mashtab,4)
ScaleTexture tex_cub1,1.28,1.28
;создание квадрата
 spr1 = CreateMesh(cubic_piv)
sf1 = CreateSurface(spr1)
	AddVertex sf1, -1, 1, 0, 0, 0
	AddVertex sf1, 1, 1, 0, 1, 0
	AddVertex sf1, -1, -1, 0, 0, 1
	AddVertex sf1, 1, -1, 0, 1, 1
	AddTriangle sf1, 0, 1, 2
	AddTriangle sf1, 3, 2, 1
	
	ScaleEntity spr1, ecub_scale_x,ecub_scale_y,1
	PositionEntity spr1,0,ecub_scale_y,-ecub_scale_z
;натягивание текстуры на квадрат 
	EntityTexture spr1,tex_cub1
;===========================================
;прячу квадрат, что бы он не загораживал кубик
HideEntity spr1

;установка дополнительной камеры под нужным ракурсом
PositionEntity cam1,0,ecub_scale_y,-ecub_scale_z-ecub_scale_x
RotateEntity cam1,0,0,0

;собственно рендер в текстуру
CameraViewport cam1,0,0,ecub_scale_x*VAR_mashtab,ecub_scale_y*VAR_mashtab
RenderWorld
	CopyRect 0,0,ecub_scale_x*VAR_mashtab,ecub_scale_y*VAR_mashtab,0,0,BackBuffer(),TextureBuffer(tex_cub1)
	ShowEntity spr1

Repeat

;================================================
;управление перемещением основной камеры
If KeyDown(42) MoveEntity  campiv,0,1,0
If KeyDown(46) MoveEntity campiv,0,-1,0

 If KeyDown(30) MoveEntity campiv,-1,0,0
If KeyDown(32) MoveEntity campiv,1,0,0

If KeyDown(31) MoveEntity campiv,0,0,-1
If KeyDown(17) MoveEntity campiv,0,0,1

mys = MouseYSpeed() 
mxs = MouseXSpeed() 

If Abs(EntityPitch(cam)+mys) < 75
TurnEntity cam, mys,0,0 
EndIf 
TurnEntity campiv,0,-mxs,0 

If KeyDown(2) CameraProjMode cam,1
If KeyDown(3) CameraProjMode cam,2

If KeyDown(4) zoom#=1
zoom#=zoom#+MouseZSpeed () *.01
CameraZoom cam,zoom#
;=============================================

 UpdateWorld
 RenderWorld
Flip
Until KeyHit(1)
End
(Offline)
 
Ответить с цитированием