Example #1
0
        private void init(IBufferLayoutDesc bufferLayoutDesc, int vertexCount)
        {
            vertexArraySize = bufferLayoutDesc.FloatCount;

            var positions = bufferLayoutDesc.ElementsUsages(BufferLayoutElementUsages.Position);

            positionOffset = new int[positions.Count];
            positionTypes  = new BufferLayoutElementTypes[positions.Count];
            int i = 0;

            foreach (var position in positions)
            {
                positionOffset[i] = position.FloatOffset;
                positionTypes[i]  = position.Type;
                ++i;
            }

            var colors = bufferLayoutDesc.ElementsUsages(BufferLayoutElementUsages.Color);

            colorOffset = new int[colors.Count];
            i           = 0;
            foreach (var color in colors)
            {
                colorOffset[i] = color.FloatOffset;
                ++i;
            }

            var uvs = bufferLayoutDesc.ElementsUsages(BufferLayoutElementUsages.UV);

            uvOffset = new int[uvs.Count];
            i        = 0;
            foreach (var uv in uvs)
            {
                uvOffset[i] = uv.FloatOffset;
                ++i;
            }

            var normals = bufferLayoutDesc.ElementsUsages(BufferLayoutElementUsages.Normal);

            normalOffset = new int[normals.Count];
            i            = 0;
            foreach (var normal in normals)
            {
                normalOffset[i] = normal.FloatOffset;
                ++i;
            }

            vertex = new float[vertexArraySize];
            for (i = 0; i != vertex.Length; ++i)
            {
                vertex[i] = 0;
            }
            this.vertexCount = vertexCount;
            vertices         = new float[vertexCount * vertexArraySize];
            for (i = 0; i != vertices.Length; ++i)
            {
                vertices[i] = 0;
            }
        }
Example #2
0
 protected IVertexBuffer(IDisposableResource parent, IBufferLayoutDesc bufferLayoutDesc, BufferUsages usage, float[] vertices)
     : base(parent)
 {
     this.usage = usage;
     vertexByteSize = bufferLayoutDesc.ByteSize;
     vertexFloatArraySize = bufferLayoutDesc.FloatCount;
     vertexCount = vertices.Length / vertexFloatArraySize;
 }
Example #3
0
 protected IVertexBuffer(IDisposableResource parent, IBufferLayoutDesc bufferLayoutDesc, BufferUsages usage, float[] vertices)
     : base(parent)
 {
     this.usage           = usage;
     vertexByteSize       = bufferLayoutDesc.ByteSize;
     vertexFloatArraySize = bufferLayoutDesc.FloatCount;
     vertexCount          = vertices.Length / vertexFloatArraySize;
 }
Example #4
0
        public BufferLayout(IDisposableResource parent, IShader shader, IBufferLayoutDesc desc)
            : base(parent)
        {
            try
            {
                var video = parent.FindParentOrSelfWithException<Video>();

                com = new BufferLayoutCom();
                var error = com.Init(video.com, ((BufferLayoutDesc)desc).com);

                switch (error)
                {
                    case BufferLayoutErrors.VertexDeclaration: Debug.ThrowError("BufferLayout", "Failed to create vertex declaration"); break;
                }
            }
            catch (Exception e)
            {
                Dispose();
                throw e;
            }
        }
Example #5
0
 protected IQuickDraw(IDisposableResource parent, IBufferLayoutDesc bufferLayoutDesc)
     : base(parent)
 {
     init(bufferLayoutDesc, 128 * 2);
 }
Example #6
0
 public VertexBuffer(IDisposableResource parent, IBufferLayoutDesc bufferLayoutDesc, BufferUsages usage, VertexBufferTopologys topology, float[] vertices, int[] indices)
     : base(parent, bufferLayoutDesc, usage, vertices)
 {
     init(parent, bufferLayoutDesc, usage, topology, vertices, indices);
 }
Example #7
0
        private void init(IDisposableResource parent, IBufferLayoutDesc bufferLayoutDesc, BufferUsages usage, VertexBufferTopologys topology, float[] vertices, int[] indices)
        {
            try
            {
                var video = parent.FindParentOrSelfWithException<Video>();

                this.topology = topology;
                REIGN_D3DPRIMITIVETYPE topologyType = REIGN_D3DPRIMITIVETYPE.TRIANGLELIST;
                switch (topology)
                {
                    case VertexBufferTopologys.Triangle: topologyType = REIGN_D3DPRIMITIVETYPE.TRIANGLELIST; break;
                    case VertexBufferTopologys.Line: topologyType = REIGN_D3DPRIMITIVETYPE.LINELIST; break;
                    case VertexBufferTopologys.Point: topologyType = REIGN_D3DPRIMITIVETYPE.POINTLIST; break;
                }

                com = new VertexBufferCom(video.com, topologyType);
                var error = com.Init(vertices, REIGN_D3DUSAGE.WRITEONLY, vertexCount, vertexByteSize);
                if (error == VertexBufferErrors.VertexBuffer) Debug.ThrowError("VertexBuffer", "Failed to create VertexBuffer");

                if (indices != null && indices.Length != 0) indexBuffer = new IndexBuffer(this, usage, indices);
            }
            catch (Exception e)
            {
                Dispose();
                throw e;
            }
        }