Example #1
0
        //============================================================
        public void Export3d2(FDrGeometry geometry, string filename)
        {
            SIntSize    size   = new SIntSize(1024, 1024);
            Form        form   = new Form();
            FDxDevice3D device = RDxCore.Adapter.CreateDevice(form.Handle, size.Width, size.Height);

            device.ModeWireFrame = false;
            // 设置几何体
            FDxRegion         region         = new FDxRegion();
            FDsNormalGeometry normalGeometry = new FDsNormalGeometry();

            normalGeometry.Device = device;
            normalGeometry.LoadResource(geometry);
            region.Renderables.Push(normalGeometry);
            // 设置目标
            FDxBufferedTexture texture = new FDxBufferedTexture();

            texture.Device = device;
            texture.Create(size.Width, size.Height);
            device.SetRenderTarget(texture);
            // 绘制结果
            FDxTechnique technique = RDxCore.TechniqueConsole.Get(device, "normal.map");

            technique.Draw(region);
            // 保存内容
            texture.SaveFile(filename);
            // 创建设备
            // QNormalMapForm form = new QNormalMapForm();
            // form.geometry = geometry;
            // Application.Run(form);
        }
Example #2
0
        //============================================================
        public void ExportMerge(FDrModel model)
        {
            SIntSize    size   = new SIntSize(_width, _height);
            Form        form   = new Form();
            FDxDevice3D device = RDxCore.Adapter.CreateDevice(form.Handle, size.Width, size.Height);

            device.ModeWireFrame = false;
            // 设置几何体
            FDxRegion region = new FDxRegion();
            // 设置目标
            FDxBufferedTexture texture = new FDxBufferedTexture();

            texture.Device = device;
            texture.Create(size.Width, size.Height);
            device.SetRenderTarget(texture);
            // 渲染几何体
            FDxTechnique technique = RDxCore.TechniqueConsole.Get(device, "light.map");
            int          index     = 0;

            foreach (INamePair <FDrGeometry> pair in model.Mesh.GeometryDictionary)
            {
                FDrLightGeometry geometry = new FDrLightGeometry();
                geometry.Device = device;
                geometry.LoadResource(pair.Value);
                region.Renderables.Clear();
                region.Renderables.Push(geometry);
                // 绘制结果
                technique.Draw(region);
                // 保存内容
                texture.SaveFile(model.Directory + "/" + RInt.Pad(index, 3) + ".png");
                index++;
            }
        }
Example #3
0
        //============================================================
        public void ExportStream(string importFileName, Stream exportStream)
        {
            FDxBufferedTexture texture = ExportTexture(importFileName);

            // 保存内容
            exportStream.Position = 0;
            texture.SaveStream(exportStream);
        }
Example #4
0
        //============================================================
        public FDxBufferedTexture ExportTexture(string importFileName)
        {
            // 获得图片大小
            Bitmap bmp = new Bitmap(importFileName);

            _size.Set(bmp.Width, bmp.Height);
            bmp.Dispose();
            // 生成目标
            Form        form   = new Form();
            FDxDevice3D device = RDxCore.Adapter.CreateDevice(form.Handle, _size.Width, _size.Height);

            device.ModeWireFrame = false;
            // 设置几何体
            FDxRegion region = new FDxRegion();
            // 渲染几何体
            FDxTechnique       technique = RDxCore.TechniqueConsole.Get(device, "growing");
            FDrGrowingGeometry geometry  = new FDrGrowingGeometry();

            geometry.Device = device;
            geometry.LoadResource();
            // 绘制结果
            region.Renderables.Push(geometry);
            // 设置目标
            FDxBufferedTexture texture = new FDxBufferedTexture();

            texture.Device = device;
            texture.Create(_size.Width, _size.Height);
            // 绘制目标
            FDxTexture originTexture = new FDxTexture();

            originTexture.Device = device;
            originTexture.LoadFile(importFileName);
            geometry.Material.Textures.Push(originTexture);
            // 绘制目标
            FDxTexture importTexture = new FDxTexture();

            importTexture.Device = device;
            importTexture.LoadFile(importFileName);
            geometry.Material.Textures.Push(importTexture);
            MemoryStream stream = new MemoryStream();

            for (int n = 0; n < _borderCount; n++)
            {
                device.SetRenderTarget(texture);
                // 绘制目标
                technique.Draw(region);
                device.SetRenderTarget();
                // 复制渲染目标为开始
                //importTexture.CopyFrom(texture);
                texture.SaveStream(stream);
                importTexture.LoadStream(stream);
            }
            // 保存内容
            return(texture);
        }
Example #5
0
        private void QNormalMapForm_Load(object sender, EventArgs e)
        {
            device = RDxCore.Adapter.CreateDevice(Handle, 1024, 1024);
            // 设置几何体
            region = new FDxRegion();
            FDsNormalGeometry normalGeometry = new FDsNormalGeometry();

            normalGeometry.Device = device;
            normalGeometry.LoadResource(geometry);
            region.Renderables.Push(normalGeometry);
            // 设置目标
            FDxBufferedTexture texture = new FDxBufferedTexture();

            texture.Device = device;
            texture.Create(1024, 1024);
            //device.SetRenderTarget(texture);
            // 绘制结果
            technique = RDxCore.TechniqueConsole.Get(device, "normal.map");
            // 保存内容
            //texture.SaveFile(filename);
            timer1.Enabled = true;
        }
Example #6
0
        //============================================================
        public void Export(string importFileName, string exportFileName)
        {
            FDxBufferedTexture texture = ExportTexture(importFileName);

            texture.SaveFile(exportFileName);
        }
Example #7
0
 //============================================================
 public void SetRenderTarget(FDxBufferedDepth depth, FDxBufferedTexture target)
 {
     _nativeTargetActive = target.NativeTarget;
     _nativeDevice.OutputMerger.SetTargets(depth.NativeDepth, _nativeTargetActive);
     _nativeDevice.Rasterizer.SetViewports(target.NativeViewport);
 }