func NewWindowedWindow(title string, width, height int) Window { // FOR GLFW event handling runtime.LockOSThread() windowSDL, err := sdl.CreateWindow(title, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, width, height, sdl.WINDOW_OPENGL) if err != nil { panic(err) } if windowSDL == nil { panic(sdl.GetError()) } context, err := sdl.GL_CreateContext(windowSDL) sdl.GL_MakeCurrent(windowSDL, context) if err != nil { panic("Error loading window: " + err.Error()) } w := Window{title: title, Width: width, Height: height, full: false, windowSDL: windowSDL, contextSDL: context, running: false} w.init() var current sdl.DisplayMode if err := sdl.GetCurrentDisplayMode(0, ¤t); err != nil { fmt.Println("COuld not get display mode: " + err.Error()) } fmt.Printf("Display #%d: current display mode is %dx%dpx @ %dhz. \n", 0, current.W, current.H, current.RefreshRate) return w }
func main() { var ( err error window *sdl.Window context sdl.GLContext ) if err = sdl.Init(sdl.INIT_EVERYTHING); err != nil { panic(err) } defer sdl.Quit() sdl.GL_SetAttribute(sdl.GL_CONTEXT_PROFILE_MASK, sdl.GL_CONTEXT_PROFILE_COMPATIBILITY) window, err = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, winWidth, winHeight, sdl.WINDOW_OPENGL) if err != nil { panic(err) } defer window.Destroy() context, err = sdl.GL_CreateContext(window) if err != nil { panic(err) } defer sdl.GL_DeleteContext(context) if err = sdl.GL_MakeCurrent(window, context); err != nil { panic(err) } if err = gl.Init(); err != nil { panic(err) } sdl.GL_SetSwapInterval(1) printGLInfo() setupGL() windowLoop(window) }
func main() { var ( err error window *sdl.Window context sdl.GLContext ) if err = sdl.Init(sdl.INIT_EVERYTHING); err != nil { panic(err) } defer sdl.Quit() sdl.GL_SetAttribute(sdl.GL_CONTEXT_MAJOR_VERSION, 3) sdl.GL_SetAttribute(sdl.GL_CONTEXT_MINOR_VERSION, 2) sdl.GL_SetAttribute(sdl.GL_CONTEXT_PROFILE_MASK, sdl.GL_CONTEXT_PROFILE_CORE) window, err = sdl.CreateWindow(winTitle, sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, winWidth, winHeight, sdl.WINDOW_OPENGL) if err != nil { panic(err) } defer window.Destroy() context, err = sdl.GL_CreateContext(window) if err != nil { panic(err) } defer sdl.GL_DeleteContext(context) if err = sdl.GL_MakeCurrent(window, context); err != nil { panic(err) } if err = gl.Init(); err != nil { panic(err) } printGLInfo() cameraMatrixUniform := setupGL() windowLoop(window, cameraMatrixUniform) }
func main() { runtime.LockOSThread() flag.Parse() if *cpuprofile != "" { f, err := os.Create(*cpuprofile) if err != nil { log.Fatal(err) } pprof.StartCPUProfile(f) defer pprof.StopCPUProfile() } if err := sdl.Init(sdl.INIT_EVERYTHING); err != nil { panic(err) } defer sdl.Quit() sdl.GL_SetAttribute(sdl.GL_MULTISAMPLESAMPLES, 4) sdl.GL_SetAttribute(sdl.GL_CONTEXT_MAJOR_VERSION, 3) sdl.GL_SetAttribute(sdl.GL_CONTEXT_MINOR_VERSION, 3) sdl.GL_SetAttribute(sdl.GL_CONTEXT_PROFILE_MASK, sdl.GL_CONTEXT_PROFILE_CORE) sdl.GL_SetAttribute(sdl.GL_DOUBLEBUFFER, 1) sdl.GL_SetAttribute(sdl.GL_DEPTH_SIZE, 24) sdl.GL_SetAttribute(sdl.GL_CONTEXT_FLAGS, sdl.GL_CONTEXT_DEBUG_FLAG|sdl.GL_CONTEXT_FORWARD_COMPATIBLE_FLAG) window, err := sdl.CreateWindow("TOW", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, 1024, 768, sdl.WINDOW_OPENGL|sdl.WINDOW_SHOWN|sdl.WINDOW_RESIZABLE) if err != nil { log.Fatal("can't create window", err) } defer window.Destroy() //defer renderer.Destroy() glcontext, err := sdl.GL_CreateContext(window) if err != nil { log.Fatal("can't create context", err) } defer sdl.GL_DeleteContext(glcontext) sdl.GL_MakeCurrent(window, glcontext) //err := gl.GlewInit() //fmt.Println(gl.GlewGetErrorString(err)) //glew init gl.Init() sdl.GL_SetSwapInterval(1) fmt.Println("glVersion", gl.GetString(gl.VERSION)) tw.Init(tw.OPENGL_CORE, nil) defer tw.Terminate() gl.GetError() // Ignore error debugContext.InitDebugContext() world := generation.GenerateWorld(64, 64, 2) gs := gamestate.NewGameState(window, world) defer gs.Delete() worldRenderer := rendering.NewWorldRenderer(window, gs.World) defer worldRenderer.Delete() gs.Bar.AddButton("screen shot", worldRenderer.ScreenShot, "") MainLoop(gs, worldRenderer) if *memprofile != "" { f, err := os.Create(*memprofile) if err != nil { panic(err) } pprof.WriteHeapProfile(f) f.Close() return } }