internal SharpDX.Direct3D11.InputElement[] GetInputLayout() { var inputs = new SharpDX.Direct3D11.InputElement[_elements.Length]; for (var i = 0; i < _elements.Length; i++) inputs[i] = _elements[i].GetInputElement(); return inputs; }
internal SharpDX.Direct3D11.InputElement[] GetInputLayout() { var inputs = new SharpDX.Direct3D11.InputElement[_elements.Length]; for (var i = 0; i < _elements.Length; i++) { inputs[i] = _elements[i].GetInputElement(); } return(inputs); }
private SharpDX.Direct3D11.InputElement[] ConvertElements( VertexElement [] elements ) { SharpDX.Direct3D11.InputElement [] e = new SharpDX.Direct3D11.InputElement [ elements.Length ]; int offset = 0; for ( int i = 0; i < e.Length; ++i ) { e [ i ] = new SharpDX.Direct3D11.InputElement ( ConvertUsage ( elements [ i ].Type ), elements [ i ].UsageIndex, ConvertType ( elements[i].Size ), offset, 0 ); offset += ConvertRealSize ( elements [ i ].Size ); } return e; }
public GpuInputLayout(GpuDevice device, InputElement[] inputElements, GpuVertexShader vertexShader) { GpuDevice = device; InputElements = new SharpDX.Direct3D11.InputElement[inputElements.Length]; for (int i = 0; i < InputElements.Length; i++) { var element = inputElements[i]; var inputElement = new SharpDX.Direct3D11.InputElement(); inputElement.SemanticName = element.Name; inputElement.SemanticIndex = element.Index; inputElement.Slot = 0; inputElement.Classification = SharpDX.Direct3D11.InputClassification.PerVertexData; inputElement.InstanceDataStepRate = 0; if (i == 0) { inputElement.AlignedByteOffset = 0; } else { inputElement.AlignedByteOffset = InputElements[i - 1].AlignedByteOffset + inputElements[i - 1].Size; } switch (inputElements[i].Size) { case 4: inputElement.Format = SharpDX.DXGI.Format.R32_Float; break; case 8: inputElement.Format = SharpDX.DXGI.Format.R32G32_Float; break; case 12: inputElement.Format = SharpDX.DXGI.Format.R32G32B32_Float; break; case 16: inputElement.Format = SharpDX.DXGI.Format.R32G32B32A32_Float; break; default: break; } InputElements[i] = inputElement; } mInputLayout = new SharpDX.Direct3D11.InputLayout(GpuDevice.Device, vertexShader.ByteCode, InputElements); }
private void CreateInputLayout(InputElementDescription[] inputElements) { if (inputElements == null) { return; } var nativeInputElements = new SharpDX.Direct3D11.InputElement[inputElements.Length]; for (int index = 0; index < inputElements.Length; index++) { var inputElement = inputElements[index]; nativeInputElements[index] = new SharpDX.Direct3D11.InputElement { Slot = inputElement.InputSlot, SemanticName = inputElement.SemanticName, SemanticIndex = inputElement.SemanticIndex, AlignedByteOffset = inputElement.AlignedByteOffset, Format = (SharpDX.DXGI.Format)inputElement.Format, }; } inputLayout = new SharpDX.Direct3D11.InputLayout(NativeDevice, inputSignature, nativeInputElements); }
internal SharpDX.Direct3D11.InputElement GetInputElement() { var element = new SharpDX.Direct3D11.InputElement(); switch (_usage) { case Graphics.VertexElementUsage.Position: element.SemanticName = "SV_Position"; break; case Graphics.VertexElementUsage.Color: element.SemanticName = "COLOR"; break; case Graphics.VertexElementUsage.Normal: element.SemanticName = "NORMAL"; break; case Graphics.VertexElementUsage.TextureCoordinate: element.SemanticName = "TEXCOORD"; break; case Graphics.VertexElementUsage.BlendIndices: element.SemanticName = "BLENDINDICES"; break; case Graphics.VertexElementUsage.BlendWeight: element.SemanticName = "BLENDWEIGHT"; break; case Graphics.VertexElementUsage.Binormal: element.SemanticName = "BINORMAL"; break; case Graphics.VertexElementUsage.Tangent: element.SemanticName = "TANGENT"; break; case Graphics.VertexElementUsage.PointSize: element.SemanticName = "PSIZE"; break; default: throw new NotSupportedException("Unknown vertex element usage!"); } element.SemanticIndex = _usageIndex; switch (_format) { case VertexElementFormat.Single: element.Format = SharpDX.DXGI.Format.R32_Float; break; case VertexElementFormat.Vector2: element.Format = SharpDX.DXGI.Format.R32G32_Float; break; case VertexElementFormat.Vector3: element.Format = SharpDX.DXGI.Format.R32G32B32_Float; break; case VertexElementFormat.Vector4: element.Format = SharpDX.DXGI.Format.R32G32B32A32_Float; break; case VertexElementFormat.Color: element.Format = SharpDX.DXGI.Format.R8G8B8A8_UNorm; break; case VertexElementFormat.Byte4: element.Format = SharpDX.DXGI.Format.R8G8B8A8_UInt; break; case VertexElementFormat.Short2: element.Format = SharpDX.DXGI.Format.R16G16_SInt; break; case VertexElementFormat.Short4: element.Format = SharpDX.DXGI.Format.R16G16B16A16_SInt; break; case VertexElementFormat.NormalizedShort2: element.Format = SharpDX.DXGI.Format.R16G16_SNorm; break; case VertexElementFormat.NormalizedShort4: element.Format = SharpDX.DXGI.Format.R16G16B16A16_SNorm; break; case VertexElementFormat.HalfVector2: element.Format = SharpDX.DXGI.Format.R16G16_Float; break; case VertexElementFormat.HalfVector4: element.Format = SharpDX.DXGI.Format.R16G16B16A16_Float; break; default: throw new NotSupportedException("Unknown vertex element format!"); } element.Slot = 0; element.AlignedByteOffset = _offset; // Note that instancing is only supported in // feature level 9.3 and above. element.Classification = SharpDX.Direct3D11.InputClassification.PerVertexData; element.InstanceDataStepRate = 0; return element; }
internal SharpDX.Direct3D11.InputElement GetInputElement() { var element = new SharpDX.Direct3D11.InputElement(); switch (_usage) { case Graphics.VertexElementUsage.Position: element.SemanticName = "SV_Position"; break; case Graphics.VertexElementUsage.Color: element.SemanticName = "COLOR"; break; case Graphics.VertexElementUsage.Normal: element.SemanticName = "NORMAL"; break; case Graphics.VertexElementUsage.TextureCoordinate: element.SemanticName = "TEXCOORD"; break; case Graphics.VertexElementUsage.BlendIndices: element.SemanticName = "BLENDINDICES"; break; case Graphics.VertexElementUsage.BlendWeight: element.SemanticName = "BLENDWEIGHT"; break; case Graphics.VertexElementUsage.Binormal: element.SemanticName = "BINORMAL"; break; case Graphics.VertexElementUsage.Tangent: element.SemanticName = "TANGENT"; break; case Graphics.VertexElementUsage.PointSize: element.SemanticName = "PSIZE"; break; default: throw new NotImplementedException("Unknown vertex element usage!"); } element.SemanticIndex = _usageIndex; switch (_format) { case VertexElementFormat.Single: element.Format = SharpDX.DXGI.Format.R32_Float; break; case VertexElementFormat.Vector2: element.Format = SharpDX.DXGI.Format.R32G32_Float; break; case VertexElementFormat.Vector3: element.Format = SharpDX.DXGI.Format.R32G32B32_Float; break; case VertexElementFormat.Vector4: element.Format = SharpDX.DXGI.Format.R32G32B32A32_Float; break; case VertexElementFormat.Color: element.Format = SharpDX.DXGI.Format.R8G8B8A8_UNorm; break; case VertexElementFormat.Byte4: element.Format = SharpDX.DXGI.Format.R8G8B8A8_UInt; break; case VertexElementFormat.Short2: element.Format = SharpDX.DXGI.Format.R16G16_SInt; break; case VertexElementFormat.Short4: element.Format = SharpDX.DXGI.Format.R16G16B16A16_SInt; break; case VertexElementFormat.NormalizedShort2: element.Format = SharpDX.DXGI.Format.R16G16_SNorm; break; case VertexElementFormat.NormalizedShort4: element.Format = SharpDX.DXGI.Format.R16G16B16A16_SNorm; break; case VertexElementFormat.HalfVector2: element.Format = SharpDX.DXGI.Format.R16G16_Float; break; case VertexElementFormat.HalfVector4: element.Format = SharpDX.DXGI.Format.R16G16B16A16_Float; break; default: throw new NotImplementedException("Unknown vertex element format!"); } element.Slot = 0; element.AlignedByteOffset = _offset; // Note that instancing is only supported in // feature level 9.3 and above. element.Classification = SharpDX.Direct3D11.InputClassification.PerVertexData; element.InstanceDataStepRate = 0; return(element); }