本文整理汇总了Golang中github.com/go-gl/gl/v4/1-core/gl.Clear函数的典型用法代码示例。如果您正苦于以下问题:Golang Clear函数的具体用法?Golang Clear怎么用?Golang Clear使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Clear函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: mainLoop
func (glRenderer *OpenglRenderer) mainLoop() {
glRenderer.onUpdate()
glRenderer.updateLights()
//set defaults
glRenderer.UseRendererParams(renderer.DefaultRendererParams())
glRenderer.UseMaterial(nil)
if len(glRenderer.postEffects) == 0 {
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
glRenderer.onRender()
} else {
//Render to the first post effect buffer
gl.BindFramebuffer(gl.FRAMEBUFFER, glRenderer.postEffects[0].fboId)
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
glRenderer.onRender()
//Render Post effects
for i := 0; i < len(glRenderer.postEffects)-1; i = i + 1 {
gl.BindFramebuffer(gl.FRAMEBUFFER, glRenderer.postEffects[i+1].fboId)
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
glRenderer.renderPostEffect(glRenderer.postEffects[i])
}
//Render final post effect to the frame buffer
gl.BindFramebuffer(gl.FRAMEBUFFER, 0)
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
glRenderer.renderPostEffect(glRenderer.postEffects[len(glRenderer.postEffects)-1])
}
}
示例2: blitScreen
// blitScreen swaps the buffers and clears the screen
func (window *Screen) blitScreen() {
C.SDL_GL_SwapWindow(window.sdlWindow)
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
window.elapsedTime = time.Since(window.frameTime).Seconds()
window.frameTime = time.Now()
}
示例3: programLoop
func programLoop(window *glfw.Window) {
// the linked shader program determines how the data will be rendered
shaders := compileShaders()
shaderProgram := linkShaders(shaders)
// VAO contains all the information about the data to be rendered
VAO := createTriangleVAO()
for !window.ShouldClose() {
// poll events and call their registered callbacks
glfw.PollEvents()
// perform rendering
gl.ClearColor(0.2, 0.5, 0.5, 1.0)
gl.Clear(gl.COLOR_BUFFER_BIT)
// draw loop
gl.UseProgram(shaderProgram) // ensure the right shader program is being used
gl.BindVertexArray(VAO) // bind data
gl.DrawArrays(gl.TRIANGLES, 0, 3) // perform draw call
gl.BindVertexArray(0) // unbind data (so we don't mistakenly use/modify it)
// end of draw loop
// swap in the rendered buffer
window.SwapBuffers()
}
}
示例4: Play
func (me *Core) Play(g Game) {
for !me.Win.ShouldClose() {
gl.Clear(me.ClearOpt)
g.Play()
g.Display(me)
glfw.PollEvents()
me.Win.SwapBuffers()
me.Exit()
}
}
示例5: drawLoop
func drawLoop(win *glfw.Window, vao uint32, shader uint32) {
for !win.ShouldClose() {
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
gl.BindVertexArray(vao)
gl.UseProgram(shader)
gl.DrawArrays(gl.TRIANGLES, 0, 3)
glfw.PollEvents()
win.SwapBuffers()
}
}
示例6: Run
func Run() {
if err := glfw.Init(); err != nil {
glog.Fatalln("failed to initialize glfw", err)
}
defer glfw.Terminate()
setupWindowOptions()
window, err := glfw.CreateWindow(WindowWidth, WindowHeight, "Game", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
//initilize Glow
if err := gl.Init(); err != nil {
panic(err)
}
version := gl.GoStr(gl.GetString(gl.VERSION))
fmt.Println("OpenGL version", version)
shaderSource, err := ReadShaders("colorShader")
if err != nil {
panic(err)
}
program, err := NewProgram(shaderSource)
if err != nil {
panic(err)
}
program.Use()
sprite := &SpriteComponent{-.5, -.5, 1, 1}
sprite.ReloadGraphics()
vertAttrib := uint32(gl.GetAttribLocation(program.program, CStr("vertPosition")))
gl.EnableVertexAttribArray(vertAttrib)
gl.VertexAttribPointer(vertAttrib, 3, gl.FLOAT, false, 0, gl.PtrOffset(0))
gl.Enable(gl.DEPTH_TEST)
gl.DepthFunc(gl.LESS)
gl.ClearColor(1.0, 1.0, 1.0, 1.0)
for !window.ShouldClose() {
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
program.Use()
gl.BindVertexArray(sprite.vaoID)
gl.DrawArrays(gl.TRIANGLES, 0, 2*3)
window.SwapBuffers()
glfw.PollEvents()
}
}
示例7: New
// New returns a newly created Screen
func New(width int, height int, fullscreen bool, FSAA int, name string) *Screen {
window := &Screen{}
C.SDL_Init(C.SDL_INIT_VIDEO)
C.setGlContextAttributes()
C.SDL_GL_SetAttribute(C.SDL_GL_DOUBLEBUFFER, 1)
// Force hardware accel
C.SDL_GL_SetAttribute(C.SDL_GL_ACCELERATED_VISUAL, 1)
if FSAA > 0 {
// FSAA (Fullscreen antialiasing)
C.SDL_GL_SetAttribute(C.SDL_GL_MULTISAMPLEBUFFERS, 1)
C.SDL_GL_SetAttribute(C.SDL_GL_MULTISAMPLESAMPLES, C.int(FSAA)) // 2, 4, 8
}
flags := C.SDL_WINDOW_OPENGL | C.SDL_RENDERER_ACCELERATED
if fullscreen {
flags = flags | C.SDL_WINDOW_FULLSCREEN
}
C.SDL_CreateWindowAndRenderer(C.int(width), C.int(height), C.Uint32(flags), &window.sdlWindow, &window.renderer)
C.SDL_SetWindowTitle(window.sdlWindow, C.CString(name))
C.SDL_GL_CreateContext(window.sdlWindow)
if err := gl.Init(); err != nil {
panic(err)
}
version := gl.GoStr(gl.GetString(gl.VERSION))
fmt.Println("OpenGL version", version)
// Configure global settings
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
gl.ClearColor(0.0, 0.0, 0.0, 1.0)
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
window.Width = width
window.Height = height
window.name = name
window.shouldClose = false
C.SDL_GL_SwapWindow(window.sdlWindow)
window.startTime = time.Now()
window.frameTime = time.Now()
C.SDL_GL_SetSwapInterval(1)
window.vsync = true
return window
}
示例8: draw
func draw(w *glfw.Window) {
//Get the horizontal split size of the window
sizex, sizey := w.GetSize()
var eyesize mgl32.Vec2
eyesize[0] = float32(sizex / 2.0)
eyesize[1] = float32(sizey)
gl.Enable(gl.SCISSOR_TEST)
gl.Scissor(0, 0, int32(eyesize[0]), int32(eyesize[1]))
gl.ClearColor(1, 0, 0, 1)
gl.Clear(gl.COLOR_BUFFER_BIT)
gl.Scissor(int32(eyesize[0]), 0, int32(eyesize[0]), int32(eyesize[1]))
gl.ClearColor(0, 0, 1, 1)
gl.Clear(gl.COLOR_BUFFER_BIT)
gl.Disable(gl.SCISSOR_TEST)
}
示例9: Draw
func (r *Renderer) Draw() {
/* Clear screen */
gl.ClearColor(0.9, 0.9, 0.9, 1.0)
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
/* Enable blending */
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA)
/* Depth test */
gl.Enable(gl.DEPTH_TEST)
gl.DepthFunc(gl.LESS)
for _, pass := range r.Passes {
pass.DrawPass(r.Scene)
}
}
示例10: Init
func (screen *Screen) Init(title string, onCloseHandler func(), chip *chip8.Chip8) {
var err error
screen.chip = chip
err = glfw.Init()
if err != nil {
panic(err)
}
window, err := glfw.CreateWindow(SCREEN_WIDTH, SCREEN_HEIGHT, title, nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
// Initialize Glow
if err := gl.Init(); err != nil {
panic(err)
}
version := gl.GoStr(gl.GetString(gl.VERSION))
fmt.Println("OpenGL version", version)
gl.ClearColor(255.0, 0.0, 0.0, 0.0) //Set the cleared screen colour to black
gl.Viewport(0, 0, int32(SCREEN_WIDTH), int32(SCREEN_HEIGHT)) //This sets up the viewport so that the coordinates (0, 0) are at the top left of the window
for !window.ShouldClose() {
// Do OpenGL stuff
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
window.SwapBuffers()
glfw.PollEvents()
}
onCloseHandler()
}
示例11: Run
// Run is runs the main engine loop
func (e *Engine) Run() {
defer glfw.Terminate()
previousTime := glfw.GetTime()
for !e.window.ShouldClose() {
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
//Update
time := glfw.GetTime()
elapsed := time - previousTime
previousTime = time
e.currentScene.Update(elapsed)
// Render
e.currentScene.Render()
// Maintenance
e.window.SwapBuffers()
glfw.PollEvents()
}
}
示例12: main
func main() {
if err := glfw.Init(); err != nil {
log.Fatalln("failed to inifitialize glfw:", err)
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Resizable, glfw.False)
glfw.WindowHint(glfw.ContextVersionMajor, 4)
glfw.WindowHint(glfw.ContextVersionMinor, 1)
glfw.WindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile)
glfw.WindowHint(glfw.OpenGLForwardCompatible, glfw.True)
window, err := glfw.CreateWindow(windowWidth, windowHeight, "Hello!", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
// Initialize Glow (go function bindings)
if err := gl.Init(); err != nil {
panic(err)
}
window.SetKeyCallback(keyCallback)
// program loop
for !window.ShouldClose() {
// poll events and call their registered callbacks
glfw.PollEvents()
// perform rendering
gl.ClearColor(0.2, 0.5, 0.5, 1.0)
gl.Clear(gl.COLOR_BUFFER_BIT)
// swap in the rendered buffer
window.SwapBuffers()
}
}
示例13: programLoop
func programLoop(window *glfw.Window) error {
// the linked shader program determines how the data will be rendered
vertShader, err := gfx.NewShaderFromFile("shaders/basic.vert", gl.VERTEX_SHADER)
if err != nil {
return err
}
fragShader, err := gfx.NewShaderFromFile("shaders/basic.frag", gl.FRAGMENT_SHADER)
if err != nil {
return err
}
shaderProgram, err := gfx.NewProgram(vertShader, fragShader)
if err != nil {
return err
}
defer shaderProgram.Delete()
vertices := []float32{
// top
0.0, 0.5, 0.0, // position
1.0, 0.0, 0.0, // Color
// bottom right
0.5, -0.5, 0.0,
0.0, 1.0, 0.0,
// bottom left
-0.5, -0.5, 0.0,
0.0, 0.0, 1.0,
}
indices := []uint32{
0, 1, 2, // only triangle
}
VAO := createTriangleVAO(vertices, indices)
for !window.ShouldClose() {
// poll events and call their registered callbacks
glfw.PollEvents()
// perform rendering
gl.ClearColor(0.2, 0.5, 0.5, 1.0)
gl.Clear(gl.COLOR_BUFFER_BIT)
// draw loop
// draw triangle
shaderProgram.Use()
gl.BindVertexArray(VAO)
gl.DrawElements(gl.TRIANGLES, 3, gl.UNSIGNED_INT, unsafe.Pointer(nil))
gl.BindVertexArray(0)
// end of draw loop
// swap in the rendered buffer
window.SwapBuffers()
}
return nil
}
示例14: Main
// Main TODO doc
func (c *Context) Main(screen *display.Context, config Config) {
clock, err := clock.New()
if err != nil {
panic(err)
}
//background, err := sprite.Load("background.png", 1)
//if err != nil {
// panic(err)
//}
//background.Bind(c.Screen.Program)
sprites := sprite.NewGroup()
c.Walls = sprite.NewGroup()
playerSprite, err := loadSprite("assets/floppy.png", 1, 1)
if err != nil {
panic(err)
}
p, err := player.New(320.0, 240.0, playerSprite, sprites)
if err != nil {
panic(err)
}
wallSprite, err := loadSprite("assets/resistor.png", 32, 1)
if err != nil {
panic(err)
}
sprites.Add(c.Walls)
_, err = walls.New(640, 240, 80, wallSprite, c.Walls)
if err != nil {
panic(err)
}
font, err := fonts.SimpleASCII()
if err != nil {
panic(err)
}
font.Bind(screen.Program)
sprites.Bind(c.Screen.Program)
for running := true; running; {
screen.Fill(200.0/256.0, 200/256.0, 200/256.0)
p.Alive = true
dt := clock.Tick(30)
// TODO move this somewhere else (maybe a Clear method of display
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
// TODO refector events to be cleaner
if screen.Window.ShouldClose() {
running = !screen.Window.ShouldClose()
}
for _, event := range events.Get() {
if event.Action == glfw.Press && event.Key == glfw.KeyEscape {
running = false
event.Window.SetShouldClose(true)
}
p.HandleEvent(event, dt/1000.0)
}
sprites.Update(dt/1000.0, c.Walls)
//background.Draw(0, 0)
if p.Alive == false {
msg := "You Died!"
font.DrawText(mgl32.Vec3{250, 250, 0}, &sprite.Effects{Scale: mgl32.Vec3{2.0, 2.0, 1.0}}, msg)
if !config.Cheat {
running = false
}
}
sprites.Draw(nil)
// TODO: implement score
msg := fmt.Sprintf("%d", 0)
effect := sprite.Effects{Scale: mgl32.Vec3{3.0, 3.0, 1.0}}
w, h := font.SizeText(&effect, msg)
font.DrawText(mgl32.Vec3{screen.Width/2 - w/2, screen.Height - h, 0}, &effect, msg)
if config.Cheat {
msg := "Dev Mode!\n"
msg += fmt.Sprintf("Pos: %.0f, %.0f\n", p.Rect.X, p.Rect.Y)
msg += fmt.Sprintf("Status: %t\n", p.Alive)
_, h := font.SizeText(nil, msg)
font.DrawText(mgl32.Vec3{0, 480 - h, 0}, nil, msg)
}
screen.Flip()
// TODO refector events to be cleaner
glfw.PollEvents()
}
}
示例15: main
//.........这里部分代码省略.........
defer helpclear.DeleteString()
var helpescape *String = font.NewString("ESC: quit")
defer helpescape.DeleteString()
var vbo *VBO
if vbo, err = NewVBOQuad(0, 0, float32(texture.Size.X), float32(texture.Size.Y)); err != nil {
panic(err)
}
defer vbo.DeleteVBO()
var cnt float32 = 0
// while there's no request to close the window
for !window.ShouldClose() {
cnt += 1
// get the texture of the window because it may have changed since creation
width, height := window.GetFramebufferSize()
wwidth, _ := window.GetSize()
gRetinaScale = float32(width) / float32(wwidth)
//fmt.Printf("x=%d y=%d wx=%d wy=%d\n", width, height, wwidth, wheight)
if cnt >= float32(width) {
cnt = 0
}
var matrix Matrix2x3 = IdentityMatrix2x3()
matrix = matrix.Translate(-1.0, 1.0)
matrix = matrix.Scale(2.0/float32(width), -2.0/float32(height))
// clear it all out
gl.Viewport(0, 0, int32(width), int32(height))
gl.ClearColor(0.0, 0.0, 0.0, 1.0)
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
gl.Enable(gl.BLEND)
gl.BlendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA)
gl.BlendEquation(gl.FUNC_ADD)
var matrix3 Matrix2x3 = matrix.Scale(gZoom, gZoom)
matrix3 = matrix3.Translate(gOffX, gOffY)
// draw the grid
if true {
vbo.Bind()
progGrid.UseProgram()
color1 := [4]float32{.4, .4, .4, 1}
color2 := [4]float32{.9, .9, .9, 1}
grid := [3]float32{float32(texture.Size.X), float32(texture.Size.Y), 8 / gZoom}
//fmt.Printf("%.2f %.2f %.2f %.2f\n", grid[0], grid[1], grid[2], grid[3])
progGrid.ProgramUniformMatrix4fv("ModelviewMatrix", matrix3.Array())
progGrid.ProgramUniform4fv("color1", color1)
progGrid.ProgramUniform4fv("color2", color2)
progGrid.ProgramUniform3fv("grid", grid)
if err = progGrid.ValidateProgram(); err != nil {
panic(err)
}
vbo.Draw()
vbo.Unbind()
progGrid.UnuseProgram()
}