我想以我的畫布分辨率的兩倍渲染場景,然後在顯示它之前將其縮小。我將如何使用threejs做到這一點?用threejs的超級樣本抗鋸齒
8
A
回答
-1
下面介紹瞭如何解決這個問題:在您的three.js初始化代碼中,當您創建渲染器時,將它的主要畫布的尺寸加倍,並將其設置爲渲染到次要的隱藏畫布元素的大小是您主要畫布的兩倍。在輔助畫布上執行必要的圖像處理,然後在主畫布上顯示結果。
5
這是我的解決方案。來源評論應該解釋發生了什麼。設置(INIT):
var renderer;
var composer;
var renderModel;
var effectCopy;
renderer = new THREE.WebGLRenderer({canvas: canvas});
// Disable autoclear, we do this manually in our animation loop.
renderer.autoClear = false;
// Double resolution (twice the size of the canvas)
var sampleRatio = 2;
// This render pass will render the big result.
renderModel = new THREE.RenderPass(scene, camera);
// Shader to copy result from renderModel to the canvas
effectCopy = new THREE.ShaderPass(THREE.CopyShader);
effectCopy.renderToScreen = true;
// The composer will compose a result for the actual drawing canvas.
composer = new THREE.EffectComposer(renderer);
composer.setSize(canvasWidth * sampleRatio, canvasHeight * sampleRatio);
// Add passes to the composer.
composer.addPass(renderModel);
composer.addPass(effectCopy);
改變動畫環路:
// Manually clear you canvas.
renderer.clear();
// Tell the composer to produce an image for us. It will provide our renderer with the result.
composer.render();
注:EffectComposer,RenderPass,ShaderPass和CopyShader不是默認three.js所文件的一部分。除了three.js,你還必須包含它們。在寫這篇文章的時候,他們可以在示例文件夾下的threejs項目中找到:
/examples/js/postprocessing/EffectComposer.js
/examples/js/postprocessing/RenderPass.js
/examples/js/postprocessing/ShaderPass.js
/examples/js/shaders/CopyShader.js
1
對我來說,最好的辦法有沒有太多的工作完美的AA(見下面的代碼) PS:如果你增加超過2它的開始太尖銳
renderer = new THREE.WebGLRenderer({antialiasing:true});
renderer.setPixelRatio(window.devicePixelRatio * 1.5);
相關問題
- 1. Font.createFont +抗鋸齒
- 2. 抗鋸齒上CAShapeLayers
- 3. iOS - CAShapeLayer抗鋸齒?
- 4. 抗鋸齒與GL_TRIANGLE_FAN
- 5. 抗鋸齒算法
- 6. CAShapeLayer禁用抗鋸齒
- 7. 抗鋸齒/多重採樣在D3D9
- 8. 關於Skia的抗鋸齒
- 9. ILNumerics中的抗鋸齒
- 10. 抗鋸齒的JWindow(形狀)
- 11. CALayer的抗鋸齒圖紙
- 12. ggplot導出的抗鋸齒
- 13. OpenGL超採樣反鋸齒?
- 14. 強制抗鋸齒EMF
- 15. Cocos2d HTML5關閉抗鋸齒
- 16. 抗鋸齒像素渲染
- 17. Pyglet OpenGL繪圖抗鋸齒
- 18. 繪製emf抗鋸齒
- 19. Imagemagick抗鋸齒文字
- 20. 呈現抗鋸齒螺旋
- 21. 禁用Graphics.FillRectangle的抗鋸齒功能?
- 22. 使用CATransform3DRotate時的抗鋸齒行
- 23. 抗鋸齒的UIImage看起來模糊或鋸齒狀
- 24. 使用Xlib啓用抗鋸齒
- 25. 抗鋸齒文本不抗鋸齒和的ClearType文本在窗口非常難看形成
- 26. 如何使用抗鋸齒輸出GraphicsRow?
- 27. DirectX:抗鋸齒功能不起作用
- 28. QGraphicsItem:縮放時禁用抗鋸齒
- 29. 使用RoundedRect對UIBezierpath進行抗鋸齒
- 30. 爲QPushButton啓用抗鋸齒功能