Тема: RotateTexture
Показать сообщение отдельно
Старый 22.10.2011, 20:38   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: RotateTexture

Function RotateTexture3(Tex%,x#,y#,ang#)
	RotateTexture Tex,ang
	Local u#=x-x*Cos(ang)+y*Sin(ang)
	Local v#=y-x*Sin(ang)-y*Cos(ang)
	PositionTexture Tex,-u,-v
End Function
демо
Graphics3D 800,600,32
SetBuffer BackBuffer()

Global Cube=CreateCube()
Global Camera=CreateCamera()
PositionEntity Camera,0,0,-4

Global light=CreateLight()

Global Texture%=0
Global XRt#,YRt#

While Not KeyHit(1)
	If KeyHit(57)
		If Texture
			FreeTexture Texture
		EndIf
		XRt=Rnd(0,1)
		YRt=Rnd(0,1)
		Texture=GenTex(XRt,YRt)
		EntityTexture Cube,Texture
	EndIf
	If Texture
		RotateTexture3(Texture,XRt,YRt,MilliSecs()*0.001*5)
	EndIf
	RenderWorld()
	Flip
Wend
End

Function RotateTexture3(Tex%,x#,y#,ang#)
	RotateTexture Tex,ang
	Local u#=x-x*Cos(ang)+y*Sin(ang)
	Local v#=y-x*Sin(ang)-y*Cos(ang)
	PositionTexture Tex,-u,-v
End Function

Function GenTex%(xp#,yp#)
	Local Tex=CreateTexture(128,128)
	Local CurBuf%=GraphicsBuffer()
	Local xpd%=xp*128
	Local ypd%=yp*128
	SetBuffer TextureBuffer(Tex)
		Color 255,255,255
		Rect 0,0,TextureWidth(Tex),TextureHeight(Tex)
		Color 0,0,0
		Line xpd,0,xpd,TextureHeight(Tex)-1
		Line 0,ypd,TextureWidth(Tex)-1,ypd
		Color 255,0,0
		Oval xpd-5,ypd-5,11,11
	SetBuffer CurBuf
	Return Tex
End Function
Управление - пробел.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (26.10.2011)