Graphics Reference
In-Depth Information
hlslFile);
CompilationResult result = null;
// Compile the HLSL in a separate thread and await it
await Task.Run(() =>
{
var shaderSource = SharpDX.IO.NativeFile
.ReadAllText(hlslFile);
// Compile the shader file
ShaderFlags flags = ShaderFlags.None;
#if DEBUG
flags |= ShaderFlags.Debug |
ShaderFlags.SkipOptimization;
#endif
var includeHandler = new HLSLFileIncludeHandler(
Path.GetDirectoryName(hlslFile));
result = ShaderBytecode.Compile(shaderSource,
entryPoint, profile, flags,
EffectFlags.None, defines, includeHandler,
Path.GetFileName(hlslFile));
if (!String.IsNullOrEmpty(result.Message))
throw new CompilationException(
result.ResultCode, result.Message);
});
return result;
}
6.
To check when resources are ready, we use a new ResourcesReady flag as shown
in following code snippet:
bool ResourcesReady = false;
protected async override void
CreateDeviceDependentResources(Common.DeviceManager
deviceManager)
{
ResourcesReady = false;
...
ResourcesReady = true;
}
public override void Render()
{
if (!ResourcesReady)
return;
var context = this.DeviceManager.Direct3DContext;
...
}
 
Search WWH ::




Custom Search