问题
I am trying following simple code to create a GUI using Fyne package:
// from: https://github.com/fyne-io/fyne
package main
import (
"fyne.io/fyne/widget"
"fyne.io/fyne/app"
)
func main() {
app := app.New()
w := app.NewWindow("Hello")
w.SetContent(widget.NewVBox(
widget.NewLabel("Hello Fyne!"),
widget.NewButton("Quit", func() {
app.Quit()
}),
))
w.ShowAndRun()
}
It compiles and builds executable file without any error or even warning, but on trying to run it gives following error:
I:\>rnfynetest
2019/08/25 12:37:18 Fyne error: failed to initialise OpenGL
2019/08/25 12:37:18 Cause: glBeginConditionalRender
2019/08/25 12:37:18 At: C:/Users/ABCD/go/src/fyne.io/fyne/internal/driver/gl/window.go:1007
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x2c pc=0x572afd]
goroutine 1 [running, locked to thread]:
fyne.io/fyne/internal/driver/gl.(*window).SetContent(0x0, 0x8fc5e0, 0x1386e0c0)
C:/Users/ABCD/go/src/fyne.io/fyne/internal/driver/gl/window.go:361 +0x1d
main.main()
I:/rnfynetest.go:10 +0x1ce
As given on Fyne homepage I need to install OpenGL. From go bindings for OpenGL it seems there are three ways to install it:
go get -u github.com/go-gl/gl/v{3.2,3.3,4.1,4.2,4.3,4.4,4.5,4.6}-{core,compatibility}/gl
go get -u github.com/go-gl/gl/v3.1/gles2
go get -u github.com/go-gl/gl/v2.1/gl
Which of these commands do I need to use? I am working on Windows7
and using go version go1.12.9 windows/386
Thanks for your help.
Edit:
I tried following commands:
go get -u github.com/go-gl/gl/v2.1/gl
go get -u github.com/go-gl/gl/v4.6-core/gl
go get -u github.com/go-gl/gl/v4.6-compatibility/gl
They all install all right but same error is persisting on trying to run built executable.
I also tried gles2 but it does not install rather gives following error:
I:\>go get -u github.com/go-gl/gl/v3.1/gles2
# github.com/go-gl/gl/v3.1/gles2
C:\Users\ABCD\go\src\github.com\go-gl\gl\v3.1\gles2\package.go:38:11: fatal error: KHR/khrplatform.h: No such file or directory
// #include <KHR/khrplatform.h>
^~~~~~~~~~~~~~~~~~~
compilation terminated.
回答1:
The OpenGL libraries typically come from your graphics card drivers, and looks like Fyne-io needs fairly new Graphics Card Drivers. (It uses OpenGL 3.2 which was released around 2009 It uses OpenGL 2.0). So you can try to:
- Use a Software Implementation of OpenGL using the Mesa project, which should be "good enough" for most desktop apps use cases - more details here: https://fdossena.com/?p=mesa/index.frag
Or
- Update your Graphics Card drivers - If they are available for your hardware, to get GPU accelerated OpenGL. Definitely try this this if you are planning on making a graphics intensive application).
Edit: Updated the version of the OpenGL context Fyne uses
来源:https://stackoverflow.com/questions/57643992/how-to-install-opengl-for-this-to-run