public void SetResource <T>(int resourceIndex, EffectResourceType type, T value) { resources[resourceIndex] = value; unsafe { Pointers[resourceIndex] = GetNativePointer(resourceIndex, type, value); } }
public void SetResource(int resourceIndex, EffectResourceType type, Direct3D11.UnorderedAccessView view, int uavInitialCount) { resources[resourceIndex] = view; unsafe { UAVCounts[resourceIndex] = uavInitialCount; Pointers[resourceIndex] = GetNativePointer(resourceIndex, type, view); } }
public void SetResourcePointer(int resourceIndex, EffectResourceType type, IntPtr value) { // Don't setup the resources at the global level, only setup the native pointer //resources[resourceIndex] = value; unsafe { Pointers[resourceIndex] = value; } }
public void SetResource <T>(int resourceIndex, EffectResourceType type, params T[] valueArray) where T : class { foreach (var value in valueArray) { resources[resourceIndex] = value; unsafe { Pointers[resourceIndex] = GetNativePointer(resourceIndex, type, value); } resourceIndex++; } }
public void SetResource(int resourceIndex, EffectResourceType type, Direct3D11.UnorderedAccessView[] valueArray, int[] uavInitialCount) { for (int i = 0; i < valueArray.Length; i++, resourceIndex++) { var value = valueArray[i]; resources[resourceIndex] = value; unsafe { UAVCounts[resourceIndex] = uavInitialCount[i]; Pointers[resourceIndex] = GetNativePointer(resourceIndex, type, value); } } }
/// <summary> /// Initializes a new instance of the <see cref="EffectParameter"/> class. /// </summary> internal EffectParameter(EffectData.ResourceParameter parameterDescription, EffectResourceType resourceType, int offset, EffectResourceLinker resourceLinker) : base(parameterDescription.Name) { this.ParameterDescription = parameterDescription; this.resourceLinker = resourceLinker; ResourceType = resourceType; IsValueType = false; ParameterClass = parameterDescription.Class; ParameterType = parameterDescription.Type; RowCount = ColumnCount = 0; ElementCount = parameterDescription.Count; Offset = offset; }
private IntPtr GetNativePointer(int resourceIndex, EffectResourceType type, object value) { if (value == null) { return(IntPtr.Zero); } if (value is IntPtr) { return((IntPtr)value); } switch (type) { case EffectResourceType.ConstantBuffer: { var constantBuffer = value as EffectConstantBuffer; if (constantBuffer != null) { var rawBuffer = constantBuffer; ConstantBuffers[resourceIndex] = rawBuffer; return(((Direct3D11.Buffer)rawBuffer).NativePointer); } var buffer = value as Buffer; if (buffer != null) { var rawBuffer = buffer; ConstantBuffers[resourceIndex] = rawBuffer; return(((Direct3D11.Buffer)rawBuffer).NativePointer); } } break; case EffectResourceType.ShaderResourceView: { var buffer = value as Buffer; if (buffer != null) { return(((Direct3D11.ShaderResourceView)buffer).NativePointer); } var texture = value as Texture; if (texture != null) { return(((Direct3D11.ShaderResourceView)texture).NativePointer); } var srv = value as Direct3D11.ShaderResourceView; if (srv != null) { return(srv.NativePointer); } } break; case EffectResourceType.UnorderedAccessView: { var buffer = value as Buffer; if (buffer != null) { return(((Direct3D11.UnorderedAccessView)buffer).NativePointer); } var texture = value as Texture; if (texture != null) { return(((Direct3D11.UnorderedAccessView)texture).NativePointer); } var srv = value as Direct3D11.UnorderedAccessView; if (srv != null) { return(srv.NativePointer); } } break; case EffectResourceType.SamplerState: var samplerState = value as Graphics.SamplerState; if (samplerState != null) { return(((Direct3D11.SamplerState)samplerState).NativePointer); } var samplerStateD3D11 = value as Direct3D11.SamplerState; if (samplerStateD3D11 != null) { return(samplerStateD3D11.NativePointer); } break; } // Throws an exception if the resource is not supported. throw new NotSupportedException(string.Format("Unsupported resource type [{0}/{1}]", type, value.GetType().Name)); }