return aDevicePixelRatio;
});
+ /*EM_JS(void, jsSetOcctCamera, (float theFOV, float theAspect, float theNear, float theFar), {
+ setOcctCamera();
+ });*/
+
+ EM_JS(void, jsPostFrameRender, (), {
+ postFrameRender();
+ });
+
//! Return cavas size in pixels.
static Graphic3d_Vec2i jsCanvasSize()
{
const Handle(V3d_View)& theView)
{
myUpdateRequests = 0;
+
+ theView->Invalidate(); /// Three.js cannot be rendered properly without full redraw
+ glEnable (GL_POLYGON_OFFSET_FILL); /// reset defaults Graphic3d_PolygonOffset after Three.js
+ glPolygonOffset (1.0f, 1.0f);
+
AIS_ViewController::handleViewRedraw (theCtx, theView);
+ jsPostFrameRender();
if (myToAskNextFrame)
{
// ask more frames
<div><label for="fileInput">Choose BREP file to upload: </label><input type="file" id="fileInput" accept=".brep"></div>\r
<h4>Console output:</h4>\r
<p id="output"></p>\r
+<script src="three.min.js"></script>\r
<script>\r
//! Resize canvas to fit into window.\r
function updateCanvasSize()\r
{\r
var anElement = document.getElementById('output');\r
anElement.innerHTML += "Browser is too old - WebAssembly support is missing!<br>Please check updates or install a modern browser.<br>";\r
+ throw new Error();\r
}\r
\r
//! Define OCCT WebGL Viewer module.\r
})()\r
};\r
\r
+var aCanvas = document.getElementById ('canvas');\r
+var aGlCtx = aCanvas.getContext ('webgl2', { alpha: false, depth: true, antialias: false, preserveDrawingBuffer: true } );\r
+if (aGlCtx == null)\r
+{\r
+ aGlCtx = aCanvas.getContext ('webgl', { alpha: false, depth: true, antialias: false, preserveDrawingBuffer: true } );\r
+}\r
+var aScene = new THREE.Scene();\r
+var aCamera = new THREE.PerspectiveCamera (75, window.innerWidth / window.innerHeight);\r
+//var aRenderer = new THREE.WebGLRenderer ({antialias: true});\r
+var aRenderer = new THREE.WebGLRenderer ({antialias: false, canvas: aCanvas, context: aGlCtx});\r
+aRenderer.autoClear = false;\r
+aRenderer.autoClearColor = false;\r
+aRenderer.autoClearDepth = false;\r
+aRenderer.autoClearStencil = false;\r
+aRenderer.setSize (window.innerWidth,window.innerHeight);\r
+//document.body.appendChild (aRenderer.domElement);\r
+var aGeom = new THREE.BoxGeometry (1,1,1);\r
+var aMat = new THREE.MeshBasicMaterial ({color: 0xff0000});\r
+var aCube = new THREE.Mesh (aGeom, aMat);\r
+aScene.add (aCube);\r
+aCube.position.z = -5; aCube.rotation.x = 10; aCube.rotation.y = 5;\r
+/*aRenderer.render (aScene, aCamera);\r
+var anAnimate = function(){\r
+ aCube.rotation.x += 0.01;\r
+ aRenderer.state.reset();\r
+ aRenderer.render (aScene, aCamera);\r
+ requestAnimationFrame (anAnimate);\r
+}\r
+anAnimate();*/\r
+\r
+function postFrameRender()\r
+{\r
+ //console.log("postFrameRender()"); ///\r
+ //aCamera.\r
+ aRenderer.state.reset();\r
+ aRenderer.render (aScene, aCamera)\r
+}\r
+\r
//! Handle file uploading.\r
fileInput.onchange = function()\r
{\r