I know internally monogame uses if defines for different platforms. My question is as follows.
Is there a public Get accessor that will return for example DesktopGL or Windows (Dx) that i can call from within Game1 to return what monogame see’s as the TargetPlatform internally ?
Details…
Recently i was asking about loading a .fx from a string. (Pumpkin Pudding had the answer)
I would like to wrap that up into a nice little codeblock that doesn’t care if its open gl or dx under the hood and will switch on its own to compensate.
However to do so…
I need to add both dll’s to my project which is fairly easy.
I also need to pass the correct target platform to the call.
In order to do that though… i need to detect the TargetPlatform programmatically before game load() finishes.
Here is a snippet of code to better illustrate the problem.
public Effect LoadFxFromString(GraphicsDevice gd, string fxcode)
{
string sourceFile = Directory.GetCurrentDirectory() + "/tmp.txt";
File.WriteAllText(sourceFile, fxcode);
EffectImporter importer = new EffectImporter();
EffectContent content = importer.Import(sourceFile, null);
EffectProcessor processor = new EffectProcessor();
PipelineManager pm = new PipelineManager(string.Empty, string.Empty, string.Empty);
//___________________________
// ill need to detect the platform to pass the correct target
//
// DX
pm.Platform = TargetPlatform.Windows;
//
// GL
//pm.Platform = TargetPlatform.DesktopGL;
//
// ideally instead of the above.
// pm.Platform = this.CurrentlyRunningTargetPlatform;
//___________________________
pm.Profile = GraphicsProfile.HiDef;
PipelineProcessorContext ppc = new PipelineProcessorContext(pm, new PipelineBuildEvent());
CompiledEffectContent cecontent = processor.Process(content, ppc);
ContentCompiler compiler = new ContentCompiler();
return new Effect(gd, cecontent.GetEffectCode());
}
Essentially i need to know the TargetPlatform programatically.
Other wise ill have to constantly change this depending on the project template i make.
Instead of the return value allowing me to pass the target platform i need to use independently of which template i have selected for my project,
Which would be a little bit disappointing, however the above is very cool already.