Ejemplo n.º 1
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);
        }
Ejemplo n.º 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++;
            }
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
0
 private void timer1_Tick(object sender, EventArgs e)
 {
     device.SetRenderTarget();
     technique.Draw(region);
     technique.Present();
 }