protected override void OnCreateGeometryBuffers() { // --- set up buffers CreateVertexBuffer(); // --- set up indexbuffer indexBuffer.CreateBufferFromDataArray(Device, geometryInternal.Indices); }
protected override void OnGeometryPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnGeometryPropertyChanged(sender, e); if (sender is MeshGeometry3D) { if (e.PropertyName.Equals(nameof(MeshGeometry3D.TextureCoordinates))) { OnUpdateVertexBuffer(UpdateTextureOnly); } else if (e.PropertyName.Equals(nameof(MeshGeometry3D.Positions))) { OnUpdateVertexBuffer(UpdatePositionOnly); } else if (e.PropertyName.Equals(nameof(MeshGeometry3D.Colors))) { OnUpdateVertexBuffer(UpdateColorsOnly); } else if (e.PropertyName.Equals(nameof(MeshGeometry3D.Indices)) || e.PropertyName.Equals(Geometry3D.TriangleBuffer)) { indexBuffer.CreateBufferFromDataArray(this.Device, this.geometryInternal.Indices); InvalidateRender(); } else if (e.PropertyName.Equals(Geometry3D.VertexBuffer)) { OnUpdateVertexBuffer(CreateDefaultVertexArray); } } }
protected override void OnCreateGeometryBuffers() { // --- init vertex buffer vertexBuffer.CreateBufferFromDataArray(Device, CreateDefaultVertexArray(), geometryInternal.Positions.Count); // --- init index buffer indexBuffer.CreateBufferFromDataArray(Device, geometryInternal.Indices.Array); }
private void CreateVertexBuffer(Func <DefaultVertex[]> updateFunction) { // --- get geometry var geometry = this.geometryInternal as MeshGeometry3D; // -- set geometry if given if (geometry != null && geometry.Positions != null) { var data = updateFunction(); vertexBuffer.CreateBufferFromDataArray(this.Device, data); } }
private void CreateVertexBuffer() { var geometry = geometryInternal as PointGeometry3D; if (geometry != null && geometry.Positions != null) { // --- set up buffers var data = CreateVertexArray(); vertexBuffer.CreateBufferFromDataArray(this.Device, data, geometry.Positions.Count); } InvalidateRender(); }
protected override bool OnAttach(IRenderHost host) { if (!base.OnAttach(host)) { return(false); } if (renderHost.RenderTechnique == renderHost.RenderTechniquesManager.RenderTechniques.Get(DeferredRenderTechniqueNames.Deferred) || renderHost.RenderTechnique == renderHost.RenderTechniquesManager.RenderTechniques.Get(DeferredRenderTechniqueNames.GBuffer)) { return(false); } var geometry = Geometry as LineGeometry3D; if (geometry != null) { vertexBuffer.CreateBufferFromDataArray(Device, CreateVertexArray()); indexBuffer.CreateBufferFromDataArray(Device, geometry.Indices); } //hasInstances = (Instances != null) && (Instances.Any()); //bHasInstances = effect.GetVariableByName("bHasInstances").AsScalar(); //if (hasInstances) //{ // isInstanceChanged = true; // InstanceBuffer.CreateBufferFromDataArray(Device, Instances); //} vViewport = effect.GetVariableByName("vViewport").AsVector(); vLineParams = effect.GetVariableByName("vLineParams").AsVector(); var lineParams = new Vector4((float)Thickness, (float)Smoothness, 0, 0); vLineParams.Set(lineParams); OnRasterStateChanged(); // Device.ImmediateContext.Flush(); return(true); }
protected override void OnCreateGeometryBuffers() { if (geometryInternal != null && geometryInternal.Positions != null) { vertexBuffer.CreateBufferFromDataArray(this.Device, CreateBillboardVertexArray(), geometryInternal.Positions.Count); } Disposer.RemoveAndDispose(ref billboardTextureView); Disposer.RemoveAndDispose(ref billboardAlphaTextureView); var billboardGeometry = geometryInternal as IBillboardText; if (billboardGeometry != null) { if (billboardGeometry.Texture != null) { var textureBytes = billboardGeometry.Texture.ToByteArray(); billboardTextureView = TextureLoader.FromMemoryAsShaderResourceView(Device, textureBytes); } if (billboardGeometry.AlphaTexture != null) { billboardAlphaTextureView = global::SharpDX.Toolkit.Graphics.Texture.Load(Device, billboardGeometry.AlphaTexture); } } }
/// <summary> /// By overriding Attach, we can provide our own vertex array. /// </summary> /// <param name="host">An object whose type implements IRenderHost.</param> protected override bool OnAttach(IRenderHost host) { if (!base.OnAttach(host)) { return(false); } if (renderHost.RenderTechnique == renderHost.RenderTechniquesManager.RenderTechniques.Get(DeferredRenderTechniqueNames.Deferred) || renderHost.RenderTechnique == renderHost.RenderTechniquesManager.RenderTechniques.Get(DeferredRenderTechniqueNames.GBuffer)) { return(false); } var geometry = Geometry as PointGeometry3D; if (geometry != null) { vertexBuffer.CreateBufferFromDataArray(Device, CreateVertexArray()); } /// --- set up const variables // vViewport = effect.GetVariableByName("vViewport").AsVector(); //this.vFrustum = effect.GetVariableByName("vFrustum").AsVector(); vPointParams = effect.GetVariableByName("vPointParams").AsVector(); /// --- set effect per object const vars var pointParams = new Vector4((float)Size.Width, (float)Size.Height, (float)Figure, (float)FigureRatio); vPointParams.Set(pointParams); /// --- create raster state OnRasterStateChanged(); /// --- flush // Device.ImmediateContext.Flush(); return(true); }
protected override void OnCreateGeometryBuffers() { vertexBuffer.CreateBufferFromDataArray(Device, CreateCustomVertexArray()); indexBuffer.CreateBufferFromDataArray(Device, Geometry.Indices.ToArray()); }
protected override void OnCreateGeometryBuffers() { CreateVertexBuffer(CreateDefaultVertexArray); indexBuffer.CreateBufferFromDataArray(this.Device, geometryInternal.Indices); }