private void RenderShader(DeviceContext deviceContext, SC_jitter_cloth.DLightBuffer[] _DLightBuffer_, SC_jitter_cloth _cuber) { deviceContext.MapSubresource(_cuber.InstanceBuffer, MapMode.WriteDiscard, SharpDX.Direct3D11.MapFlags.None, out mappedResource); mappedResource.WriteRange(_cuber.instances, 0, _cuber.instances.Length); deviceContext.UnmapSubresource(_cuber.InstanceBuffer, 0); mappedResource.Dispose(); deviceContext.MapSubresource(_cuber.InstanceRotationBuffer, MapMode.WriteDiscard, SharpDX.Direct3D11.MapFlags.None, out mappedResource); mappedResource.WriteRange(_cuber.instancesDataForward, 0, _cuber.instancesDataForward.Length); deviceContext.UnmapSubresource(_cuber.InstanceRotationBuffer, 0); mappedResource.Dispose(); deviceContext.MapSubresource(_cuber.InstanceRotationBufferRIGHT, MapMode.WriteDiscard, SharpDX.Direct3D11.MapFlags.None, out mappedResource); mappedResource.WriteRange(_cuber.instancesDataRIGHT, 0, _cuber.instancesDataRIGHT.Length); deviceContext.UnmapSubresource(_cuber.InstanceRotationBufferRIGHT, 0); mappedResource.Dispose(); deviceContext.MapSubresource(_cuber.InstanceRotationBufferUP, MapMode.WriteDiscard, SharpDX.Direct3D11.MapFlags.None, out mappedResource); mappedResource.WriteRange(_cuber.instancesDataUP, 0, _cuber.instancesDataUP.Length); deviceContext.UnmapSubresource(_cuber.InstanceRotationBufferUP, 0); mappedResource.Dispose(); if (_switchOnce == 0) { try { deviceContext.MapSubresource(_constantLightBuffer, MapMode.WriteDiscard, SharpDX.Direct3D11.MapFlags.None, out mappedResource); mappedResource.WriteRange(_DLightBuffer_, 0, _DLightBuffer_.Length); deviceContext.UnmapSubresource(_constantLightBuffer, 0); mappedResource.Dispose(); } catch (Exception ex) { MainWindow.MessageBox((IntPtr)0, ex.ToString() + "", "Oculus Error", 0); } //_switchOnce = 1; } deviceContext.InputAssembler.InputLayout = Layout; deviceContext.VertexShader.Set(VertexShader); deviceContext.PixelShader.Set(PixelShader); deviceContext.PixelShader.SetConstantBuffer(0, _constantLightBuffer); deviceContext.GeometryShader.Set(null); deviceContext.PixelShader.SetSampler(0, SamplerState); deviceContext.DrawIndexedInstanced(_cuber.IndexCount, _cuber.InstanceCount, 0, 0, 0); }
public bool Render(DeviceContext deviceContext, int VertexCount, int InstanceCount, Matrix worldMatrix, Matrix viewMatrix, Matrix projectionMatrix, ShaderResourceView texture, SC_jitter_cloth.DLightBuffer[] _DLightBuffer_, SC_jitter_cloth _cuber) { if (!SetShaderParameters(deviceContext, worldMatrix, viewMatrix, projectionMatrix, texture, _cuber._WORLDMATRIXINSTANCES)) { return(false); } RenderShader(deviceContext, _DLightBuffer_, _cuber); return(true); }