02-10-2006 06:54 PM
02-11-2006 12:56 AM
A lot really depends on how much data must be visible at any given time. If you can play games with decimating the data to reduce the number of points being drawn (and redrawn), you might be able to get some performance gains. You might also consider putting the plotting in its own thread and passing data to it via a queue. It would be important to monitor the number of elements in the queue to be certain the plotter thread isn't falling behind.
Another thing that may work if you don't need cursors and the other features of the 3D graphics is to use the picture control. I believe that if you run the picture control through a shift register (for example), the control doesn't have to redraw every point it only adds the point to be drawn to the existing picture.
The problem you are running up against is that there is no hardware acceleration of graphics in LabVIEW. Everything is plotted by the software, so the only way to have high perfromance graphics is to have higher performance CPUs or reduce the amount of data being shown.
09-12-2006 05:00 PM
09-12-2006 05:17 PM
According to this thread:
Tips for tweaking graphics hardware acceleration of Mesa & the mesa.dll implementation on Win32 plat... using the property node will not help because the foundation of the ActiveX graphics in LabVIEW, Mesa, does not support hardware acceleration on Win32.
09-12-2006 08:35 PM
PPLLC a écrit: According to this thread: Tips for tweaking graphics hardware acceleration of Mesa & the mesa.dll implementation on Win32 plat... using the property node will not help because the foundation of the ActiveX graphics in LabVIEW, Mesa, does not support hardware acceleration on Win32.
Playing with the 3D graph shows clearly that hardware acceleration is indeed supported (although partially only : try with the attached vi and use the window task manager to look at processor use). This does not means that the plot can be updated at a rate compatible with the above 30 Hz exigences, but that once created, it can be manipulated without overloading the central processor. In LV 8.2 the 3D picture control can make full usage of harware acceleration but lacks the tools to create graph scales.
As proposed by PPLLC in his first reply, the best solution is to use separate loops for data acquisition and display, exchanging data using a queue.
09-13-2006 03:12 PM
09-15-2006 02:30 PM
Nathan,
Thank you for the information you have been providing both online and offline. I guess the real question at the end of the day is what will it take to get the ActiveX 3D plots to a point where we see a performance gain from hardware acceleration in 'real time'? By real time I mean as the data set is being acquired an amount of data may be buffered with data being added to the buffer and the entire buffer being displayed. I have seen the behavior that chilly charlie was referencing where once I have the data set acquired I can display it with little to no impact on the CPU, however, in a growing number of applications my customers are expecting to see 4 dimensional data being constructed as the data is acquired.
Is there something we as developers should be doing to take better advantage of the existing hardware acceleration to improve performance when displaying live data?
09-15-2006 06:12 PM
Nathan,
you are hooked : we will not let you go before a fair reply is given to PPLLC question ! 🙂
09-18-2006 06:37 PM
09-27-2006 12:44 PM
Nathan,
Sorry for the long delay in responding. I am working on putting together 2 example VIs to demonstrate the 2 cases I deal with regularly.
Chris