纯go语言ui框架之高级组件:第85个组件3D地球
纯go语言实现flutter风格桌面GUI框架:ui
1、支持windows 、linux、unix、masOS、ios、android等操作系统
2、代码风格和flutter基本差不多,如果会flutter和go语言无缝切换上手,如果熟悉go语言很快上手。
3、框架有上100个组件,足以支持绝大部复杂应用
4、支持
1)手动刷新ui
2)定时更新ui
3)指定时间范围实时刷新ui
4)手动开启实时刷新ui和手动关闭实时刷新ui
5)全局实时刷新
————————————————
1、纯go语言ui框架第85个组件:3D地球
这个是可以旋转的3D地球
完整代码
packagemainimport("fmt""image"_"image/jpeg"_"image/png""os""render/layout""render/widget/material""ui""echart/chart3d""echart/glchart")funcmain(){globe:=glchart.NewGlobe3DGL(-1,-1)globe.SetLightDir(chart3d.Vec3{X:0.7,Y:0.3,Z:0.5})globe.Camera.SetZoomRange(0.05,500)// 最小放大1.5倍,最大缩小100倍// 加载地球纹理 earth.jpgifimg,err:=loadTexture("earth.jpg");err==nil{globe.SetTexture(img)fmt.Println("已加载地球纹理: earth.jpg")}elseifimg,err:=loadTexture("earth.png");err==nil{globe.SetTexture(img)fmt.Println("已加载地球纹理: earth.png")}else{fmt.Println("未找到 earth.jpg/earth.png,使用程序生成纹理")}// 加载星空背景 starfield.jpgifimg,err:=loadTexture("starfield.jpg");err==nil{globe.SetBackground(img)fmt.Println("已加载星空背景: starfield.jpg")}elseifimg,err:=loadTexture("starfield.png");err==nil{globe.SetBackground(img)fmt.Println("已加载星空背景: starfield.png")}else{fmt.Println("未找到 starfield.jpg/starfield.png,无背景")}fmt.Println("GL 3D 地球 — GPU 硬件加速渲染(拖拽旋转,滚轮缩放)")app:=ui.NewApp("3D 地球",700,700)app.SetRoot(ui.WidgetFunc(func(gtx layout.Context,th*material.Theme)layout.Dimensions{returnglobe.Layout(gtx,th)}))app.Run()}// loadTexture 加载纹理图片funcloadTexture(pathstring)(image.Image,error){f,err:=os.Open(path)iferr!=nil{returnnil,err}deferf.Close()img,_,err:=image.Decode(f)returnimg,err}效果:
