NVIDIA Iray API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
irender_context.h
Go to the documentation of this file.
1 //*****************************************************************************
2 // Copyright 1986, 2014 NVIDIA Corporation. All rights reserved.
3 //*****************************************************************************
6 //*****************************************************************************
7 
8 #ifndef MI_NEURAYLIB_IRENDER_CONTEXT_H
9 #define MI_NEURAYLIB_IRENDER_CONTEXT_H
10 
12 #include <mi/neuraylib/idata.h>
13 #include <mi/neuraylib/typedefs.h>
14 
15 namespace mi {
16 
17 namespace neuraylib {
18 
19 class IPick_array;
20 class IProgress_callback;
21 class IReady_callback;
22 class IRender_counters;
23 class IRender_target_base;
24 class ITransaction;
25 
36 class IRender_context : public
39  mi::base::Interface_declare<0xad5ccd43,0x75a1,0x427a,0x83,0x7d,0x95,0xc8,0x70,0x91,0xd4,0xc8>
40 {
41 public:
84  virtual Sint32 render(
85  ITransaction* transaction,
86  IRender_target_base* render_target_base,
87  IProgress_callback* progress_callback) = 0;
88 
118  virtual Sint32 render_async(
119  ITransaction* transaction,
120  IRender_target_base* render_target_base,
121  IReady_callback* ready_callback,
122  IProgress_callback* progress_callback) = 0;
123 
129  virtual void cancel_render() = 0;
130 
131 #ifdef MI_NEURAYLIB_DEPRECATED_5_0
132  inline void cancel_render( Sint32 /*cancel_level*/) { cancel_render(); }
133 #endif // MI_NEURAYLIB_DEPRECATED_5_0
134 
144  virtual IPick_array* pick(
145  ITransaction* transaction,
146  const Float32_2_struct& point) = 0;
147 
157  virtual IPick_array* pick(
158  ITransaction* transaction,
159  const Float32_2_struct& center,
160  const Float32_2_struct& size) = 0;
161 
166  virtual IRender_counters* get_render_counters() = 0;
167 
193  virtual Sint32 set_option( const char* name, const IData* value) = 0;
194 
202  virtual const IData* get_option( const char* name) const = 0;
203 
218  template<class T>
219  const T* get_option( const char* name) const
220  {
221  const IData* ptr_idata = get_option( name);
222  if ( !ptr_idata)
223  return 0;
224  const T* ptr_T = static_cast<const T*>( ptr_idata->get_interface( typename T::IID()));
225  ptr_idata->release();
226  return ptr_T;
227  }
228 
232  virtual Size get_options_length() const = 0;
233 
241  virtual const char* get_option_name( Size index) const = 0;
242 
250  virtual const char* get_option_type( Size index) const = 0;
251 };
252  // end group mi_neuray_rendering
254 
255 } // namespace neuraylib
256 
257 } // namespace mi
258 
259 #endif // MI_NEURAYLIB_IRENDER_CONTEXT_H