瀏覽代碼

webgl: Request WebGL 2.0 context, fall back to WebGL 1.0

rdb 4 年之前
父節點
當前提交
1d7235f7db

+ 7 - 1
panda/src/webgldisplay/webGLGraphicsStateGuardian.cxx

@@ -64,13 +64,19 @@ choose_pixel_format(const FrameBufferProperties &properties,
   attribs.alpha = (properties.get_alpha_bits() > 0);
   attribs.alpha = (properties.get_alpha_bits() > 0);
   attribs.depth = (properties.get_depth_bits() > 0);
   attribs.depth = (properties.get_depth_bits() > 0);
   attribs.stencil = (properties.get_stencil_bits() > 0);
   attribs.stencil = (properties.get_stencil_bits() > 0);
-  attribs.majorVersion = 1;
+  attribs.majorVersion = 2;
   attribs.minorVersion = 0;
   attribs.minorVersion = 0;
   attribs.enableExtensionsByDefault = false;
   attribs.enableExtensionsByDefault = false;
 
 
   EMSCRIPTEN_WEBGL_CONTEXT_HANDLE result;
   EMSCRIPTEN_WEBGL_CONTEXT_HANDLE result;
   result = emscripten_webgl_create_context(target, &attribs);
   result = emscripten_webgl_create_context(target, &attribs);
 
 
+  if (result <= 0) {
+    // Fall back to WebGL 1.
+    attribs.majorVersion = 1;
+    result = emscripten_webgl_create_context(target, &attribs);
+  }
+
   if (result > 0) {
   if (result > 0) {
     _context = result;
     _context = result;
     _have_context = true;
     _have_context = true;

+ 4 - 0
panda/src/webgldisplay/webGLGraphicsWindow.cxx

@@ -303,6 +303,10 @@ open_window() {
     //}
     //}
   }
   }
 
 
+  if (!webgl_gsg->_have_context) {
+    return false;
+  }
+
   if (_properties.has_size() && _properties.get_size() != LVecBase2i(1, 1)) {
   if (_properties.has_size() && _properties.get_size() != LVecBase2i(1, 1)) {
     emscripten_set_canvas_element_size(target, _properties.get_x_size(), _properties.get_y_size());
     emscripten_set_canvas_element_size(target, _properties.get_x_size(), _properties.get_y_size());
   } else {
   } else {