func glInit() { var err error StartTime = time.Now().UnixNano() if err = gl.Init(); err != nil { panic(err) } gl.ClearColor(1, 0, 0, 1) }
func main() { initialWidth, initialHeight := 1280, 720 runtime.LockOSThread() if sdlInit := sdl.Init(sdl.INIT_VIDEO); sdlInit != 0 { panic("SDL init error") } reinitScreen(initialWidth, initialHeight) defer cleanExit(true, false) if err := gl.Init(); err != nil { panic(err) } gl.Enable(gl.BLEND) gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA) gl.Enable(gl.DEPTH) defer cleanExit(false, true) glSetupShaderProg(&shaderTextureCreator, false) glSetupShaderProg(&shaderTextureDisplay, true) glFillBuffer(rttVerts, &rttVertBuf) glFillBuffer(dispVerts, &dispVertBuf) gl.GenTextures(1, &rttFrameTex) gl.BindTexture(gl.TEXTURE_2D, rttFrameTex) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT) if doRtt { gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, texSize, texSize, 0, gl.RGBA, gl.UNSIGNED_BYTE, nil) gl.GenFramebuffers(1, &rttFrameBuf) gl.BindFramebuffer(gl.FRAMEBUFFER, rttFrameBuf) gl.FramebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, rttFrameTex, 0) gl.BindFramebuffer(gl.FRAMEBUFFER, 0) } else { glFillTextureFromImageFile("texture.jpg") } gl.BindTexture(gl.TEXTURE_2D, 0) gl.ClearColor(0.3, 0.6, 0.9, 1) gl.Clear(gl.COLOR_BUFFER_BIT) gl.ActiveTexture(gl.TEXTURE0) for { if evt := sdl.PollEvent(); evt != nil { switch event := evt.(type) { case *sdl.ResizeEvent: reinitScreen(int(event.W), int(event.H)) case *sdl.QuitEvent: return } } else { if doRtt { renderToTexture() } renderToScreen() sdl.GL_SwapBuffers() } } sdl.Quit() }
func Initialize() { fmt.Println("INFO: OpenGL Version", gl.GetString(gl.VERSION)) // Render things which are closer on top. gl.Init() gl.Enable(gl.DEPTH_TEST) gl.ClearColor(0.0, 0.0, 0.0, 0.0) CreateShaders() CreateVOB() }
func main() { // Setup the window if err := glfw.Init(); err != nil { fmt.Fprintf(os.Stderr, "glfw: %s\n", err) return } // Close glfw at the end of main() defer glfw.Terminate() // Set window properties glfw.OpenWindowHint(glfw.WindowNoResize, 0) //glfw.OpenWindowHint(glfw.OpenGLForwardCompat, gl.TRUE) glfw.OpenWindowHint(glfw.OpenGLDebugContext, gl.TRUE) // Actually open the window if err := glfw.OpenWindow(initial_width, initial_height, 0, 0, 0, 0, 16, 0, glfw.Windowed); err != nil { fmt.Fprintf(os.Stderr, "glfw: %s\n", err) return } // Close the window at the end of main() defer glfw.CloseWindow() // Only swap buffer once/ draw cycle (30 or 60 fps) glfw.SetSwapInterval(1) glfw.SetWindowTitle(Title) // Apply those settings if err := gl.Init(); err != nil { fmt.Fprintf(os.Stderr, "gl: %s\n", err) } // While glfw.Opened is 1 (the window is open), keep swapping buffers for glfw.WindowParam(glfw.Opened) == 1 { glfw.SwapBuffers() } setCallbacks() // Initialize the openGL settings Initialize() }
func initGL() { if err := gl.Init(); err != nil { log.Fatalf("gl: %s\n", err) } }
func main() { var now = time.Now() initialWidth, initialHeight := 1280, 720 runtime.LockOSThread() if sdlInit := sdl.Init(sdl.INIT_VIDEO); sdlInit != 0 { panic("SDL init error") } reinitScreen(initialWidth, initialHeight) defer cleanExit(true, false) if err := gl.Init(); err != nil { panic(err) } gl.Enable(gl.BLEND) gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA) gl.Enable(gl.DEPTH) sdl.WM_SetCaption("Loading volume...", "") loadVolume() defer cleanExit(false, true) sdl.WM_SetCaption("Compiling shaders...", "") glSetupShaderProg(&shaderTextureCreator) glSetupShaderProg(&shaderTextureDisplay) glFillBuffer(rttVerts, &rttVertBuf) glFillBuffer(dispVerts, &dispVertBuf) gl.GenTextures(1, &rttFrameTex) gl.BindTexture(gl.TEXTURE_2D, rttFrameTex) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, glTexFilter) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, glTexFilter) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, glTexClamp) gl.TexParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, glTexClamp) if doRtt && !noRtt { gl.TexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, texWidth, texHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, nil) gl.GenFramebuffers(1, &rttFrameBuf) gl.BindFramebuffer(gl.FRAMEBUFFER, rttFrameBuf) gl.FramebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, rttFrameTex, 0) gl.BindFramebuffer(gl.FRAMEBUFFER, 0) } else { if noRtt { rttFrameBuf = 0 } else { glFillTextureFromImageFile("texture.jpg") } } gl.BindTexture(gl.TEXTURE_2D, 0) gl.ClearColor(0.3, 0.2, 0.1, 1) gl.Clear(gl.COLOR_BUFFER_BIT) var looping = true var fps = 0 var durSec time.Duration startTime, lastLoopTime, lastSecond = now, now, now sdl.WM_SetCaption("Up & running!", "") for looping { now = time.Now() if durSec = now.Sub(lastSecond); durSec.Seconds() >= 1 { sdl.WM_SetCaption(fmt.Sprintf("%v×%v @ %vfps", sdlScreen.W, sdlScreen.H, fps), "") fps = 0 lastSecond = now } else { fps++ } if evt := sdl.PollEvent(); evt != nil { switch event := evt.(type) { case *sdl.ResizeEvent: reinitScreen(int(event.W), int(event.H)) case *sdl.QuitEvent: looping = false } } if doRtt || noRtt { renderToTexture() } if !noRtt { renderToScreen() } sdl.GL_SwapBuffers() lastLoopTime = now } sdl.Quit() }