private unsafe GraphicsPrimitive CreateQuadPrimitive(GraphicsContext graphicsContext, GraphicsBuffer vertexStagingBuffer, GraphicsBuffer indexStagingBuffer, GraphicsBuffer textureStagingBuffer) { var graphicsDevice = GraphicsDevice; var graphicsSurface = graphicsDevice.Surface; var graphicsPipeline = CreateGraphicsPipeline(graphicsDevice, "Texture3D", "main", "main"); var constantBuffer = _constantBuffer; var indexBuffer = _indexBuffer; var vertexBuffer = _vertexBuffer; var vertexBufferRegion = CreateVertexBufferRegion(graphicsContext, vertexBuffer, vertexStagingBuffer, aspectRatio: graphicsSurface.Width / graphicsSurface.Height); graphicsContext.Copy(vertexBuffer, vertexStagingBuffer); var indexBufferRegion = CreateIndexBufferRegion(graphicsContext, indexBuffer, indexStagingBuffer); graphicsContext.Copy(indexBuffer, indexStagingBuffer); var inputResourceRegions = new GraphicsMemoryRegion <GraphicsResource>[3] { CreateConstantBufferRegion(graphicsContext, constantBuffer), CreateConstantBufferRegion(graphicsContext, constantBuffer), CreateTexture3DRegion(graphicsContext, textureStagingBuffer), }; return(graphicsDevice.CreatePrimitive(graphicsPipeline, vertexBufferRegion, SizeOf <Texture3DVertex>(), indexBufferRegion, SizeOf <ushort>(), inputResourceRegions));
private unsafe GraphicsPrimitive CreateGraphicsPrimitive(GraphicsContext graphicsContext, GraphicsBuffer vertexStagingBuffer, GraphicsBuffer indexStagingBuffer, GraphicsBuffer textureStagingBuffer) { var graphicsDevice = GraphicsDevice; var graphicsSurface = graphicsDevice.Surface; var graphicsPipeline = CreateGraphicsPipeline(graphicsDevice, "Sierpinski", "main", "main"); var constantBuffer = _constantBuffer; var indexBuffer = _indexBuffer; var vertexBuffer = _vertexBuffer; (var vertices, var indices) = (_sierpinskiShape == SierpinskiShape.Pyramid) ? SierpinskiPyramid.CreateMeshTetrahedron(_recursionDepth) : SierpinskiPyramid.CreateMeshQuad(_recursionDepth); var normals = SierpinskiPyramid.MeshNormals(vertices); var vertexBufferRegion = CreateVertexBufferRegion(graphicsContext, vertexBuffer, vertexStagingBuffer, vertices, normals); graphicsContext.Copy(vertexBuffer, vertexStagingBuffer); var indexBufferRegion = CreateIndexBufferRegion(graphicsContext, indexBuffer, indexStagingBuffer, indices); graphicsContext.Copy(indexBuffer, indexStagingBuffer); var inputResourceRegions = new GraphicsMemoryRegion <GraphicsResource>[3] { CreateConstantBufferRegion(graphicsContext, constantBuffer), CreateConstantBufferRegion(graphicsContext, constantBuffer), CreateTexture3DRegion(graphicsContext, textureStagingBuffer), }; return(graphicsDevice.CreatePrimitive(graphicsPipeline, vertexBufferRegion, SizeOf <PosNormTex3DVertex>(), indexBufferRegion, SizeOf <uint>(), inputResourceRegions));
private unsafe GraphicsPrimitive CreateTrianglePrimitive(GraphicsContext graphicsContext, GraphicsBuffer vertexStagingBuffer, GraphicsBuffer textureStagingBuffer) { var graphicsDevice = GraphicsDevice; var graphicsSurface = graphicsDevice.Surface; var graphicsPipeline = CreateGraphicsPipeline(graphicsDevice, "Texture", "main", "main"); var vertexBuffer = _vertexBuffer; var vertexBufferRegion = CreateVertexBufferRegion(graphicsContext, vertexBuffer, vertexStagingBuffer, aspectRatio: graphicsSurface.Width / graphicsSurface.Height); graphicsContext.Copy(vertexBuffer, vertexStagingBuffer); var inputResourceRegions = new GraphicsMemoryRegion <GraphicsResource>[1] { CreateTexture2DRegion(graphicsContext, textureStagingBuffer) }; return(graphicsDevice.CreatePrimitive(graphicsPipeline, vertexBufferRegion, SizeOf <TextureVertex>(), inputResourceRegions: inputResourceRegions));