I am rebuilding the project I started a couple years back with some different design goals in mind. These design goals unfortunately don't seem 100% compatible with Irrlicht's current way of managing objects and capabilities. So I may need to change the source code some to meet my needs. As such I am going to need to work with the code and recompile it, which is giving me trouble. So there are two things I need to address here: 1) my build issues, 2) some basic questions about the changes I need to make.
First, for the building:
I am now on Windows 10 using VS 2017 and cannot get Irrlicht to Build. There is no information. It comes back with "CL.exe" exited with code -1073741515. I have installed the Windows 7.1 SDK successfully. Do I need the DirectX SDK as well?
Second, here are some needs that I have and I wanted to get some insight/feedback on how to accomplish these goals.
Current needs and limitations:
Part of my redesign is because I need to build a web browser plugin that will make use of my core API to embed 3D scenes on a web page (most likely using OpenGL/WebGL). Is this possible to do?
I also need to be able to incorporate both flash video and other video formats into (Irrlicht) 3D scenes. Is this possible?
The basic issue that the current Irrlicht object design has is one of scripting security. My application will allow for heavy use of scripting. However, the source of a script needs to be evaluated and measures taken to prevent scripts from accessing objects in a scene when they are not supposed to. As such, my project has its own basic object design at its core which needs to be used by all objects in a scene or the ui. This includes Irrlicht objects. I have a few options that I have listed below. Which one would work the best, given the way Irrlicht works?
"Workaround" Options:
Create a subclass that inherits from both my object base and the irrlicht object which will then be added to an Irrlicht scene as nodes
Create a wrapper that uses an implicit casting mechanism from my wrapper object to the irrlicht object.
Alter the Irrlicht code so that 2D, 3D, and UI nodes all inherit from my base class (in addition to the classes they already inherit from). If I do this option, I would also need to modify or replace the object lookup mechanism so that it only returns the pointer/handle to an object if the security criteria are met. (Security issues are ignored in the web plugin in or "lite" version of my software). However, they are a key feature of the full version of my software).
VS2017 should come with all required SDK's. Also your error doesn't seem to be anything about missing headers or libraries. Did you have older VS versions installed before? I had some troubles with that at first because of some workaround I had to use to compile several older VS versions side-by-side once which had to be removed by now or they confused VS2017 (I think I had some manual changes in AppData\Local\Microsoft\MSBuild\v4.0 or something like that).
The OGL/ES branch has some support for WebGL (not yet perfect, but most things work).
Using other formats on a texture can be done - but you have to code it.
No idea about security and scripting.
Regarding VS2017 and building:
No. Since I am using Windows 10, I had to remove the Visual Studio 2010 redistributable and install the Windows SDK for Windows 7.1 manually. The 7.1 sdk would not install with VS 2017's version of 2010 redistribute installed (there are some posts about this around the internet on msdn forums and Stack Overflow. I also have VS 2012 installed.
Regarding the OGL/ES branch. Is this a branch that works for everything? (all use cases = in other words can I have it use DirectX?)
Regarding security and scripting. I can decide between the first two options if necessary. However, I need your feedback regarding the third (assuming you know the internal class structure of the library). Is there a built in mechanism that allows you to search for a node using the node's name? If so, how easy would this be to replace or augment?
Yeah, but with VS2017 + Windows 10 you should not need Windows SDK 7.1 anymore. But you have to compile Irrlicht with platform toolset set to Visual Studio 2017 (v141). Getting it running with old SDK no longer works easily - VS 2017 broke downward compatibility (before we used Windows 7.1 SDK to have one dll which worked with all VS versions - but that is no longer possible). So current Irrlicht DLL won't work with VS 2017 without re-compiling.
The OGL/ES branch is even more experimental than svn trunk. But yes - it still can be used with DirectX. Thought right now there might be a compile problem with latest version (edit: fixed now).
Thanks for the info. I switched to to v141 and that solved the compiling issue... except that I am getting one error six times: "Cannot open include file: 'd3dx9shader.h': No such file or directory". According to what I can find online, the DirectX SDK comes with Windows 10. However, it seems that this file does not come with it. Do I need a separate DX SDK? I noticed a new DX10/11 driver post. Does that work?
Another related question. Does the Irrlicht do its own memory management? My application uses a memory manager for its objects. If Irrlicht does its own memory management, I won't need to add memory management for Irrlicht objects, but if it doesn't, then I will.
Try setting Windows SDK Version to 8.1. Thought right now it looks on my system like the VS 2017 build indeed uses the headers from Microsoft DirectX SDK (June 2010) - which sounds more like the manually installed SDK (not sure).
I can't help with DX10/11 as I never worked with that branch at all - I simply don't know it. But pretty sure it's a bad idea as all the developers which did work on it are no longer active. Nadro wanted to develop a new DX11 branch, but I haven't heard from him in months, so not getting my hope up there anymore.
Irrlicht has a class for memory handling, but it's only used in some of the containers. And I thikn that was mainly to allow passing containers between applications and dll I think.