Показать сообщение отдельно
Старый 29.07.2011, 20:58   #174
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Имитация водной поверхности.

Сообщение от NitE Посмотреть сообщение
MouseZ это колесико мыши. Манипулировать им напрямую кроме как колесиком мыши никак нельзя, но тебя выручит переменная.
В смысле, палить знак изменения мышиного зед и соответствующим образом менять переменную?


Еще пак тупых вопросов по хорсу:

1. Как рисовать во фронтбуфер? Я хочу видеть процесс.

2. Почему тупой код работает, а код работающий в блице не работает.
Кстати я правильно цвет в ARGB перевожу или нет?
Function SimpleRaytracer()
For y=0 To 300;xGraphicsHeight()-1
For x=0 To 300;xGraphicsWidth()-1
xCameraPick camera,x,y
If xPickedEntity()>0 Then 
mesh=xPickedEntity()
xColor xEntityRed(mesh),xEntityGreen(mesh),xEntityBlue(mesh)
xLine x,y,x,y
Else 
xColor 0,0,0
xLine x,y,x,y
;mesh=xPickedEntity()
;Ecolor#=xEntityRed(mesh)*255^2+xEntityGreen(mesh)*255+xEntityBlue(mesh)
;ARGB$="FF"+Right$(Hex$(ecolor),6)
;xWritePixel x,y,ARGB$
;Else
;xWritePixel x,y,"FF000000"
EndIf
Next 
Next
xFlip

While(Not (xKeyHit(KEY_ESCAPE) Or xWinMessage("WM_CLOSE")))
Wend

End Function
Include "xors3d.bb"

Global pivot,camera,mxs#,mys#,light,test


xGraphics3D(640,480, 32,0, 0)

CreateWorld()
Function CreateWorld()
pivot=xCreatePivot()
camera = xCreateCamera(pivot)
xPositionEntity camera,0,0,-10
light=xCreateLight()
xPositionEntity light,200,200,200
ball=xCreateSphere()
xEntityPickMode ball,2,1,0

For i=0 To 20
ball2=xCopyEntity(ball)
xPositionEntity ball2,Rnd(-10,10),Rnd(-10,10),Rnd(-10,10)
xScaleEntity ball2,Rnd(0.4,2),Rnd(0.4,2),Rnd(0.4,2)
xEntityColor ball2,Rand(0,255),Rand(0,255),Rand(0,255)
xEntityPickMode ball2,2,1,0
Next

base=xCreateCube()
xEntityPickMode base,2,1,0
xScaleEntity base,10,0.1,10
xPositionEntity base,0,-10,0


test=xCreateCube()
xScaleEntity test,0.1,0.1,0.1
xEntityColor test,255,0,0

End Function


While(Not (xKeyHit(KEY_ESCAPE) Or xWinMessage("WM_CLOSE")))

If xMouseDown(1) Then xCameraPick camera,xMouseX(),xMouseY()
xPositionEntity test,xPickedX (),xPickedY (),xPickedZ ()
pitch#=xVectorPitch(xPickedNX (),xPickedNY (),xPickedNZ ())
yaw#=xVectorYaw(xPickedNX (),xPickedNY (),xPickedNZ ())
xRotateEntity test,pitch,yaw,0

xRenderWorld()
Control(0.2,1)

If xPickedEntity()>0 Then
mesh=xPickedEntity()
Ecolor#=xEntityRed(mesh)*255^2+xEntityGreen(mesh)* 255+xEntityBlue(mesh)
ARGB$="FF"+Right$(Hex$(ecolor),6)
xText 100,200,ARGB
EndIf

If xKeyDown(57) SimpleRaytracer()

xFlip()
Wend

End
Function SimpleRaytracer()
For y=0 To 300;xGraphicsHeight()-1
For x=0 To 300;xGraphicsWidth()-1
xCameraPick camera,x,y
If xPickedEntity()>0 Then
mesh=xPickedEntity()
xColor xEntityRed(mesh),xEntityGreen(mesh),xEntityBlue(me sh)
xLine x,y,x,y
Else
xColor 0,0,0
xLine x,y,x,y
;mesh=xPickedEntity()
;Ecolor#=xEntityRed(mesh)*255^2+xEntityGreen(mesh) *255+xEntityBlue(mesh)
;ARGB$="FF"+Right$(Hex$(ecolor),6)
;xWritePixel x,y,ARGB$
;Else
;xWritePixel x,y,"FFFF0000"
EndIf
Next
Next
xFlip

While(Not (xKeyHit(KEY_ESCAPE) Or xWinMessage("WM_CLOSE")))
Wend

End Function



Function control(speed#,mousesensitivity#)
If xKeyDown(key_1) Then xWireframe(True) Else xWireframe(False)
xText(10, 10, "FPS: " + xGetFPS())
xText(10,30,"Trisinview: "+xTrisRendered ())
mxs#=mxs#+(xMouseXSpeed()/5.0)
mys#=mys#+(xMouseYSpeed()/5.0)
xRotateEntity (camera,mousesensitivity#*mys#,-mousesensitivity#*mxs#,0)
xMoveMouse xGraphicsWidth()/2,xGraphicsHeight()/2
If xKeyDown(17) Or xKeyDown(200) xMoveEntity camera,0,0,speed#
If xKeyDown(31) Or xKeyDown(20 xMoveEntity camera,0,0,-speed#
If xKeyDown(30) Or xKeyDown(203) xMoveEntity camera,-speed#,0,0
If xKeyDown(32) Or xKeyDown(205) xMoveEntity camera,speed#,0,0
xPositionEntity pivot,xEntityX#(camera,1),xEntityY#(camera,1),xEnt ityZ#(camera,1)
xPositionEntity camera,0,0,0
End Function
(Offline)
 
Ответить с цитированием