コード例 #1
0
        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;
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: VertexDeclaration.cs プロジェクト: Daramkun/Misty
 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;
 }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: VertexElement.cs プロジェクト: KennethYap/MonoGame
        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;
        }
コード例 #7
0
        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);
        }