app/internal/d3d11: add Direct3D backend

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2020-02-15 19:26:16 +01:00
parent d65bfdc275
commit e03b3cd808
10 changed files with 2431 additions and 44 deletions
+30
View File
@@ -6,6 +6,7 @@ import (
"errors"
"image"
"runtime"
"sort"
"sync"
"time"
"unicode"
@@ -42,6 +43,15 @@ const _WM_REDRAW = windows.WM_USER + 0
var onceMu sync.Mutex
var mainDone = make(chan struct{})
// backends is the list of potential Context
// implementations.
var backends []gpuAPI
type gpuAPI struct {
priority int
initializer func(w *window) (Context, error)
}
func Main() {
<-mainDone
}
@@ -345,6 +355,26 @@ func (w *window) destroy() {
}
}
func (w *window) NewContext() (Context, error) {
sort.Slice(backends, func(i, j int) bool {
return backends[i].priority < backends[j].priority
})
var cerr error
for _, b := range backends {
ctx, err := b.initializer(w)
if err == nil {
return ctx, nil
}
if cerr == nil {
cerr = err
}
}
if cerr != nil {
return nil, cerr
}
return nil, errors.New("NewContext: no available backends")
}
func (w *window) ShowTextInput(show bool) {}
func (w *window) HDC() syscall.Handle {