Open source 3D rendering solution adhering to the RenderMan standard

slxargs library bug

Posted by: mosari

Hi Guys

 I try to interrogate a compiled shader using slxargs library but my program halt with access violation error.

 I use win32 platform and vc 8 to compile my program.

 To find the problem I reduce my program to something like this:

  char* myShader = "smoeshader.slx";

  Slo_SetShader(myShader);

  Slo_EndShader();

  Call stack said me the access violation happened in Slo_SetShader() function. I

  searched the slxargs library source codes for anything like null pointers but nothing find. in 1.4 version I compiled this

 program without any error and I have this problem in 1.6 version.

 I know aqsltell utility has been built without any error but

 could you test it again or show me a solution.

Cheers

Mostafa Ari
 

pgregory's picture

Posted by: pgregory

I've looked into this and the

I've looked into this and the problem is related to the use of the slxargs library in the style of the sloargs library.

To elaborate, we've tried to mimic the behaviour of Pixar's sloargs interface to a degree so that tools written to that API will work more readily with Aqsis. However, there is one oversight it seems. The slxargs library needs extra information relating to DSO shadeops that sloargs doesn't need, and as the Aqis slo API is implemented in terms of the slx API, this causes a problem. The problem is that the search path for DSO shadeops isn't being initialised.

The workaround is to do the following...

SLX_SetDSOPath("");

...before trying to call Slo_SetShader(). You'll need to #include "slx.h" if you haven't already.

I've tested this and it seems to work fine. I'll make sure that a bug is submitted with this information, and it'll get fixed for 1.6.1.

 

Paul

Paul C. Gregory