{"id":256,"date":"2023-03-17T10:44:43","date_gmt":"2023-03-17T10:44:43","guid":{"rendered":"https:\/\/developer.openinventor.com\/?page_id=256"},"modified":"2024-10-03T13:22:29","modified_gmt":"2024-10-03T13:22:29","slug":"compatibility-change","status":"publish","type":"page","link":"https:\/\/developer.openinventor.com\/index.php\/general-documentation\/compatibility-change\/","title":{"rendered":"Compatibility change"},"content":{"rendered":"<p>On this page you will find all important API or behavior changes made by any new minor release of <strong>Open Inventor<\/strong>. Click on any module name to discover changes made by a given version.<\/p>\n<hr>\n<h1>Open Inventor 2023.2<\/h1>\n<h2>C++ API<\/h2>\n<p>SoVolumeReader::getSubSlice(const SbBox2i32&amp;, int, void*)<\/br><br \/>\nthis method has a default implementation that prints an error message when called.<\/p>\n<h2>C# API<\/h2>\n<p>Nothing to report<\/p>\n<h2>Java API<\/h2>\n<p>class com.openinventor.inventor.SbViewVolume<\/br><br \/>\nthe method getProjectedBbox(com.openinventor.inventor.SbMatrix, com.openinventor.inventor.SbBox3f) is now static<\/p>\n<h1>Open Inventor 10.11<\/h1>\n<h2 class=\"collapseomatic colomat-visited colomat-close\" id=\"id634070856d298\" tabindex=\"0\" title=\"Inventor\">Inventor<\/h2>\n<div id=\"target-id634070856d298\" class=\"collapseomatic_content \" style=\"\">\n<ul>\n<li>getParts calls on <strong>SoDragPointDragger<\/strong><sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManCpp\/class_so_drag_point_dragger.html\">C++<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/inventor\/draggers\/SoDragPointDragger.html\">Java<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/1135447f-4431-2787-c19d-faf7742054f8.htm\">.Net<\/a>)<\/sup> now return an <strong>SoSwitch<\/strong><sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManCpp\/class_so_switch.html\">C++<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/inventor\/nodes\/SoSwitch.html\">Java<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/9aa8ea0b-d528-f1ad-ae2d-ee0da2dce2fd.htm\">.Net<\/a>)<\/sup> just like Open Inventor 9 instead of an SoNodeOnOff<\/li>\n<\/ul>\n<\/div>\n<h1>Open Inventor 10.10<\/h1>\n<h2 class=\"collapseomatic\" id=\"id634070856d2c8\" tabindex=\"0\" title=\"Inventor\">Inventor<\/h2>\n<div id=\"target-id634070856d2c8\" class=\"collapseomatic_content \" >\n<ul>\n<li>Starting from OIV 10.10 release, the activation of node-locked license is restricted to physical machines. Only floating licenses can be used in virtual environments<\/li>\n<li>Points rendering is quite different starting with Open Inventor 10.10.<\/li>\n<\/ul>\n<\/div>\n<h1>Open Inventor 10.6<\/h1>\n<h2 class=\"collapseomatic\" id=\"id634070856d2dd\" tabindex=\"0\" title=\"Inventor\">Inventor<\/h2>\n<div id=\"target-id634070856d2dd\" class=\"collapseomatic_content \" >\n<ul>\n<li style=\"margin-top: 15px;\"><strong>SoShapeHighlightRenderAction<\/strong> has been removed. As it was tagged SoINTERNAL, it has never been officially supported. In any case, if your application used it you must now replace it by the new <strong>SoColorHighlightRenderAction<\/strong><sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManCpp\/class_so_color_highlight_render_action.html\">C++<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/inventor\/actions\/SoColorHighlightRenderAction.html\">Java<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/0ab0fe91-91fd-680f-4b4d-1bfb8159eb39.htm\">.Net<\/a>)<\/sup><\/li>\n<li style=\"margin-top: 15px;\"><strong>SoUpdateAreaElement<\/strong><sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManCpp\/class_so_update_area_element.html\">C++<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/inventor\/elements\/SoUpdateAreaElement.html\">Java<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/04b86f16-cb47-068e-b4e4-6efb0e714b69.htm\">.Net<\/a>)<\/sup>: size set by <code>SoUpdateAreaElement::set<\/code> was previously interpreted as a ratio. Starting with Open Inventor 10.6 it will be read as a <strong>number of pixels<\/strong><\/li>\n<\/ul>\n<\/div>\n<h2 class=\"collapseomatic\" id=\"id634070856d2f7\" tabindex=\"0\" title=\"RemoteViz\">RemoteViz<\/h2>\n<div id=\"target-id634070856d2f7\" class=\"collapseomatic_content \" >\nIn order to provide your application with safer lifetime control on objects shared by RemoteViz, the API of RemoteViz will be updated in Open Inventor 10.6. The following document describes all the changes that we will introduce and will help you to port your application using this new API.In addition to the API changes related to the usage of shared pointer, following API changes will be made<\/p>\n<hr>\n<h3>Class ServiceSettings<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManCpp\/class_remote_viz_1_1_rendering_1_1_connection.html\">C++<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/remoteviz\/rendering\/ServiceSettings.html\">Java<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/c976e951-6ddc-c675-4596-7fcd98d0fb5a.htm\">.Net<\/a>)<\/sup><\/h3>\n<p>Before 10.6, for a newly created <strong>ServiceSettings<\/strong><sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManCpp\/class_remote_viz_1_1_rendering_1_1_connection.html\">C++<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/remoteviz\/rendering\/ServiceSettings.html\">Java<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/c976e951-6ddc-c675-4596-7fcd98d0fb5a.htm\">.Net<\/a>)<\/sup> object, the default value of the IP attribute was \u201cauto\u201d. Starting with version 10.6, the value \u201cauto\u201d has been removed and the default IP value is now \u201c127.0.0.1\u201d. See the setIP() and getIP() methods.<\/p>\n<hr>\n<h2><a id=\"cppSpecific\"><\/a>C++<\/h2>\n<h3>Pointers<\/h3>\n<p>All arguments and return types using a pointer type are replaced by the equivalent shared pointer type. In other words, \u201cType* arg\u201d will become \u201cstd::shared_ptr&lt;Type&gt; arg\u201d. The shared_ptr type allows more than one owner to manage the lifetime of an object in memory. This is important if the application needs to hold a pointer to a RemoteViz object, for example, a RenderArea. Previously when RemoteViz was finished using an object, it would explicitly delete the object, making the pointer held by the application invalid. Now when RemoteViz is finished using an object, it calls the shared_ptr\u2019s reset() method. If there is no other shared_ptr referencing the object, the object is deleted. But if the application is holding a shared_ptr, that pointer and the object remain valid (until the application resets its shared_ptr).<\/p>\n<p>This API change will break source compatibility and generate errors with existing code. To fix these errors, replace pointers with shared pointers in your source code. To give you an idea of how this will change your code, consider the basic HelloCone example program (examples\/source\/RemoteViz\/HelloCone).<\/p>\n<p><strong>Service main<\/strong><br \/>\nOIV 10.5<br \/>\n<span style=\"color: #339966;\">&nbsp; &nbsp; \/\/ Instantiate a service settings class<\/span><br \/>\n<span style=\"color: #99ccff;\">&nbsp; &nbsp; ServiceSettings<\/span> settings;<br \/>\n<strong>&nbsp;&nbsp;&nbsp;&nbsp;. . .<\/strong><br \/>\n<span style=\"color: #339966;\">&nbsp; &nbsp; \/\/ Open the service by using the settings<\/span><br \/>\n<span style=\"color: #0000ff;\">&nbsp; &nbsp; if<\/span> (<span style=\"color: #99ccff;\">Service<\/span>::instance()-&gt;open(&amp;settings))<\/p>\n<p>OIV 10.6<br \/>\n<span style=\"color: #339966;\">&nbsp; &nbsp; \/\/ Instantiate a service settings class<\/span><br \/>\n<span style=\"color: #0000ff;\">&nbsp; &nbsp; auto<\/span> settings = std::make_shared&lt;<span style=\"color: #99ccff;\">ServiceSettings<\/span>&gt;();<br \/>\n<strong>&nbsp;&nbsp;&nbsp;&nbsp;. . .<\/strong><br \/>\n<span style=\"color: #339966;\">&nbsp; &nbsp; \/\/ Open the service by using the settings<\/span><br \/>\n<span style=\"color: #0000ff;\">&nbsp; &nbsp; if<\/span> (<span style=\"color: #99ccff;\">Service<\/span>::instance()-&gt;open(settings))<\/p>\n<p><strong><br \/>\nServiceListener.h<br \/>\n<\/strong>OIV 10.5<br \/>\n<span style=\"color: #0000ff;\">&nbsp; &nbsp; virtual void<\/span> onInstantiatedRenderArea(RemoteViz::Rendering::RenderArea *renderArea);<\/p>\n<p>OIV 10.6<br \/>\n<span style=\"color: #0000ff;\">&nbsp; &nbsp; virtual void<\/span> onInstantiatedRenderArea(std::<span style=\"color: #99ccff;\">shared_ptr<\/span>&lt;RemoteViz::Rendering::<span style=\"color: #99ccff;\">RenderArea<\/span>&gt;&nbsp;renderArea) <span style=\"color: #0000ff;\">override<\/span>;<\/p>\n<p><strong><br \/>\nServiceListener.cxx<br \/>\n<\/strong>OIV 10.5<br \/>\n<span style=\"color: #0000ff;\">&nbsp; &nbsp; void<\/span> MyServiceListener::onInstantiatedRenderArea(RemoteViz::Rendering::RenderArea *renderArea)<br \/>\n<strong>&nbsp;&nbsp;&nbsp;&nbsp;{<\/strong><br \/>\n<span style=\"color: #339966;\">&nbsp; &nbsp; &nbsp; &nbsp; \/\/ Instantiate a renderAreaListener class to manage the renderArea events (default behaviors).<\/span><br \/>\n<span style=\"color: #000000;\">&nbsp; &nbsp; &nbsp; &nbsp; std::shared_ptr renderAreaListener(new RemoteViz::Rendering::RenderAreaListener());<\/span><br \/>\n<strong>&nbsp; &nbsp; &nbsp; &nbsp; . . .<\/strong><br \/>\n<strong>&nbsp;&nbsp;&nbsp;&nbsp;}<\/strong><\/p>\n<p>OIV 10.6<br \/>\n<span style=\"color: #0000ff;\">&nbsp; &nbsp; void<\/span> <span style=\"color: #99ccff;\">MyServiceListener<\/span>::onInstantiatedRenderArea(std::<span style=\"color: #99ccff;\">shared_ptr<\/span>&lt;RemoteViz::Rendering::<span style=\"color: #99ccff;\">RenderArea<\/span>&gt;&nbsp;renderArea)<br \/>\n<strong>&nbsp;&nbsp;&nbsp;&nbsp;{<\/strong><br \/>\n<span style=\"color: #339966;\">&nbsp; &nbsp; &nbsp; &nbsp; \/\/ Instantiate a renderAreaListener class to manage the renderArea events (default behaviors).<\/span><br \/>\n<span style=\"color: #0000ff;\">&nbsp; &nbsp; &nbsp; &nbsp; auto<\/span>&nbsp;renderAreaListener = std::make_shared&lt;RemoteViz::Rendering::<span style=\"color: #99ccff;\">RenderAreaListener<\/span>&gt;();<br \/>\n<strong>&nbsp; &nbsp; &nbsp; &nbsp; . . .<\/strong><br \/>\n<strong>&nbsp;&nbsp;&nbsp;&nbsp;}<\/strong><\/p>\n<h3>Derived Classes<\/h3>\n<p>We strongly recommend using the C++11 keyword \u201coverride\u201d in all classes derived from the RemoteViz classes ServiceListener and RenderAreaListener so that the compiler checks that the virtual methods successfully override the corresponding virtual method in the base class.<\/p>\n<h3>Class Connection<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManCpp\/class_remote_viz_1_1_rendering_1_1_connection.html\">C++<\/a>)<\/sup><\/h3>\n<ul>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>bool sendMessage (const unsigned char* buffer, size_t size) const;<\/code><br \/>\nis replaced by<br \/>\n<code>bool sendMessage(const std::vector&lt;const unsigned char&gt;&amp; buffer) const;<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\">New function <code>bool isOpen() const;<\/code> has been added to gets the state of a Connection (open or closed)<\/li>\n<\/ul>\n<h3>Class Client<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManCpp\/class_remote_viz_1_1_rendering_1_1_client.html\">C++<\/a>)<\/sup><\/h3>\n<ul>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>bool sendMessage(const std::string&amp; message, Connection** excludedConnections = nullptr, unsigned int num = 0) const;<\/code><br \/>\nis replaced by<br \/>\n<code>bool sendMessage(const std::string&amp; message, std::vector&lt;std::shared_ptr&lt;Connection&gt;&gt; excludedConnections = {}) const;<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>bool sendMessage (const unsigned char *buffer, size_t size, Connection **excludedConnections=nullptr, unsigned int num=0) const;<\/code><br \/>\nis replaced by<br \/>\n<code>bool sendMessage(const std::vector&lt;const unsigned char&gt;&amp; buffer, std::vector&lt;std::shared_ptr&lt;Connection&gt;&gt; excludedConnections = {}) const;<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\">New property <code>isConnected() const;<\/code> has been added to get the state of the Client (connected or disconnected)<\/li>\n<\/ul>\n<h3>Class RenderArea<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManCpp\/class_remote_viz_1_1_rendering_1_1_render_area.html\">C++<\/a>)<\/sup><\/h3>\n<ul>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>bool sendMessage(const std::string&amp; message, Connection** excludedConnections = nullptr, unsigned int num = 0) const;<\/code><br \/>\nis replaced by<br \/>\n<code>bool sendMessage(const std::string&amp; message, std::vector&lt;std::shared_ptr&lt;Connection&gt;&gt; excludedConnections = {}) const;<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>bool sendMessage (const unsigned char *buffer, size_t size, Connection **excludedConnections=nullptr, unsigned int num=0) const;<\/code><br \/>\nis replaced by<br \/>\n<code>bool sendMessage(const std::vector&lt;const unsigned char&gt;&amp; buffer, std::vector&lt;std::shared_ptr&lt;Connection&gt;&gt;  excludedConnections = {}) const;<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\">New function <code>bool isDisposed() const;<\/code> has been added to get the state of the RenderArea (alive or disposed)<\/li>\n<\/ul>\n<hr>\n<h2><a id=\"javaSpecific\"><\/a>Java<\/h2>\n<h3>Class Connection<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/remoteviz\/rendering\/Connection.html\">Java<\/a>)<\/sup><\/h3>\n<ul>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>SendMessage(byte[] buffer)<\/code><br \/>\nis replaced by<br \/>\n<code>SendMessage(Collection&lt;Byte&gt; buffer)<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\">New function <code>boolean isOpen()<\/code> has been added to get the state of a Connection (open or closed)<\/li>\n<\/ul>\n<h3>Class Client<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/remoteviz\/rendering\/Client.html\">Java<\/a>)<\/sup> and Class RenderArea<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/remoteviz\/rendering\/RenderArea.html\">Java<\/a>)<\/sup><\/h3>\n<ul>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>SendMessage(byte[] buffer)<\/code><br \/>\nis replaced by<br \/>\n<code>SendMessage(Collection&lt;Byte&gt; buffer)<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>SendMessage(byte[] buffer, Connection[] excludedConnections)<\/code><br \/>\nis replaced by<br \/>\n<code>SendMessage(Collection&lt;byte&gt; buffer, Collection&lt;Connection&gt; excludedConnections)<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>SendMessage(string message, Connection[] excludedConnections)<\/code><br \/>\nis replaced by<br \/>\n<code>SendMessage(string message, Collection&lt;Connection&gt; excludedConnections)<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\">New function <code>boolean isConnected()<\/code> has been added in class Client<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/remoteviz\/rendering\/Client.html\">Java<\/a>)<\/sup> to get the state of the Client (connected or disconnected)<\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\">New function <code>bool isDisposed()<\/code> has been added to Class RenderArea<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/remoteviz\/rendering\/RenderArea.html\">Java<\/a>)<\/sup> to get the state of a RenderArea (alive or disposed)<\/li>\n<\/ul>\n<h3>Class ServiceListener<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/remoteviz\/rendering\/ServiceListener.html\">Java<\/a>)<\/sup><\/h3>\n<ul>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>OnReceivedMessage(RenderArea, Connection, byte[])<\/code><br \/>\nis replaced by<br \/>\n<code>OnReceveivedMessage(RenderArea renderArea, Connection sender, Collection&lt;Byte&gt; buffer)<\/code><\/li>\n<\/ul>\n<hr>\n<h2><a id=\"netSpecific\"><\/a>.Net<\/h2>\n<h3>Class Connection<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/ca8652eb-a9f8-8176-e815-941042da6095.htm\">.Net<\/a>)<\/sup><\/h3>\n<ul>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>SendMessage(byte[] buffer)<\/code><br \/>\nis replaced by<br \/>\n<code>SendMessage(IList&lt;byte&gt; buffer)<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\">New property <code>IsOpen<\/code> has been added to get the state of a Connection (open or closed)<\/li>\n<\/ul>\n<h3>Class Client<sup>(<\/sup><sup><a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/8ef78f2b-efcc-9ca1-cd29-bfc9723cadd5.htm\">.Net<\/a>)<\/sup> and Class RenderArea<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/ca8652eb-a9f8-8176-e815-941042da6095.htm\">.Net<\/a>)<\/sup><\/h3>\n<ul>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>SendMessage(byte[] buffer)<\/code><br \/>\nis replaced by<br \/>\n<code>SendMessage(IList&lt;byte&gt; buffer)<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>SendMessage(byte[] buffer, Connection[] excludedConnections)<\/code><br \/>\nis replaced by<br \/>\n<code>SendMessage(IList buffer&lt;byte&gt;, IList&lt;Connection&gt; excludedConnections)<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>SendMessage(string message, Connection[] excludedConnections)<\/code><br \/>\nis replaced by<br \/>\n<code>SendMessage(string message, IList&lt;Connection&gt; excludedConnections)<\/code><\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\">New property <code>IsConnected<\/code> has been added in Client<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/a9225a8b-0971-b299-57a6-90f2da2d7f18.htm\">.Net<\/a>)<\/sup> class to get the state of the Client (connected or disconnected)<\/li>\n<li style=\"margin-top: 15px; margin-left: 50px;\">New property <code>IsDisposed<\/code> has been added to Class RenderArea<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/ca8652eb-a9f8-8176-e815-941042da6095.htm\">.Net<\/a>)<\/sup> to get the state of a RenderArea (alive or disposed)<\/li>\n<\/ul>\n<h3>Class ServiceListener<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/dcef8f9e-07d7-5055-9ef3-5585597eda69.htm\">.Net<\/a>)<\/sup><\/h3>\n<ul>\n<li style=\"margin-top: 15px; margin-left: 50px;\"><code>OnReceivedMessage(RenderArea, Connection, Byte[])<\/code><br \/>\nis replaced by<br \/>\n<code>OnReceveivedMessage(RenderArea renderArea, Connection sender, IList&lt;byte&gt; buffer)<\/code><\/li>\n<\/ul>\n<\/div>\n<h1>Open Inventor 10.5.2<\/h1>\n<h2 class=\"collapseomatic\" id=\"id634070856d33e\" tabindex=\"0\" title=\"Inventor\">Inventor<\/h2>\n<div id=\"target-id634070856d33e\" class=\"collapseomatic_content \" >\n<ul>\n<li style=\"margin-top: 15px;\"><strong>SoOffscreenRenderArea<sup>(<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManCpp\/class_so_offscreen_render_area.html\">C++<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManJava\/com\/openinventor\/inventor\/SoOffscreenRenderArea.html\">Java<\/a>|<a href=\"https:\/\/developer.openinventor.com\/refmans\/latest\/RefManNet\/html\/7e8379fd-66e2-9b2f-5298-a5f9b86fd11f.htm\">.Net<\/a>)<\/sup><\/strong><br \/>\n<code>renderToFile<\/code> and <code>renderToBuffer<\/code> functions have a new parameter <em>outputformat<\/em> of type OutputFormat (<em>RGB<\/em> or <em>RGBA<\/em>). Default behavior remains the same (RGB)<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>On this page you will find all important API or behavior changes made by any new minor release of Open&hellip;<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":63,"menu_order":6,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-256","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/developer.openinventor.com\/index.php\/wp-json\/wp\/v2\/pages\/256","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.openinventor.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.openinventor.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.openinventor.com\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.openinventor.com\/index.php\/wp-json\/wp\/v2\/comments?post=256"}],"version-history":[{"count":8,"href":"https:\/\/developer.openinventor.com\/index.php\/wp-json\/wp\/v2\/pages\/256\/revisions"}],"predecessor-version":[{"id":629,"href":"https:\/\/developer.openinventor.com\/index.php\/wp-json\/wp\/v2\/pages\/256\/revisions\/629"}],"up":[{"embeddable":true,"href":"https:\/\/developer.openinventor.com\/index.php\/wp-json\/wp\/v2\/pages\/63"}],"wp:attachment":[{"href":"https:\/\/developer.openinventor.com\/index.php\/wp-json\/wp\/v2\/media?parent=256"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}