<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Have updated code. Load button appears in upper left.  You need to press it several times to get the bugs to appear.  Added the prototype expander for X3DOM, so scenes should now be identical.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Saturday, March 17, 2018 8:57 PM<br><b>To: </b><a href="mailto:holger.seelig@yahoo.de">Holger Seelig</a>; <a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>; <a href="mailto:andreasplesch@gmail.com">Andreas Plesch</a>; <a href="mailto:x3dom-users@lists.sourceforge.net">x3dom mlist</a><br><b>Subject: </b>RE: loading X3DOM and X_ITE on same page. Conflicts with framebuffers? [was: RE: JSON parser]</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Note that X3DOM has some errors that I think Andreas has proposed a patch for at a previous time. Perhaps we can get a patch into the dev branch?<o:p></o:p></p><p class=MsoNormal>I am not sure what the effect of fixing these would be, but we could try?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Note that I can’t get X_ITE to error out with only X_ITE canvases.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Can we get some coordination, Perhaps?  Or at least stop chewing up WebGL contexts when there’s only 4 canvases on a page where the world or DOM is being replaced?   Is there a better Browser API for x3dom?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’m not saying my code is perfect, or that I’ve even read the documentation.  Mostly this is guesswork and looking and examples on my part.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Uncaught TypeError: Cannot read property 'position' of undefined<o:p></o:p></p><p class=MsoNormal>    at Context.x3dom.gfx_webgl.Context.shutdown (x3dom-full.debug.js:28115)<o:p></o:p></p><p class=MsoNormal>    at x3dom.X3DDocument.shutdown (x3dom-full.debug.js:13211)<o:p></o:p></p><p class=MsoNormal>    at Element.onNodeRemoved (x3dom-full.debug.js:12736)<o:p></o:p></p><p class=MsoNormal>    at Ie (jquery-3.3.1.min.js:2)<o:p></o:p></p><p class=MsoNormal>    at w.fn.init.remove (jquery-3.3.1.min.js:2)<o:p></o:p></p><p class=MsoNormal>    at loaderJQuery.js:410<o:p></o:p></p><p class=MsoNormal>    at X3DJSONLD.js:550<o:p></o:p></p><p class=MsoNormal>    at doValidate (loaderJQuery.js:698)<o:p></o:p></p><p class=MsoNormal>    at Object.success (loaderJQuery.js:736)<o:p></o:p></p><p class=MsoNormal>    at u (jquery-3.3.1.min.js:2)<o:p></o:p></p><p class=MsoNormal>x3dom-full.debug.js:28115 Uncaught TypeError: Cannot read property 'position' of undefined<o:p></o:p></p><p class=MsoNormal>    at Context.x3dom.gfx_webgl.Context.shutdown (x3dom-full.debug.js:28115)<o:p></o:p></p><p class=MsoNormal>    at x3dom.X3DDocument.shutdown (x3dom-full.debug.js:13211)<o:p></o:p></p><p class=MsoNormal>    at HTMLUnknownElement.onNodeRemoved (x3dom-full.debug.js:12736)<o:p></o:p></p><p class=MsoNormal>    at loadXmlBrowsers (loaderJQuery.js:85)<o:p></o:p></p><p class=MsoNormal>    at loaderJQuery.js:282<o:p></o:p></p><p class=MsoNormal>    at loaderJQuery.js:419<o:p></o:p></p><p class=MsoNormal>    at X3DJSONLD.js:550<o:p></o:p></p><p class=MsoNormal>    at doValidate (loaderJQuery.js:698)<o:p></o:p></p><p class=MsoNormal>    at Object.success (loaderJQuery.js:736)<o:p></o:p></p><p class=MsoNormal>    at u (jquery-3.3.1.min.js:2)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Saturday, March 17, 2018 8:31 PM<br><b>To: </b><a href="mailto:holger.seelig@yahoo.de">Holger Seelig</a>; <a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>; <a href="mailto:andreasplesch@gmail.com">Andreas Plesch</a><br><b>Subject: </b>loading X3DOM and X_ITE on same page. Conflicts with frame buffers? [was: RE: JSON parser]<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Okay, I have a smaller example here:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>https://coderextreme.net/X3DJSONLD/src/main/html/flipper2.html<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>(press the Load button several times…it might be in the lower left corner.)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>X_ITE seems to bail out here:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>x_ite.js:77145 Error: Couldn't create frame buffer.<o:p></o:p></p><p class=MsoNormal>    at new DepthBuffer (x_ite.js:51297)<o:p></o:p></p><p class=MsoNormal>    at Layer.X3DRenderObject (x_ite.js:77141)<o:p></o:p></p><p class=MsoNormal>    at Layer.X3DLayerNode [as constructor] (x_ite.js:80092)<o:p></o:p></p><p class=MsoNormal>    at new Layer (x_ite.js:80560)<o:p></o:p></p><p class=MsoNormal>    at new LayerSet (x_ite.js:80674)<o:p></o:p></p><p class=MsoNormal>    at new World (x_ite.js:80897)<o:p></o:p></p><p class=MsoNormal>    at X3DBrowser.setExecutionContext (x_ite.js:81220)<o:p></o:p></p><p class=MsoNormal>    at X3DBrowser.replaceWorld (x_ite.js:114277)<o:p></o:p></p><p class=MsoNormal>    at loaderJQuery.js:222<o:p></o:p></p><p class=MsoNormal>    at fire (x_ite.js:5425)<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Any ideas?  Ideally, it would reuse the DepthBuffer of the old world, I would hope.  Not really sure though.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John<o:p></o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Saturday, March 17, 2018 8:09 PM<br><b>To: </b><a href="mailto:holger.seelig@yahoo.de">Holger Seelig</a><br><b>Subject: </b>RE: JSON parser<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’ve tried duplicating with 2 canvases and XML and JS loaders without success.  Will try full X3DOM and X_ITE next.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Sent: </b>Saturday, March 17, 2018 7:54 PM<br><b>To: </b><a href="mailto:holger.seelig@yahoo.de">Holger Seelig</a><br><b>Subject: </b>RE: JSON parser<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Holger, have you tried these APIs with more than 16 or so invocations…enough to fill the number of WebGL contexts? On a single web page?  I start getting black canvases as I reload 2 different browser canvases with different worlds.   This applied to previous versions of X_ITE and Cobweb as well.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>See: <a href="https://coderextreme.net/X3DJSONLD/src/main/html/index.html">https://coderextreme.net/X3DJSONLD/src/main/html/index.html</a> (select 5 or so items from the pulldown in succession).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This would be a great boon to my development if we could solve this. I wouldn’t have to reload the page.  It’s getting to the point with EXI, etc. that I am running out of WebGL contexts rapidly, I think, and X_ITE or X3DOM should reclaim them (it looks like X3DOM does, but not sure if it gives them to X_ITE).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Or whatever is going on.   Please advise if you’ve seen it before with these APIs.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>John<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Sent from <a href="https://go.microsoft.com/fwlink/?LinkId=550986">Mail</a> for Windows 10<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From: </b><a href="mailto:holger.seelig@yahoo.de">Holger Seelig</a><br><b>Sent: </b>Wednesday, March 14, 2018 1:36 PM<br><b>To: </b><a href="mailto:yottzumm@gmail.com">John Carlson</a><br><b>Subject: </b>Re: JSON parser<o:p></o:p></p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thank you for your mail,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I created a test page which will test all three cases following your <o:p></o:p></p><p class=MsoNormal>examles. The page works well in Chrome and Firefox and will also work in <o:p></o:p></p><p class=MsoNormal>Edge.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Have also tested your JSON loader with some special files (PROTO, IMPORT <o:p></o:p></p><p class=MsoNormal>EXPORT ...) and everything is fine.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Best regards,<o:p></o:p></p><p class=MsoNormal>Holger<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Am 04.03.2018 um 13:52 schrieb John Carlson:<o:p></o:p></p><p class=MsoNormal>> These are my interfaces to X_ITE from JavaScript.  At least 2 of these <o:p></o:p></p><p class=MsoNormal>> get stuck loading.  As far as I know, these work with 4.1.3.<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> John<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> function load_X_ITE_XML(content) {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>          X3D(function() {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                  var browser = X3D.getBrowser("#x_itexml");<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                  browser.replaceWorld(browser.createX3DFromString(content));<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>          }, function() {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                  alert("Failed to render XML to X_ITE");<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>          });<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> }<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> function load_X_ITE_DOM(element, browserSelector) {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>          X3D(function() {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                  if (typeof X3D.getBrowser !== 'undefined') {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                          var browser = X3D.getBrowser("#x_itedom");<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                          if (typeof browser !== 'undefined' && typeof <o:p></o:p></p><p class=MsoNormal>> browser.importDocument !== 'undefined') {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                                  var importedScene = <o:p></o:p></p><p class=MsoNormal>> browser.importDocument(element);<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                                  browser.replaceWorld(importedScene);<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                          }<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                  }<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>          }, function() {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                  alert("Failed to render DOM to X_ITE");<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>          });<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> }<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> function load_X_ITE_JS(jsobj, browserSelector) {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>          X3D(function() {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                  if (typeof X3D.getBrowser !== 'undefined') {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                          var browser = X3D.getBrowser("#x_itejson");<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                          if (typeof browser !== 'undefined' && typeof <o:p></o:p></p><p class=MsoNormal>> browser.importJS !== 'undefined') {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                                  var importedScene = <o:p></o:p></p><p class=MsoNormal>> browser.importJS(jsobj);<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                                  browser.replaceWorld(importedScene);<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                          }<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                  }<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>          }, function() {<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>                  alert("Failed to render JSON to X_ITE");<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>>          });<o:p></o:p></p><p class=MsoNormal>> <o:p></o:p></p><p class=MsoNormal>> }<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>