NVIDIA Iray API Home  Up
 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, 2016 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:
98  virtual Sint32 render(
99  ITransaction* transaction,
100  IRender_target_base* render_target_base,
101  IProgress_callback* progress_callback) = 0;
102 
133  virtual Sint32 render_async(
134  ITransaction* transaction,
135  IRender_target_base* render_target_base,
136  IReady_callback* ready_callback,
137  IProgress_callback* progress_callback) = 0;
138 
144  virtual void cancel_render() = 0;
145 
155  virtual IPick_array* pick(
156  ITransaction* transaction,
157  const Float32_2_struct& point) = 0;
158 
168  virtual IPick_array* pick(
169  ITransaction* transaction,
170  const Float32_2_struct& center,
171  const Float32_2_struct& size) = 0;
172 
177  virtual IRender_counters* get_render_counters() = 0;
178 
204  virtual Sint32 set_option( const char* name, const IData* value) = 0;
205 
213  virtual const IData* get_option( const char* name) const = 0;
214 
229  template<class T>
230  const T* get_option( const char* name) const
231  {
232  const IData* ptr_idata = get_option( name);
233  if ( !ptr_idata)
234  return 0;
235  const T* ptr_T = static_cast<const T*>( ptr_idata->get_interface( typename T::IID()));
236  ptr_idata->release();
237  return ptr_T;
238  }
239 
243  virtual Size get_options_length() const = 0;
244 
252  virtual const char* get_option_name( Size index) const = 0;
253 
261  virtual const char* get_option_type( Size index) const = 0;
262 };
263  // end group mi_neuray_rendering
265 
266 } // namespace neuraylib
267 
268 } // namespace mi
269 
270 #endif // MI_NEURAYLIB_IRENDER_CONTEXT_H