예제 #1
0
//	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)
	}
}
예제 #2
0
//	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)
	}
}
예제 #3
0
//	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)
	}
}
예제 #4
0
//	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)
	}
}
예제 #5
0
//	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)
	}
}
예제 #6
0
//	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)
	}
}
예제 #7
0
//	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)
		}
	}
}
예제 #8
0
//	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)
		}
	}
}
예제 #9
0
//	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)
		}
	}
}
예제 #10
0
//	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)
		}
	}
}
예제 #11
0
//	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)
		}
	}
}
예제 #12
0
//	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)
		}
	}
}
예제 #13
0
파일: gl-core.go 프로젝트: go3d/go-ngine
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
}
예제 #14
0
//	Activates stencil-testing.
func (_ RenderStates) ForceEnableStencilTest() {
	Cache.renderStates.StencilTest = true
	gl.Enable(gl.STENCIL_TEST)
}
예제 #15
0
//	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)
	}
}
예제 #16
0
//	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)
	}
}
예제 #17
0
//	Activates scissor-testing.
func (_ RenderStates) ForceEnableScissorTest() {
	Cache.renderStates.ScissorTest = true
	gl.Enable(gl.SCISSOR_TEST)
}
예제 #18
0
//	Enables blending only if it is currently disabled.
func (me RenderStates) EnableBlending() {
	if !Cache.renderStates.Blending {
		Cache.renderStates.Blending = true
		gl.Enable(gl.BLEND)
	}
}
예제 #19
0
//	Activates SRGB-framebuffer.
func (_ RenderStates) ForceEnableFramebufferSrgb() {
	Cache.renderStates.FramebufferSrgb = true
	gl.Enable(gl.FRAMEBUFFER_SRGB)
}
예제 #20
0
//	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)
	}
}
예제 #21
0
//	Activates face-culling.
func (_ RenderStates) ForceEnableFaceCulling() {
	Cache.renderStates.FaceCulling = true
	gl.Enable(gl.CULL_FACE)
}
예제 #22
0
//	Activates blending.
func (_ RenderStates) ForceEnableBlending() {
	Cache.renderStates.Blending = true
	gl.Enable(gl.BLEND)
}
예제 #23
0
//	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)
	}
}
예제 #24
0
//	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)
	}
}
예제 #25
0
//	Activates depth-testing.
func (_ RenderStates) ForceEnableDepthTest() {
	Cache.renderStates.DepthTest = true
	gl.Enable(gl.DEPTH_TEST)
}
예제 #26
0
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")
}
예제 #27
0
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")
}