Project: Improve OpenGL rendering

Joe Francis edited this page Jan 31, 2018 · 17 revisions

Outline

The current rendering infrastructure is scattered around with various bits partially belonging to external packages (CGAL, OpenCSG). Also, we're currently using immediate-mode OpenGL in some places. This is suspected to degrade rendering performance of large models.

Details

The existing code should be refactored and rewritten, preferably by implementing or using an existing rendering/scenegraph framework. In addition to better OpenGL support and performance, care should be taken to use modern OpenGL so that the new code code be ported to GLES2 in the future. Supporting GLES2 opens up much more possibilities like WebGL and native support for ARM Linux platforms that usually only provide GLES2 implementation.

Expected Outcome

  • Cleaner rendering code
  • Better support and better responsiveness for bigger models
  • Optional: Support for ARM platforms using GLES2 (e.g. Raspberry Pi)

Project Properties

Skills

  • Programming language is C++
  • Knowledge of OpenGL and GLES v2
  • Ability to read and readiness to refactor existing code

Difficulty

Medium to High

Additional information

See https://github.com/openscad/openscad/wiki/Information-About-Other-Frameworks

Related issues on Github

  • Speed up OpenGL 3d mesh drawing significantly by batching whole polyheda #675
  • Improve GUI responsiveness for complex objects in preview mode #418
  • Display of 2-dim objects #362
  • build problems with libgles2 #292
  • Progressive display of rendered components #64
  • Provide antialias / multisampling settings for the 3d view #1769

Further functionality which could be enabled by this

  • GUI object inspection (e.g. highlight bbox, size of imported STLs)
  • Pick object in 3D window and highlighting in the code
  • Pick object in the code and highlight in the 3D window
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.