Some virus scanners are known to drastically slow down the initialization of the JogAmp OpenGL binding used by LuciadLightspeed versions prior to V2019.0.

This article is only applicable to LuciadLightspeed V2018.1 and older versions. The problem is caused by a third-party library that is no longer present in LuciadLightspeed V2019.0.

What happens?

Your LuciadLightspeed application takes abnormally long to start up – sometimes more than a full minute. After this initial delay, however, the application functions normally. The delay can be triggered by the creation of the first ILspView, but also by the use of hardware-accelerated image processing features in an ILcdGXYView.

Why does this happen?

JogAmp, the OpenGL/OpenCL binding used by LuciadLightspeed, contains code that creates a sub-directory in your temp directory, writes a small executable .exe file to it, and then tries to run that executable. Afterwards, the JogAmp native libraries are unpacked into the same directory for use by your actual application. JogAmp does this to check whether you have sufficient privileges to execute native code in the target directory. Unfortunately, on some machines this check seems to take a very long time, even when it ultimately succeeds. The problem seems to occur mostly on machines with a recent version of Windows 10 and is presumably linked to antivirus software.

Solution

A workaround is to manually unpack the JogAmp native libraries into the application’s working directory. You can find the libraries in the following JARs:

  • gluegen-rt@2.3.2-natives-*.jar

  • jogl-all@2.3.2+2-lcd-natives-*.jar

  • jocl@2.3.2+2-lcd-natives-*.jar

Place the DLLs in a natives/windows-…​ sub-directory relative to your application’s working directory. In a standard LuciadLightspeed installation, the resulting folder hierarchy will look like this:

LuciadLightspeed_<version>
  |- natives
    |- windows-amd64 (or windows-i586)
       |- gluegen-rt.dll
       |- jogl_desktop.dll
       |- ...

You also need to add the system property -Djogamp.gluegen.UseTempJarCache=false to your application’s command line to instruct JogAmp not to use the libraries from the JARs.