diff --git a/doc.go b/doc.go index aebd8ad2f..efdfd886f 100644 --- a/doc.go +++ b/doc.go @@ -93,11 +93,6 @@ // The option "featurelevel" is valid only for DirectX 12. // The possible values are "11_0", "11_1", "12_0", "12_1", and "12_2". The default value is "11_0". // -// `EBITENGINE_OPENGL` environment variable specifies various parameters for OpenGL. -// You can specify multiple values separated by a comma. The default value is empty (i.e. no parameters). -// -// "es": Use OpenGL ES. Without this, OpenGL and OpenGL ES are automatically chosen. -// // # Build tags // // `ebitenginedebug` outputs a log of graphics commands. This is useful to know what happens in Ebitengine. In general, the diff --git a/internal/graphicsdriver/opengl/gl/procaddr_linbsd.go b/internal/graphicsdriver/opengl/gl/procaddr_linbsd.go index c41c18ef8..e7e869ff5 100644 --- a/internal/graphicsdriver/opengl/gl/procaddr_linbsd.go +++ b/internal/graphicsdriver/opengl/gl/procaddr_linbsd.go @@ -18,8 +18,6 @@ package gl import ( "fmt" - "os" - "runtime" "strings" "github.com/ebitengine/purego" @@ -31,40 +29,10 @@ var ( ) func (c *defaultContext) init() error { - var preferES bool - if runtime.GOOS == "android" { - preferES = true - } - if !preferES { - for _, t := range strings.Split(os.Getenv("EBITENGINE_OPENGL"), ",") { - switch strings.TrimSpace(t) { - case "es": - preferES = true - break - } - } - } - // TODO: Use multiple %w-s as of Go 1.20. var errors []string - // Try OpenGL first. OpenGL is preferable as this doesn't cause context losses. - if !preferES { - // Usually libGL.so or libGL.so.1 is used. libGL.so.2 might exist only on NetBSD. - // TODO: Should "libOpenGL.so.0" [1] and "libGLX.so.0" [2] be added? These were added as of GLFW 3.3.9. - // [1] https://github.com/glfw/glfw/commit/55aad3c37b67f17279378db52da0a3ab81bbf26d - // [2] https://github.com/glfw/glfw/commit/c18851f52ec9704eb06464058a600845ec1eada1 - for _, name := range []string{"libGL.so", "libGL.so.2", "libGL.so.1", "libGL.so.0"} { - lib, err := purego.Dlopen(name, purego.RTLD_LAZY|purego.RTLD_GLOBAL) - if err == nil { - libGL = lib - return nil - } - errors = append(errors, fmt.Sprintf("%s: %v", name, err)) - } - } - - // Try OpenGL ES. + // Try OpenGL ES first. Some machines like Android and Raspberry Pi might work only with OpenGL ES. for _, name := range []string{"libGLESv2.so", "libGLESv2.so.2", "libGLESv2.so.1", "libGLESv2.so.0"} { lib, err := purego.Dlopen(name, purego.RTLD_LAZY|purego.RTLD_GLOBAL) if err == nil { @@ -75,6 +43,20 @@ func (c *defaultContext) init() error { errors = append(errors, fmt.Sprintf("%s: %v", name, err)) } + // Try OpenGL next. + // Usually libGL.so or libGL.so.1 is used. libGL.so.2 might exist only on NetBSD. + // TODO: Should "libOpenGL.so.0" [1] and "libGLX.so.0" [2] be added? These were added as of GLFW 3.3.9. + // [1] https://github.com/glfw/glfw/commit/55aad3c37b67f17279378db52da0a3ab81bbf26d + // [2] https://github.com/glfw/glfw/commit/c18851f52ec9704eb06464058a600845ec1eada1 + for _, name := range []string{"libGL.so", "libGL.so.2", "libGL.so.1", "libGL.so.0"} { + lib, err := purego.Dlopen(name, purego.RTLD_LAZY|purego.RTLD_GLOBAL) + if err == nil { + libGL = lib + return nil + } + errors = append(errors, fmt.Sprintf("%s: %v", name, err)) + } + return fmt.Errorf("gl: failed to load libGL.so and libGLESv2.so: %s", strings.Join(errors, ", ")) }