Ejemplo n.º 1
0
        async System.Threading.Tasks.Task InitUIDrawer()
        {
            var rc   = EngineNS.CEngine.Instance.RenderContext;
            var font = CEngine.Instance.FontManager.GetFont(EngineNS.CEngine.Instance.Desc.DefaultFont, 24, 1024, 128);
            var mtl  = await CEngine.Instance.MaterialInstanceManager.GetMaterialInstanceAsync(rc, RName.GetRName("Material/font.instmtl"));

            var textMeshInfo = new EngineNS.Bricks.FreeTypeFont.CFontMesh();
            await textMeshInfo.SetMaterial(rc, mtl, "txDiffuse");

            textMeshInfo.DrawText(rc, font, "模型", true);

            textMeshInfo.RenderMatrix = EngineNS.Matrix.Translate(20, 0, 0);
            //textMeshInfo.Offset = new Vector2(20, 0);
            //textMeshInfo.Scale = new Vector2(1, 1);

            var rp = mPreviewSceneControl.ViewPort.RPolicy as EngineNS.Graphics.RenderPolicy.CGfxRP_EditorMobile;

            rp.OnDrawUI += (cmd, view) =>
            {
                var    mesh    = mPreviewActor.GetComponentMesh(null);
                string outInfo = $"材质数:{mesh.MeshPrimitives.AtomNumber}:";
                for (int i = 0; i < mesh.MeshPrimitives.AtomNumber; i++)
                {
                    CDrawPrimitiveDesc desc = new CDrawPrimitiveDesc();
                    mesh.MeshPrimitives.GetAtom((UInt32)i, 0, ref desc);

                    var lodLvl = mesh.MeshPrimitives.GetLodLevel((UInt32)i, CurLod);

                    CDrawPrimitiveDesc desc1 = new CDrawPrimitiveDesc();
                    mesh.MeshPrimitives.GetAtom((UInt32)i, lodLvl, ref desc1);

                    outInfo += $"({desc1.NumPrimitives}/{desc.NumPrimitives}) ";
                }

                textMeshInfo.DrawText(rc, font, outInfo, true);
                for (int i = 0; i < textMeshInfo.PassNum; i++)
                {
                    var pass = textMeshInfo.GetPass(i);
                    if (pass == null)
                    {
                        continue;
                    }

                    pass.ViewPort = view.Viewport;
                    pass.BindCBuffer(pass.Effect.ShaderProgram, pass.Effect.CacheData.CBID_View, view.ScreenViewCB);
                    pass.ShadingEnv.BindResources(textMeshInfo.Mesh, pass);

                    cmd.PushPass(pass);
                }
            };
        }
Ejemplo n.º 2
0
        async System.Threading.Tasks.Task CreatePreviewMeshesActor(CGfxMeshPrimitives meshPri, bool initProgressMesh)
        {
            mPreviewActor = await NewMeshActor(meshPri);

            mPreviewActor.Placement.Location = new EngineNS.Vector3(0.0f, 0.0f, 0.0f);
            //mPreviewActor.Placement.Scale *= 0.01f;
            mPreviewSceneControl.AddUniqueActor(mPreviewActor, true);

            mPreviewActor.GetComponentMesh(null).SetPassUserFlags(1);

            //mProgressMesh = new EngineNS.Bricks.MeshProcessor.ProgressMeshProcessor();
            if (initProgressMesh)
            {
                mProgressMesh.InitMesh(EngineNS.CEngine.Instance.RenderContext, meshPri);
                mProgressMesh.ClearLods();
                mProgressMesh.PushLod(0.97f);
                mProgressMesh.PushLod(0.93f);
                mProgressMesh.PushLod(0.9f);
                mProgressMesh.PushLod(0.87f);
                mProgressMesh.PushLod(0.83f);
                mProgressMesh.PushLod(0.8f);
                mProgressMesh.PushLod(0.75f);
                mProgressMesh.PushLod(0.7f);
                mProgressMesh.PushLod(0.6f);
                mProgressMesh.PushLod(0.5f);
                mProgressMesh.PushLod(0.3f);
                mProgressMesh.PushLod(0.1f);
                mProgressMesh.PushLod(0.0f);
            }

            await InitUIDrawer();
        }
Ejemplo n.º 3
0
        void CreatePreviewMeshesActor(CGfxMesh mesh)
        {
            if (mesh == null)
            {
                return;
            }
            mPreviewActor = NewMeshActor(mesh);
            mPreviewActor.Placement.Location = new EngineNS.Vector3(0.0f, 0.0f, 0.0f);
            mPreviewSceneControl.AddUniqueActor(mPreviewActor);

            mPreviewActor.GetComponentMesh(null).SetPassUserFlags(1);

            var nu = InitUIDrawer();
        }