Example #1
0
        /// <summary>
        /// 设置渲染缓冲区的视口尺寸和其他属性。
        /// 渲染是双缓冲的。当调用 present() 方法时,后台缓冲区与可见的前台缓冲区交换。
        /// 缓冲区的最小大小为 32 x 32 像素。
        /// 配置缓冲区是一个缓慢的操作。在正常渲染操作期间,请避免更改缓冲区大小或属性。
        ///
        /// </summary>
        public void configureBackBuffer(int width, int height, IRenderTargetAdapter renderBufferAdapter)
        {
            if (width < 32 || height < 32 || width % 2 != 0 || height % 2 != 0)
            {
                throw new ArgumentException("缓冲区的最小大小为 32 x 32 像素,并且必须是偶数");
            }

            this.programConstants    = new ProgramConstants();
            this.quadFragementUnit   = new QuadFragementUnit();
            this.renderBufferAdapter = renderBufferAdapter;

            backBufferWidth  = width;
            backBufferHeight = height;


            backBufferRenderTarget = new RenderTargetBind();
            var backbuffer = new ScreenFrameBuffer(width, height, 1, 1);

            backBufferRenderTarget.renderTarget = backbuffer;
            backBufferRenderTarget.zBuffer      = new ZBuffer(backbuffer.rt_width, backbuffer.rt_height);

            currentRenderTarget = backBufferRenderTarget;
            needclearflag       = true;

            _culling                   = Context3DTriangleFace.NONE;
            _depthtest_depthMask       = true;
            _depthtest_passCompareMode = Context3DCompareMode.ALWAYS;

            samplers = new Sampler[8];
            for (int i = 0; i < samplers.Length; i++)
            {
                samplers[i] = new Sampler();
            }

            if (backbuffer.rt_width == width && backbuffer.rt_height == height)
            {
                DebugBuffer = new debugger.FrameDebugBuffer(width, height);
            }
            else
            {
                DebugBuffer = null;
            }
        }
Example #2
0
 /// <summary>
 /// 设置三角形剔除模式。
 /// 可基于其相对于视图平面的方向,提前在呈现管道流程中从场景中排除三角形。如模型外部所示,一致地指定顶点顺序(顺时针或逆时针)以正确剔除。
 /// </summary>
 /// <param name="triangleFaceToCull"></param>
 public void setCulling(Context3DTriangleFace triangleFaceToCull)
 {
     _culling = triangleFaceToCull;
 }