anchor.diff:    gameLoop.start();
   }
   
  +void updateCulling(RenderingContext gl, bool culling) {
  +  if (culling) {
  +    log("backface culling: ON");
  +
  +    gl.frontFace(RenderingContext.CCW);
  +    gl.cullFace(RenderingContext.BACK);
  +    gl.enable(RenderingContext.CULL_FACE);
  +    return;
  +  }
  +
  +  log("backface culling: OFF");
  +  gl.disable(RenderingContext.CULL_FACE);
  +}
  +
  +int get ext_get_element_type {
  +  if (ext_element_uint) {
  +    return RenderingContext.UNSIGNED_INT;
  +  }
  +
  +  return RenderingContext.UNSIGNED_SHORT;
  +}
  +
  +void detect_element_uint(RenderingContext gl) {
  +  String extName = "OES_element_index_uint";
  +  OesElementIndexUint ext;
  +
  +  try {
  +    ext = gl.getExtension(extName);
  +  } catch (exc) {
  +    log("gl.getExtension('$extName') exception: $exc");
  +  }
  +
  +  ext_element_uint = ext != null;
  +
  +  log("gl.getExtension('$extName'): available = $ext_element_uint");
  +}
  +
  +
   void fetchObj(String objURL) {
     
     void handleObjResponse(String objString) {
  
positive.code:     Obj obj = new Obj.fromString(objURL, objString,
          defaultName: "noname",
          fillMissingTextCoord: true,
          printStats: true,
          debugPrintParts: true);
      
      String mtlURL = obj.mtllib;
  
  
negative.code: """;
  
  Stats stats;
  bool ext_element_uint = false;
  
  void main() {
    log("main: begin");
  