mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-11 19:48:54 +01:00
internal/ui: use DirectX as a fallback for old Windows
Initializing OpenGL can fail [1], though this is pretty rare. For such this case, try DirectX as a fallback. [1] https://answers.microsoft.com/en-us/windows/forum/all/my-drivers-dont-support-opengl/a1ee0267-4dc8-4385-a185-6ed322d78329 Updates #2613
This commit is contained in:
parent
370b7599bc
commit
1999f8a024
@ -37,21 +37,36 @@ type graphicsDriverCreatorImpl struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *graphicsDriverCreatorImpl) newAuto() (graphicsdriver.Graphics, GraphicsLibrary, error) {
|
func (g *graphicsDriverCreatorImpl) newAuto() (graphicsdriver.Graphics, GraphicsLibrary, error) {
|
||||||
// Creating a swap chain on an older machines than Windows 10 might fail (#2613).
|
|
||||||
var dxErr error
|
var dxErr error
|
||||||
|
var glErr error
|
||||||
if winver.IsWindows10OrGreater() {
|
if winver.IsWindows10OrGreater() {
|
||||||
d, err := g.newDirectX()
|
d, err := g.newDirectX()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return d, GraphicsLibraryDirectX, nil
|
return d, GraphicsLibraryDirectX, nil
|
||||||
}
|
}
|
||||||
dxErr = err
|
dxErr = err
|
||||||
}
|
|
||||||
|
|
||||||
o, err := g.newOpenGL()
|
o, err := g.newOpenGL()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
return o, GraphicsLibraryOpenGL, nil
|
return o, GraphicsLibraryOpenGL, nil
|
||||||
|
}
|
||||||
|
glErr = err
|
||||||
|
} else {
|
||||||
|
// Creating a swap chain on an older machines than Windows 10 might fail (#2613).
|
||||||
|
// Prefer OpenGL to DirectX.
|
||||||
|
o, err := g.newOpenGL()
|
||||||
|
if err == nil {
|
||||||
|
return o, GraphicsLibraryOpenGL, nil
|
||||||
|
}
|
||||||
|
glErr = err
|
||||||
|
|
||||||
|
// Initializing OpenGL can fail, though this is pretty rare.
|
||||||
|
d, err := g.newDirectX()
|
||||||
|
if err == nil {
|
||||||
|
return d, GraphicsLibraryDirectX, nil
|
||||||
|
}
|
||||||
|
dxErr = err
|
||||||
}
|
}
|
||||||
glErr := err
|
|
||||||
|
|
||||||
return nil, GraphicsLibraryUnknown, fmt.Errorf("ui: failed to choose graphics drivers: DirectX: %v, OpenGL: %v", dxErr, glErr)
|
return nil, GraphicsLibraryUnknown, fmt.Errorf("ui: failed to choose graphics drivers: DirectX: %v, OpenGL: %v", dxErr, glErr)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user