2 ways to try it, key '2' and key '3':
Code: Select all
InitEngine3D(#PB_Engine3D_NoLog,#PB_Compiler_Home+"Compilers\Engine3d.dll"):InitSprite():InitKeyboard():InitMouse()
OpenWindow(0,0,0,1280,720,"Esc to exit",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,WindowWidth(0),WindowHeight(0),0,0,0)
CreateCamera(0,0,0,100,100):MoveCamera(0,0,2,11):CameraBackColor(0,$446666)
CreateLight(0,$ffffff,10,10,0)
CreateShaderMaterial(0,#PB_Material_ColorShader)
SetMaterialColor(0,#PB_Material_AmbientColor|#PB_Material_DiffuseColor,$4455ff):MaterialShininess(0,64,$ffffff)
MaterialCullingMode(0,#PB_Material_NoCulling)
lgs.f=1.0 ; longitud de sección
r.f=0.2 ; radio de sección
ni.a=6; <- número de segmentos en base
nj.a=3; <- número de segmentos en altura
ns.a=nj; <- numero de secciones (juntas)
Dim arrayvertices.MeshVertex(0)
Dim arraycaras.MeshFace(0)
Macro original()
CreateCylinder(0,r,lgs*nj,ni,nj,0)
nvertices.i=MeshVertexCount(0,0); <- para el numero de vertices
indicesvertices.i=MeshIndexCount(0,0); <- para el numero de caras
GetMeshData(0,0,arrayvertices(),#PB_Mesh_Vertex|#PB_Mesh_UVCoordinate|#PB_Mesh_Normal|#PB_Mesh_Color|#PB_Mesh_Tangent,0,nvertices-1)
GetMeshData(0,0,arraycaras(),#PB_Mesh_Face,0,indicesvertices-1)
CreateEntity(0,MeshID(0),MaterialID(0))
EndMacro
Macro remake()
CreateMesh(0,#PB_Mesh_TriangleStrip,#PB_Mesh_Static)
SetMeshData(0,0,arrayvertices(),#PB_Mesh_Vertex|#PB_Mesh_UVCoordinate|#PB_Mesh_Normal|#PB_Mesh_Color|#PB_Mesh_Tangent,0,nvertices-1)
SetMeshData(0,0,arraycaras(),#PB_Mesh_Face,0,indicesvertices-1)
CreateEntity(0,MeshID(0),MaterialID(0))
EndMacro
Macro remake2()
CreateMesh(0,#PB_Mesh_TriangleStrip,#PB_Mesh_Static)
For i.i=0 To nvertices-1
MeshVertex(arrayvertices(i)\x,arrayvertices(i)\y,arrayvertices(i)\z,arrayvertices(i)\u,arrayvertices(i)\v,arrayvertices(i)\Color,arrayvertices(i)\NormalX,arrayvertices(i)\NormalY,arrayvertices(i)\NormalZ)
MeshVertexTangent(arrayvertices(i)\TangentX,arrayvertices(i)\TangentY,arrayvertices(i)\TangentZ)
MeshIndex(i)
Next
FinishMesh(1)
CreateEntity(0,MeshID(0),MaterialID(0))
EndMacro
original()
Repeat:While WindowEvent():Wend
ExamineKeyboard():ExamineMouse()
If KeyboardReleased(#PB_Key_1)
FreeEntity(0)
FreeMesh(0)
original()
ElseIf KeyboardReleased(#PB_Key_2)
FreeEntity(0)
FreeMesh(0)
remake()
ElseIf KeyboardReleased(#PB_Key_3)
FreeEntity(0)
FreeMesh(0)
remake2()
ElseIf KeyboardReleased(#PB_Key_F12):alambres.a!1
If alambres:MaterialShadingMode(0,#PB_Material_Wireframe)
Else:MaterialShadingMode(0,#PB_Material_Solid)
EndIf
EndIf
RenderWorld()
FlipBuffers():Delay(11)
Until KeyboardPushed(#PB_Key_Escape)