func main() { ret := glfw.Init() print(ret) ret = glfw.OpenWindow(300, 300, 0, 0, 0, 0, 0, 0, glfw.WINDOW) print(ret) if gl.Init() != 0 { panic("glew error") } running := true for running { gl.Begin(gl.TRIANGLES) gl.Vertex3f(0, 0, 0) gl.Vertex3f(0, 1, 0) gl.Vertex3f(1, 1, 0) gl.End() glfw.SwapBuffers() running = glfw.GetKey(glfw.KEY_ESC) == 0 && glfw.GetWindowParam(glfw.OPENED) != 0 } }
func main() { //ABSPTest() //return glfw.Init(800, 600) InitPhysics() world := new(World) world.Init() world.GameObjects = new(list.List) player := MakeMan(Vec3{10, 20, 10}) world.Add(player) world.Add(ropetest(Vec3{0, 40, 0}, 4, 4)) world.Add(treeThing(Vec3{20, 20, 20}, 3)) world.Add(MakePlayer(Vec3{-20, 20, 0}).Body) world.Add(MakePlayer(Vec3{-20, 50, 0}).Body) world.Add(MakePlayer(Vec3{-20, 70, 0}).Body) world.Add(MakePlayer(Vec3{-20, 90, 0}).Body) world.Add(MakePlayer(Vec3{-20, 110, 0}).Body) /*for i := 0; i < 100; i++ { world.Add(SetPlayerAnimation(MakePlayer(Vec3{float32(int(i%10))*50,0,float32(i*2) - 200})).Body) }*/ world.Add(NewGameObj(Vec3{0, -20, 0}, Vec3{10000, 10, 10000}, Vec3{0, 0.5, 0.1}, float32(math.Inf(1)), 10, nil)) //world.Add(SetPlayerAnimation(MakePlayer(Vec3{-20,120,0})).Body) qtn := new(ABSPNode) qtn.Root = qtn //qtn.Position = Vec3{-10000,-10000,-10000} //qtn.Size = Vec3{20000,20000,20000} for i := world.GameObjects.Front(); i != nil; i = i.Next() { gobj := i.Value.(*GameObj) all := gobj.GetSubs() for i := 0; i < len(all); i++ { qtn.Insert(all[i]) } } world.GameObjectTree = qtn fmt.Println("Total:", len(qtn.Data)) qtn.Divide() cols := 0 qtn.cd(func(obj1, obj2 SPData) { cols += 1 }) fmt.Println(cols) //qtn.Traverse(0) //return gl.Init() vs := gl.CreateShader(gl.VERTEX_SHADER) vs.Source( LoadFileToString("s1.vert")) vs.Compile() fs := gl.CreateShader(gl.FRAGMENT_SHADER) fs.Source(LoadFileToString("s1.frag")) fs.Compile() pg := gl.CreateProgram() pg.AttachShader(vs) pg.AttachShader(fs) pg.Link() pg.Validate() pg.Use() fmt.Println("**Shader log**") fmt.Println(fs.GetInfoLog()) fmt.Println(vs.GetInfoLog()) fmt.Println(pg.GetInfoLog()) fmt.Println("******END*****") gl.ClearColor(0.5, 0.5, 1, 0) gl.Enable(gl.DEPTH_TEST) gl.Enable(gl.BLEND) gl.Enable(gl.POLYGON_SMOOTH) gl.Hint(gl.POLYGON_SMOOTH_HINT, gl.NICEST) var t float64 t = float64(time.Nanoseconds()) / 1000000000 cam1 := Camera{player, 100, Vec3{0, 0, 0}} glfw.AddListener(func(m glfw.MouseMoveEvent) { cam1.Angle.X = float32(m.X-400) / 400 * 3.14 * 2 cam1.Angle.Y = float32(m.Y-300) / 300 * 3.14 * 2 //player.Rotation = Vec3{cam1.Angle.X,cam1.Angle.Y,0} }) glfw.AddListener(func(mw glfw.MouseWheelEvent) { cam1.Distance = 100 + float32(mw.Pos*mw.Pos*mw.Pos) }) world.CompilePhysicsObjects() for it := 0; it < 10000; it += 1 { cam1.Setup() dt := float32(0.005) t = float64(float64(time.Nanoseconds()) / 1000000000) UpdatePositions(world.PhysicsObjects, dt) UpdateModelStates(world.PhysicsObjects) UpdateCollisions(world.GameObjectTree, dt) UpdateModelStates(world.PhysicsObjects) gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) DrawWorld(world.GameObjects, dt, pg) glfw.SwapBuffers() pt := float64(float64(time.Nanoseconds()) / 1000000000) sleeptime := (float64(dt) - (pt - t)) * 10e8 fmt.Println("Sleep for:", sleeptime) time.Sleep(int64(sleeptime)) } }