コード例 #1
0
        private void RenderMesh(SceneElement sceneElement, Matrix viewProj, Color?wireframeColor = null)
        {
            var worldViewProj = sceneElement.Transform * viewProj;

            worldViewProj.Transpose();

            if (wireframeColor.HasValue)
            {
                immediateContext.Rasterizer.State = wireframeOverlayRastState;
                immediateContext.PixelShader.SetShaderResource(0, colorTextures.GetTextureViewOfColor(wireframeColor.Value));
            }
            else
            {
                immediateContext.Rasterizer.State = defaultRastState;
                immediateContext.PixelShader.SetShaderResource(0, textureCache.GetSRV(sceneElement.Mesh.TexturePath));
            }

            immediateContext.UpdateSubresource(ref worldViewProj, vertexShaderPerFrameConstantBuffer);

            immediateContext.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(sceneElement.Mesh.VertexBuffer, 24, 0));
            immediateContext.InputAssembler.SetIndexBuffer(sceneElement.Mesh.IndexBuffer, Format.R16_UInt, 0);

            immediateContext.DrawIndexed(sceneElement.Mesh.IndexCount, 0, 0);
        }
コード例 #2
0
        public ShaderResourceView GetSRV(string textureName)
        {
            TextureAndSRV returnValue;

            return(textures.TryGetValue(textureName, out returnValue) ? returnValue.SRV : colorTextures.GetTextureViewOfColor(Color.Gray));
        }