本文整理汇总了Golang中github.com/go-gl/glfw/v3/1/glfw.PollEvents函数的典型用法代码示例。如果您正苦于以下问题:Golang PollEvents函数的具体用法?Golang PollEvents怎么用?Golang PollEvents使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PollEvents函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: RenderLinesWithEvents
// RenderLinesWithEvents renders multiple channels of samples to screen, and draws events.
func (s *Screen) RenderLinesWithEvents(lines []Line, events <-chan interface{}, sampleRate int) {
s.lines = lines
runtime.LockOSThread()
// NOTE: It appears that glfw 3.1 uses its own internal error callback.
// glfw.SetErrorCallback(func(err glfw.ErrorCode, desc string) {
// log.Fatalf("%v: %s\n", err, desc)
// })
if err := glfw.Init(); err != nil {
log.Fatalf("Can't init glfw: %v!", err)
}
defer glfw.Terminate()
window, err := glfw.CreateWindow(s.width, s.height, "Muse", nil, nil)
if err != nil {
log.Fatalf("CreateWindow failed: %s", err)
}
if aw, ah := window.GetSize(); aw != s.width || ah != s.height {
log.Fatalf("Window doesn't have the requested size: want %d,%d got %d,%d", s.width, s.height, aw, ah)
}
window.MakeContextCurrent()
// Must gl.Init() *after* MakeContextCurrent
if err := gl.Init(); err != nil {
log.Fatalf("Can't init gl: %v!", err)
}
// Set window up to be [0, -1.0] -> [width, 1.0], black.
gl.MatrixMode(gl.MODELVIEW)
gl.LoadIdentity()
gl.Translated(-1, 0, 0)
gl.Scaled(2/float64(s.width), 1.0, 1.0)
gl.ClearColor(0.0, 0.0, 0.0, 0.0)
// Actually start writing data to the buffer
for i, _ := range s.lines {
s.lines[i].valueBuffer = types.NewBuffer(int(float64(s.width) / s.pixelsPerSample))
s.lines[i].valueBuffer.GoPushChannel(s.lines[i].Values, sampleRate)
}
if events != nil {
s.eventBuffer.GoPushChannel(events, sampleRate)
}
// Keep drawing while we still can (and should).
for !window.ShouldClose() && !s.bufferFinished() {
if window.GetKey(glfw.KeyEscape) == glfw.Press {
break
}
gl.Clear(gl.COLOR_BUFFER_BIT)
s.drawSignal()
window.SwapBuffers()
glfw.PollEvents()
}
// Keep window around, only close on esc.
for !window.ShouldClose() && window.GetKey(glfw.KeyEscape) != glfw.Press {
glfw.PollEvents()
}
}
开发者ID:mantyr,项目名称:go-sound,代码行数:61,代码来源:screen.go
示例2: main
func main() {
err := glfw.Init()
if err != nil {
panic(err)
}
defer glfw.Terminate()
width, height = 800, 800
window, err := glfw.CreateWindow(width, height, "Show RoundedRect", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
window.SetSizeCallback(reshape)
window.SetKeyCallback(onKey)
window.SetCharCallback(onChar)
glfw.SwapInterval(1)
err = gl.Init()
if err != nil {
panic(err)
}
reshape(window, width, height)
for !window.ShouldClose() {
if redraw {
display()
window.SwapBuffers()
redraw = false
}
glfw.PollEvents()
// time.Sleep(2 * time.Second)
}
}
开发者ID:maleck13,项目名称:jigsaws,代码行数:35,代码来源:helloworldgl.go
示例3: StartFrame
// StartFrame sets everything up to start rendering a new frame.
// This includes swapping in last rendered buffer, polling for window events,
// checkpointing cursor tracking, and updating the time since last frame.
func (w *Window) StartFrame() {
// swap in the previous rendered buffer
w.glfw.SwapBuffers()
// poll for UI window events
glfw.PollEvents()
if w.inputManager.IsActive(PROGRAM_QUIT) {
w.glfw.SetShouldClose(true)
}
// base calculations of time since last frame (basic program loop idea)
// For better advanced impl, read: http://gafferongames.com/game-physics/fix-your-timestep/
curFrameTime := glfw.GetTime()
if w.firstFrame {
w.lastFrameTime = curFrameTime
w.firstFrame = false
}
w.dTime = curFrameTime - w.lastFrameTime
w.lastFrameTime = curFrameTime
w.inputManager.CheckpointCursorChange()
}
开发者ID:cstegel,项目名称:opengl-samples-golang,代码行数:28,代码来源:window.go
示例4: Update
// Update must be called from within the main thread as often as possible.
func (window *OpenGlWindow) Update() {
glfw.PollEvents()
window.glfwWindow.MakeContextCurrent()
window.CallRender()
window.glfwWindow.SwapBuffers()
}
开发者ID:inkyblackness,项目名称:shocked-client,代码行数:8,代码来源:OpenGlWindow.go
示例5: StartLoop
//
// Start Loop
// this starts the event loop which runs until the program ends
//
func (glw *Glw) StartLoop() {
optimalTime := 1000.0 / float64(glw.fps)
previousTime := glfw.GetTime()
// If the Window is open keep looping
for !glw.GetWindow().ShouldClose() {
// Update
time := glfw.GetTime()
elapsed := time - previousTime
delta := elapsed / optimalTime
previousTime = time
// Calls the Render Callback
glw.renderer(glw, delta)
// Triggers window refresh
glw.GetWindow().SwapBuffers()
// Triggers events
glfw.PollEvents()
}
// Called at the end of the program, and terminates the window system
glw.Terminate()
}
开发者ID:YagoCarballo,项目名称:Go-GL-Assignment-2,代码行数:29,代码来源:wrapper.go
示例6: main
func main() {
err := glfw.Init()
if err != nil {
panic(err)
}
defer glfw.Terminate()
window, err := glfw.CreateWindow(640, 480, "Testing", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
// int width, height
// glfw.GetFramebufferSize(window, &width, &height)
for !window.ShouldClose() {
// Do OpenGL stuff.
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
gl.Color3f(1, 1, 0)
gl.Rectf(-0.75, 0.75, 0.75, -0.75)
gl.Color3f(1, 0, 1)
gl.Rectf(-0.5, 0.5, 0.5, -0.5)
window.SwapBuffers()
glfw.PollEvents()
}
}
开发者ID:broderickhyman,项目名称:GoStuff,代码行数:32,代码来源:hello.go
示例7: run
func (self *Application) run() error {
if err := glfw.Init(); err != nil {
return 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(512, 512, "GL", nil, nil)
if err != nil {
return err
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
return err
}
if err := self.setup(); err != nil {
return err
}
for !window.ShouldClose() {
self.display()
window.SwapBuffers()
glfw.PollEvents()
}
return nil
}
开发者ID:alex-ac,项目名称:redbook-go,代码行数:35,代码来源:main.go
示例8: RenderLoop
// RenderLoop is the main render loop for the application
func (app *ExampleApp) RenderLoop() {
lastRenderTime = time.Now()
for !app.MainWindow.ShouldClose() {
// get the time delta
loopTime := time.Now()
deltaNano := loopTime.Sub(lastRenderTime).Nanoseconds()
deltaF := float64(deltaNano) * (1.0 / float64(time.Second))
// call the Update callback
if app.OnUpdate != nil {
app.OnUpdate(deltaF)
}
// call the Render callback
if app.OnRender != nil {
app.OnRender(deltaF)
}
// draw the screen and get any input
app.MainWindow.SwapBuffers()
glfw.PollEvents()
// update the last render time
lastRenderTime = loopTime
}
}
开发者ID:tbogdala,项目名称:cubez,代码行数:28,代码来源:exampleapp.go
示例9: setScreenSize
func (u *userInterface) setScreenSize(width, height, scale int) bool {
if u.width == width && u.height == height && u.scale == scale {
return false
}
ch := make(chan struct{})
window := u.window
window.SetFramebufferSizeCallback(func(w *glfw.Window, width, height int) {
window.SetFramebufferSizeCallback(nil)
close(ch)
})
window.SetSize(width*scale, height*scale)
for {
done := false
glfw.PollEvents()
select {
case <-ch:
done = true
default:
}
if done {
break
}
}
u.width = width
u.height = height
u.scale = scale
// For retina displays, recalculate the scale with the framebuffer size.
windowWidth, _ := window.GetFramebufferSize()
u.actualScale = windowWidth / width
return true
}
开发者ID:DrJosh9000,项目名称:ebiten,代码行数:34,代码来源:ui_glfw.go
示例10: main
func main() {
if err := glfw.Init(); err != nil {
log.Fatalln("failed to initialize glfw:", err)
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Resizable, glfw.False)
glfw.WindowHint(glfw.ContextVersionMajor, 2)
glfw.WindowHint(glfw.ContextVersionMinor, 1)
window, err := glfw.CreateWindow(800, 600, "Create Window Example", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
window.SetKeyCallback(keypress)
window.SetMouseButtonCallback(mousepress)
gl.Viewport(0, 0, 800, 600)
for !window.ShouldClose() {
draw()
window.SwapBuffers()
glfw.PollEvents()
}
}
开发者ID:buwilliams,项目名称:go2dgame,代码行数:32,代码来源:game.go
示例11: main
func main() {
width := 1024
height := 768
title := "Simple Triangle"
if err := glfw.Init(); err != nil {
log.Fatalln("failed to initialize glfw:", err)
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Samples, 4) // 4x antialiasing
glfw.WindowHint(glfw.ContextVersionMajor, 3) // We want OpenGL 3.3
glfw.WindowHint(glfw.ContextVersionMinor, 3)
glfw.WindowHint(glfw.OpenGLForwardCompatible, glfw.True) // To make MacOS happy; should not be needed
glfw.WindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile) //We don't want the old OpenGL
window, err := glfw.CreateWindow(width, height, title, nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
window.SetKeyCallback(keypress)
window.SetMouseButtonCallback(mousepress)
gl.Viewport(0, 0, 1024, 768)
for !window.ShouldClose() {
draw()
window.SwapBuffers()
glfw.PollEvents()
}
}
开发者ID:buwilliams,项目名称:go2dgame,代码行数:34,代码来源:triangle.go
示例12: main
func main() {
err := glfw.Init()
if err != nil {
panic(err)
}
defer glfw.Terminate()
window, err := glfw.CreateWindow(640, 480, "Testing", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
window.SetKeyCallback(game.OnKey)
game.Init()
for !window.ShouldClose() {
game.Render()
window.SwapBuffers()
glfw.PollEvents()
}
}
开发者ID:Geemili,项目名称:maze-rogue,代码行数:27,代码来源:main.go
示例13: RunVisualization
// Runs the visualization with a set of DelayedNoteData. The DelayedNote data is
// used to push information to the synth as well as represent the data visually.
func RunVisualization(notes *synth.NoteArrangement, oNoteChannel chan synth.DelayedNoteData) error {
window, assets, err := initialize()
if err != nil {
return err
}
defer destroy(window, assets)
// The main update loop.
ct, lt, dt := 0.0, 0.0, 0.0
for !window.ShouldClose() {
// Keeping the current time.
lt = ct
ct = glfw.GetTime()
dt = ct - lt
// Real render loop.
gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)
if config.DebugMode {
glErr := gl.GetError()
if glErr != gl.NO_ERROR {
fmt.Printf("OpenGL error: %d\n", glErr)
}
}
window.SwapBuffers()
glfw.PollEvents()
if dt < 1/1000.0 {
// Delay the thread to keep up w/ updating?
}
}
return nil
}
开发者ID:crockeo,项目名称:go-tuner,代码行数:37,代码来源:main.go
示例14: main
func main() {
if err := glfw.Init(); err != nil {
log.Fatalln("failed to initialize glfw:", err)
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Resizable, glfw.False)
glfw.WindowHint(glfw.ContextVersionMajor, 2)
glfw.WindowHint(glfw.ContextVersionMinor, 1)
window, err := glfw.CreateWindow(640, 480, "tut03", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
t0 := time.Now()
program := initResources()
for {
curFade = float32(math.Sin(time.Now().Sub(t0).Seconds()*2*math.Pi/5)/2 + 0.5)
onDisplay(program)
window.SwapBuffers()
glfw.PollEvents()
}
gl.DeleteProgram(program)
gl.DeleteBuffers(1, &vboTriangle)
}
开发者ID:eklitzke,项目名称:go-opengl-tutorial,代码行数:31,代码来源:main.go
示例15: main
func main() {
if err := glfw.Init(); err != nil {
log.Fatalln("failed to initialize glfw:", err)
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Resizable, glfw.False)
glfw.WindowHint(glfw.ContextVersionMajor, 2)
glfw.WindowHint(glfw.ContextVersionMinor, 1)
window, err := glfw.CreateWindow(800, 600, "Cube", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
if err := gl.Init(); err != nil {
panic(err)
}
texture = newTexture("square.png")
defer gl.DeleteTextures(1, &texture)
setupScene()
for !window.ShouldClose() {
drawScene()
window.SwapBuffers()
glfw.PollEvents()
}
}
开发者ID:rdterner,项目名称:examples,代码行数:29,代码来源:cube.go
示例16: 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()
}
}
开发者ID:cstegel,项目名称:opengl-samples-golang,代码行数:28,代码来源:hello_triangle.go
示例17: Run
func Run(g *Game) error {
if g.Scene == nil {
return fmt.Errorf("Scene property of given Game struct is empty")
}
// GLFW event handling must run on the main OS thread
runtime.LockOSThread()
if err := glfw.Init(); err != nil {
return fmt.Errorf("glfw.Init failed: %s", err)
}
defer glfw.Terminate()
glfw.WindowHint(glfw.ContextVersionMajor, OpenGLVerMinor)
glfw.WindowHint(glfw.ContextVersionMinor, OpenGLVerMinor)
glfw.WindowHint(glfw.Resizable, glfw.False)
if g.Resizable {
glfw.WindowHint(glfw.Resizable, glfw.True)
}
glfw.WindowHint(glfw.OpenGLProfile, glfw.OpenGLCoreProfile)
glfw.WindowHint(glfw.OpenGLForwardCompatible, glfw.True)
window, err := glfw.CreateWindow(int(g.Width), int(g.Height), g.Title, nil, nil)
if err != nil {
return fmt.Errorf("glfw.CreateWindow failed: %s", err)
}
window.MakeContextCurrent()
// Initialize Glow
if err := gl.Init(); err != nil {
return fmt.Errorf("gl.Init failed:", err)
}
version := gl.GoStr(gl.GetString(gl.VERSION))
log.Println("gl.Init successful, OpenGL version:", version)
var previousTime, deltaTime, time float32
previousTime = float32(glfw.GetTime()) - 1.0/60.0
g.Scene.Setup()
for !window.ShouldClose() {
time = float32(glfw.GetTime())
deltaTime = time - previousTime
glfw.PollEvents()
gl.ClearColor(0.2, 0.3, 0.3, 0.5)
gl.Clear(gl.COLOR_BUFFER_BIT)
g.Scene.Update(deltaTime)
g.Scene.Draw(deltaTime)
previousTime = time
window.SwapBuffers()
}
return nil
}
开发者ID:vinzBad,项目名称:grid,代码行数:60,代码来源:grid.go
示例18: main
func main() {
err := glfw.Init()
if err != nil {
panic(err)
}
defer glfw.Terminate()
w, err := glfw.CreateWindow(640, 480, "Testing", nil, nil)
if err != nil {
panic(err)
}
w.MakeContextCurrent()
glfw.SwapInterval(1)
w.SetCharCallback(charCallBack)
if err := gl.Init(); err != nil {
panic(err)
}
setupScene(w)
fmt.Println("Press 'q' to quit")
for !w.ShouldClose() {
// Do OpenGL stuff.
time.Sleep(10 * time.Millisecond)
drawScene(w)
w.SwapBuffers()
glfw.PollEvents()
}
}
开发者ID:rdterner,项目名称:gl,代码行数:32,代码来源:demo.go
示例19: main
func main() {
flag.Parse()
go func() {
http.ListenAndServe("localhost:6060", nil)
}()
if err := glfw.Init(); err != nil {
log.Fatalln("failed to initialize glfw:", err)
}
defer glfw.Terminate()
glfw.WindowHint(glfw.Resizable, glfw.True)
glfw.WindowHint(glfw.Visible, glfw.False) // do not steal focus
glfw.WindowHint(glfw.ContextVersionMajor, 2)
glfw.WindowHint(glfw.ContextVersionMinor, 1)
window, err := glfw.CreateWindow(800, 600, "Spector", nil, nil)
if err != nil {
panic(err)
}
window.MakeContextCurrent()
window.Restore()
window.SetPos(32, 64)
if err := gl.Init(); err != nil {
panic(err)
}
state := NewState()
for !window.ShouldClose() {
if window.GetKey(glfw.KeyEscape) == glfw.Press {
return
}
if window.GetKey(glfw.KeyR) == glfw.Press {
state.Stop()
state = NewState()
}
start := time.Now()
state.Update(1.0 / 60.0)
updateTime := time.Since(start)
start = time.Now()
state.Render(window)
renderTime := time.Since(start)
text := fmt.Sprintf("update: %.2fms render: %.2fms",
float32(updateTime)/float32(time.Millisecond),
float32(renderTime)/float32(time.Millisecond))
w, h := window.GetSize()
state.Backend.SetFontColor(ui.ColorHex(0xFF0000FF))
size := state.Backend.Measure(text)
state.Backend.Text(text, ui.Block(float32(w)-size.X, float32(h)-size.Y, size.X, size.Y))
window.SwapBuffers()
glfw.PollEvents()
}
}
开发者ID:egonelbre,项目名称:spector,代码行数:60,代码来源:main.go
示例20: EventLoop
func EventLoop() bool {
glfw.PollEvents()
if window.ShouldClose() {
return false
}
return running
}
开发者ID:hialin,项目名称:hialin,代码行数:7,代码来源:setup.go
注:本文中的github.com/go-gl/glfw/v3/1/glfw.PollEvents函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论