-
Utkarsh Ayachit authored
This commit cleans up offscreen rendering support in VTK. This includes several changes. 1. It makes EGL support independent of onscreen GL support. It's now possible to enable EGL and GLX in same build of VTK, for example, so long as the two use shared GL-dispatch mechanism. Previously, EGL could not be enabled together with GLX (i.e. `VTK_USE_X` set to ON). These changes allow for that configuration. 2. `VTK_USE_OFFSCREEN_EGL` is replaced by `VTK_OPENGL_HAS_EGL`. This is consistent with `VTK_OPENGL_HAS_OSMESA` flag. And also in similar vein to changes to `FindOpenGL.cmake` where EGL becomes a component of `find_package(OpenGL)`. 3. `VTK_EGL_DEVICE_INDEX` has been replaced by `VTK_DEFAULT_EGL_DEVICE_INDEX` since it only affect the default value, and doesn't preclude users from manually specifying the device index. 4. `VTK_USE_OFFSCREEN` has been replaced by `VTK_DEFAULT_RENDER_WINDOW_OFFSCREEN`, since similar to `3` this option was only intended to affect the default value. 5. Simplified `FindEGL.cmake`. Apps don't need to link against `gldispatch` library and hence removed it and created an imported target to simplify use. 6. For all changes to CMake variables, we put out `DEPRECATION` messages if old variables are used. 7. When `VTK_USE_X` and `VTK_OPENGL_HAS_EGL` or `VTK_OPENGL_HAS_OSMESA` in ON, following things happen: i. The object-factory simply returns the X-based (or onscreen) render window i.e. `vtkXOpenGLRenderWindow`. ii. To create one of the offscreen render windows, one can manually instantiate them e.g. by explicitly instantiating `vtkEGLRenderWindow`. `vtkXOpenGLRenderWindow` has implementation to swap to OSMesa if `SetUseOffscreen(true)` is called. iii. As soon any off-screen features are enabled, `glew` uses the offscreen library APIs to get OpenGL function pointers irrespective of how the active context was initialized.
d0e7aab3