// Toggles SRGB-framebuffer. func (me RenderStates) ToggleFramebufferSrgb() { if Cache.renderStates.FramebufferSrgb = !Cache.renderStates.FramebufferSrgb; Cache.renderStates.FramebufferSrgb { gl.Enable(gl.FRAMEBUFFER_SRGB) } else { gl.Disable(gl.FRAMEBUFFER_SRGB) } }
// Toggles blending. func (me RenderStates) ToggleBlending() { if Cache.renderStates.Blending = !Cache.renderStates.Blending; Cache.renderStates.Blending { gl.Enable(gl.BLEND) } else { gl.Disable(gl.BLEND) } }
// Toggles face-culling. func (me RenderStates) ToggleFaceCulling() { if Cache.renderStates.FaceCulling = !Cache.renderStates.FaceCulling; Cache.renderStates.FaceCulling { gl.Enable(gl.CULL_FACE) } else { gl.Disable(gl.CULL_FACE) } }
// Toggles scissor-testing. func (me RenderStates) ToggleScissorTest() { if Cache.renderStates.ScissorTest = !Cache.renderStates.ScissorTest; Cache.renderStates.ScissorTest { gl.Enable(gl.SCISSOR_TEST) } else { gl.Disable(gl.SCISSOR_TEST) } }
// Toggles depth-testing. func (me RenderStates) ToggleDepthTest() { if Cache.renderStates.DepthTest = !Cache.renderStates.DepthTest; Cache.renderStates.DepthTest { gl.Enable(gl.DEPTH_TEST) } else { gl.Disable(gl.DEPTH_TEST) } }
// Toggles stencil-testing. func (me RenderStates) ToggleStencilTest() { if Cache.renderStates.StencilTest = !Cache.renderStates.StencilTest; Cache.renderStates.StencilTest { gl.Enable(gl.STENCIL_TEST) } else { gl.Disable(gl.STENCIL_TEST) } }
// Activates or deactivates face-culling. func (me RenderStates) SetFaceCulling(newFaceCulling bool) { if Cache.renderStates.FaceCulling != newFaceCulling { if Cache.renderStates.FaceCulling = newFaceCulling; Cache.renderStates.FaceCulling { gl.Enable(gl.CULL_FACE) } else { gl.Disable(gl.CULL_FACE) } } }
// Activates or deactivates SRGB-framebuffer. func (me RenderStates) SetFramebufferSrgb(newFramebufferSrgb bool) { if Cache.renderStates.FramebufferSrgb != newFramebufferSrgb { if Cache.renderStates.FramebufferSrgb = newFramebufferSrgb; Cache.renderStates.FramebufferSrgb { gl.Enable(gl.FRAMEBUFFER_SRGB) } else { gl.Disable(gl.FRAMEBUFFER_SRGB) } } }
// Activates or deactivates stencil-testing. func (me RenderStates) SetStencilTest(newStencilTest bool) { if Cache.renderStates.StencilTest != newStencilTest { if Cache.renderStates.StencilTest = newStencilTest; Cache.renderStates.StencilTest { gl.Enable(gl.STENCIL_TEST) } else { gl.Disable(gl.STENCIL_TEST) } } }
// Activates or deactivates scissor-testing. func (me RenderStates) SetScissorTest(newScissorTest bool) { if Cache.renderStates.ScissorTest != newScissorTest { if Cache.renderStates.ScissorTest = newScissorTest; Cache.renderStates.ScissorTest { gl.Enable(gl.SCISSOR_TEST) } else { gl.Disable(gl.SCISSOR_TEST) } } }
// Activates or deactivates depth-testing. func (me RenderStates) SetDepthTest(newDepthTest bool) { if Cache.renderStates.DepthTest != newDepthTest { if Cache.renderStates.DepthTest = newDepthTest; Cache.renderStates.DepthTest { gl.Enable(gl.DEPTH_TEST) } else { gl.Disable(gl.DEPTH_TEST) } } }
// Activates or deactivates blending. func (me RenderStates) SetBlending(newBlending bool) { if Cache.renderStates.Blending != newBlending { if Cache.renderStates.Blending = newBlending; Cache.renderStates.Blending { gl.Enable(gl.BLEND) } else { gl.Disable(gl.BLEND) } } }
func (_ *glMan) init() (err error, badVer string) { if !ogl.isInit { if !gl.Util.Init() { badVer = ogl.lastBadVer return } else { ugl.Init() if !ugl.VersionMatch(glMinVer) { badVer = strf("%v.%v", ugl.Support.GlVersion.MajorMinor[0], ugl.Support.GlVersion.MajorMinor[1]) ogl.lastBadVer = badVer return } else { var dur time.Duration gl.FrontFace(gl.CCW) gl.CullFace(gl.BACK) gl.Enable(gl.TEXTURE_CUBE_MAP_SEAMLESS) Diag.LogMisc(ugl.Util.ConnInfo()) if len(ogl.progs.All) > 0 { if dur, err = ogl.makeProgs(true); err == nil { Diag.LogShaders("Total shader compilation time for all %v auxiliary (non-ubershader) programs: %v\n", len(ogl.progs.All), dur) Stats.addProgCompile(len(ogl.progs.All), dur.Nanoseconds()) } } if err == nil { ogl.uber.loadFromRawSources() ogl.uber.processFuncs() } } } if err == nil { err = ugl.Util.LastError("ng-gl-core.Init") } if err == nil { ogl.isInit = true } } return }
// Activates stencil-testing. func (_ RenderStates) ForceEnableStencilTest() { Cache.renderStates.StencilTest = true gl.Enable(gl.STENCIL_TEST) }
// Enables stencil-testing only if it is currently disabled. func (me RenderStates) EnableStencilTest() { if !Cache.renderStates.StencilTest { Cache.renderStates.StencilTest = true gl.Enable(gl.STENCIL_TEST) } }
// Enables face-culling only if it is currently disabled. func (me RenderStates) EnableFaceCulling() { if !Cache.renderStates.FaceCulling { Cache.renderStates.FaceCulling = true gl.Enable(gl.CULL_FACE) } }
// Activates scissor-testing. func (_ RenderStates) ForceEnableScissorTest() { Cache.renderStates.ScissorTest = true gl.Enable(gl.SCISSOR_TEST) }
// Enables blending only if it is currently disabled. func (me RenderStates) EnableBlending() { if !Cache.renderStates.Blending { Cache.renderStates.Blending = true gl.Enable(gl.BLEND) } }
// Activates SRGB-framebuffer. func (_ RenderStates) ForceEnableFramebufferSrgb() { Cache.renderStates.FramebufferSrgb = true gl.Enable(gl.FRAMEBUFFER_SRGB) }
// Enables SRGB-framebuffer only if it is currently disabled. func (me RenderStates) EnableFramebufferSrgb() { if !Cache.renderStates.FramebufferSrgb { Cache.renderStates.FramebufferSrgb = true gl.Enable(gl.FRAMEBUFFER_SRGB) } }
// Activates face-culling. func (_ RenderStates) ForceEnableFaceCulling() { Cache.renderStates.FaceCulling = true gl.Enable(gl.CULL_FACE) }
// Activates blending. func (_ RenderStates) ForceEnableBlending() { Cache.renderStates.Blending = true gl.Enable(gl.BLEND) }
// Enables depth-testing only if it is currently disabled. func (me RenderStates) EnableDepthTest() { if !Cache.renderStates.DepthTest { Cache.renderStates.DepthTest = true gl.Enable(gl.DEPTH_TEST) } }
// Enables scissor-testing only if it is currently disabled. func (me RenderStates) EnableScissorTest() { if !Cache.renderStates.ScissorTest { Cache.renderStates.ScissorTest = true gl.Enable(gl.SCISSOR_TEST) } }
// Activates depth-testing. func (_ RenderStates) ForceEnableDepthTest() { Cache.renderStates.DepthTest = true gl.Enable(gl.DEPTH_TEST) }
func main() { var err error var looping = true defer fmt.Println("EXIT") if err = glfw.Init(); err != nil { panic(err) } defer glfw.Terminate() glfw.OpenWindowHint(glfw.FsaaSamples, 0) if useStrictCoreProfile { glfw.OpenWindowHint(glfw.OpenGLVersionMajor, 3) glfw.OpenWindowHint(glfw.OpenGLVersionMinor, 2) glfw.OpenWindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile) } if err = glfw.OpenWindow(1280, 720, 8, 8, 8, 0, 24, 8, glfw.Windowed); err != nil { panic(err) } defer glfw.CloseWindow() glfw.Enable(glfw.StickyKeys) if !gl.Util.Init() { panic("Failed to initialize at least OpenGL 3.2 or higher.") } defer logLastGlError("(post loop)") gl.ClearColor(0.3, 0.1, 0.0, 1.0) gl.Enable(gl.DEPTH_TEST) gl.FrontFace(gl.CCW) gl.CullFace(gl.BACK) gl.Disable(gl.CULL_FACE) if err = compileShaders(); err != nil { panic(err) } setupGeometry() defer deleteGeometry() logLastGlError("(pre loop)") for looping { gl.UseProgram(shaderProg) if isFirstLoop { logLastGlError("gl.UseProgram") } gl.Viewport(0, 0, 1280, 720) if isFirstLoop { logLastGlError("gl.ViewPort") } gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) if isFirstLoop { logLastGlError("gl.Clear") } renderGeometry(faceTri) if isFirstLoop { logLastGlError("renderGeometry(faceTri)") } renderGeometry(faceQuad) if isFirstLoop { logLastGlError("renderGeometry(faceQuad)") } if (glfw.WindowParam(glfw.Opened) != 1) || (glfw.Key(glfw.KeyEsc) == glfw.KeyPress) { looping = false } else { glfw.SwapBuffers() } isFirstLoop = false } logLastGlError("post-loop") }
func main() { runtime.LockOSThread() var looping = true defer fmt.Println("EXIT") // if err = glfw.Init(); err != nil { // panic(err) // } if !glfw.Init() { panic("glfw.Init() failed!") } defer glfw.Terminate() // glfw.OpenWindowHint(glfw.FsaaSamples, 0) glfw.WindowHint(glfw.Samples, 0) if useStrictCoreProfile { // glfw.OpenWindowHint(glfw.OpenGLVersionMajor, 3) // glfw.OpenWindowHint(glfw.OpenGLVersionMinor, 2) // glfw.OpenWindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile) glfw.WindowHint(glfw.ContextVersionMajor, 3) glfw.WindowHint(glfw.ContextVersionMinor, 2) glfw.WindowHint(glfw.OpenglProfile, glfw.OpenglCoreProfile) } // if err = glfw.OpenWindow(1280, 720, 8, 8, 8, 0, 24, 8, glfw.Windowed); err != nil { // panic(err) // } // defer glfw.CloseWindow() glfw.WindowHint(glfw.RedBits, 8) glfw.WindowHint(glfw.BlueBits, 8) glfw.WindowHint(glfw.GreenBits, 8) glfw.WindowHint(glfw.AlphaBits, 0) glfw.WindowHint(glfw.DepthBits, 24) glfw.WindowHint(glfw.StencilBits, 8) win, err := glfw.CreateWindow(1280, 720, "Test", nil, nil) if err != nil { panic(err) } defer win.Destroy() win.MakeContextCurrent() // glfw.Enable(glfw.StickyKeys) win.SetInputMode(glfw.StickyKeys, glfw.True) if !gl.Util.Init() { panic("Failed to initialize at least OpenGL 3.2 or higher.") } defer logLastGlError("(post loop)") gl.ClearColor(0.3, 0.1, 0.0, 1.0) gl.Enable(gl.DEPTH_TEST) gl.FrontFace(gl.CCW) gl.CullFace(gl.BACK) gl.Disable(gl.CULL_FACE) if err = compileShaders(); err != nil { panic(err) } setupGeometry() defer deleteGeometry() logLastGlError("(pre loop)") for looping { gl.UseProgram(shaderProg) if isFirstLoop { logLastGlError("gl.UseProgram") } gl.Viewport(0, 0, 1280, 720) if isFirstLoop { logLastGlError("gl.ViewPort") } gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) if isFirstLoop { logLastGlError("gl.Clear") } renderGeometry(faceTri) if isFirstLoop { logLastGlError("renderGeometry(faceTri)") } renderGeometry(faceQuad) if isFirstLoop { logLastGlError("renderGeometry(faceQuad)") } // if (glfw.WindowParam(glfw.Opened) != 1) || (glfw.Key(glfw.KeyEsc) == glfw.KeyPress) { if win.ShouldClose() || win.GetKey(glfw.KeyEscape) == glfw.Press { looping = false } else { // glfw.SwapBuffers() win.SwapBuffers() glfw.PollEvents() } isFirstLoop = false } logLastGlError("post-loop") }