| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- //go:build js && !wasm
- // +build js,!wasm
- package glfw
- import (
- "errors"
- "github.com/gopherjs/gopherjs/js"
- )
- func newContext(canvas *js.Object, ca *contextAttributes) (context *js.Object, err error) {
- if js.Global.Get("WebGLRenderingContext") == js.Undefined {
- return nil, errors.New("Your browser doesn't appear to support WebGL.")
- }
- attrs := map[string]bool{
- "alpha": ca.Alpha,
- "depth": ca.Depth,
- "stencil": ca.Stencil,
- "antialias": ca.Antialias,
- "premultipliedAlpha": ca.PremultipliedAlpha,
- "preserveDrawingBuffer": ca.PreserveDrawingBuffer,
- "preferLowPowerToHighPerformance": ca.PreferLowPowerToHighPerformance,
- "failIfMajorPerformanceCaveat": ca.FailIfMajorPerformanceCaveat,
- }
- if gl := canvas.Call("getContext", "webgl", attrs); gl != nil {
- return gl, nil
- } else if gl := canvas.Call("getContext", "experimental-webgl", attrs); gl != nil {
- return gl, nil
- } else {
- return nil, errors.New("Creating a WebGL context has failed.")
- }
- }
- type contextAttributes struct {
- Alpha bool
- Depth bool
- Stencil bool
- Antialias bool
- PremultipliedAlpha bool
- PreserveDrawingBuffer bool
- PreferLowPowerToHighPerformance bool
- FailIfMajorPerformanceCaveat bool
- }
- func defaultAttributes() *contextAttributes {
- return &contextAttributes{
- Alpha: false,
- Depth: true,
- Stencil: false,
- Antialias: false,
- PremultipliedAlpha: false,
- PreserveDrawingBuffer: false,
- }
- }
|