neuray API Programmer's Manual

MainneurayAdjectiveName Interface and C access function

[Neuray API]

Description

The main Interface and the unique public access point.

Classes

class 
The Allocator interface class supports allocating and releasing memory dynamically and querying the amount of extra memory used in the integrating application. More...
class 
This is an object representing the . More...

Functions

mi::​neuraylib::​INeuraymi_neuray_factory( mi::​neuraylib::​IAllocator* allocator = 0, mi::​Uint32 version = MI_NEURAYLIB_API_VERSION)
Unique public access point to the neuray API. More...

Functions

mi::​neuraylib::​INeuray* mi_neuray_factory( mi::​neuraylib::​IAllocator* allocator = 0, mi::​Uint32 version = MI_NEURAYLIB_API_VERSION)

Unique public access point to the neuray API. This factory function is the only public access point to all algorithms and data structures in the . It returns a pointer to an instance of the main mi::neuraylib::INeuray interface, which is used to configure, to start up, to operate, and to shut down . The mi_neuray_factory() function may be called only once.

Parameters

allocator
The memory allocator to be used. This feature is not yet supported.
version
The desired version of mi::neuraylib::INeuray. The parameter is an integer number that specifies the desired API version, which is set by default to the current API version given in the symbolic constant MI_NEURAYLIB_API_VERSION. This parameter supports the use case where an application uses an older neuray API version but links with a newer . In this case, the newer library can still support the older API in a binary compatible fashion. Only in rare circumstances do you need to set the API version number explicitly.

Returns

A pointer to an instance of the main mi::neuraylib::INeuray interface, or NULL in case of failures. Possible reasons for failures are

  • allocator is not NULL,
  • the valued passed for version is not supported by this library, or
  • the function is called a second time. A typical cause for the second reason is that the library used at runtime does not match the headers used at compile time.