Ticket #811 (closed: fixed)

Opened 11 years ago

Last modified 5 years ago

Clean-up and improve performance of OpenGL visualisation in qtiplot

Reported by: Laurent Chapon Owned by: Laurent Chapon
Priority: major Milestone: Iteration 21
Component: Keywords:
Cc: Blocked By:
Blocking: Tester:

Description

Needs a lot of clean-up, commenting, and fix performance issued with OpenGL rendering.

Change History

comment:1 Changed 11 years ago by Laurent Chapon

(In [2959]) re#811 Improve speed of integration in qtiplot by using binary_search. Tested for WISH, factor 2.5 improvement. Not the bottleneck though.

comment:2 Changed 11 years ago by Laurent Chapon

(In [2964]) re#811 Checked test by mistake

comment:3 Changed 11 years ago by Laurent Chapon

Actually, the problems are not only in qtiplot but also in MantidGeometry in the renderers. THere are calls to glRotate, glScale, glTranslate everywhere and never a single check if these transformations are actually needed. Beside, it looks like most of the glRendering that is happening in MantidGeometry are already stored in display lists. Therefore the MantidObject is nothing else than a wrapper of a display list inside another display list= big performance hit

comment:4 Changed 11 years ago by Laurent Chapon

Clean-up and optimization of Trackball is also needed, lot of temporaries everywhere, unnecessary calls etc...

comment:5 Changed 11 years ago by Laurent Chapon

(In [2973]) re#811 Optimization of the trackball in OpenGL. The angle of rotation is now calculated correctly, so that the object rotation follows closely the mouse movement. Optimization in different places, cleaning-up of the code. Need to work on the routine rotateBoundingBox, there must be a more elegant way to do that.

comment:6 Changed 11 years ago by Laurent Chapon

(In [2975]) re#811 Change calls to GLMatrix in Geometry

comment:7 Changed 11 years ago by Laurent Chapon

(In [2976]) re#811 Changed rotateBoundingBox method in TrackBall to be more reasonable.

comment:8 Changed 11 years ago by Laurent Chapon

(In [2977]) re#811 Remove unused header.

comment:9 Changed 11 years ago by Laurent Chapon

The next step is to clean-up the code related to getBounding boxes. When plotting large instrument such as WISH, it takes about 10 secs on my machine before the instrument widget appear (not the instrument though, this comes much later), of which appraently 8s are spend to getBounding boxes.

comment:10 Changed 11 years ago by Martyn Gigg

(In [2979]) Slight modification to 2 function signatures so that they makes sense, along with minor fix to fix a failing test. Re #811

comment:11 Changed 11 years ago by Laurent Chapon

(In [2980]) re#811 Implement rotateBB as part of Quat class. Some other small changes

comment:12 Changed 11 years ago by Roman Tolchenov

(In [2981]) A change needed to compile MantidPlot in Visual Studio. re #811

comment:13 Changed 11 years ago by Martyn Gigg

(In [2982]) Moved a windows #define to the windows section qtiplot.pro config file. Re #811

comment:14 Changed 11 years ago by Martyn Gigg

(In [2983]) Accidentally merged some local changes to qtiplot.pro file on last check in. Re #811

comment:15 Changed 11 years ago by Laurent Chapon

(In [2984]) re#811 ObjComponent now uses new rotateBB method to determine BB. Speed to initialize an Instrument View for WISH goes from 8 sec to 4sec. Need to check ParObjComponent and that nothing else is affected.

comment:16 Changed 11 years ago by Laurent Chapon

(In [3007]) re#811 Continue to clean-up the code. Some of the changes are short term solutions as the inheritance tree and GLActor base class needs to be revised, but this is enabling us to work with large instruments at the moment.

comment:17 Changed 11 years ago by Roman Tolchenov

(In [3009]) A Windows correction. re #811

comment:18 Changed 11 years ago by Nick Draper

  • Milestone changed from Iteration 19 to Iteration 20

Moved as part of the end of Iteration 19

comment:19 Changed 11 years ago by Nick Draper

  • Status changed from new to closed
  • Resolution set to fixed

This will do for now

comment:20 Changed 5 years ago by Stuart Campbell

This ticket has been transferred to github issue 1659

Note: See TracTickets for help on using tickets.