• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# RenderContext类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中RenderContext的典型用法代码示例。如果您正苦于以下问题:C# RenderContext类的具体用法?C# RenderContext怎么用?C# RenderContext使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



RenderContext类属于命名空间,在下文中一共展示了RenderContext类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: Render

		public void Render(RenderContext context)
		{
			var value = Template.GetValue(context.RenderModel, this.Key);

			if(context.RenderValue != null)
			{
				var rendered = context.RenderValue(this.Key, value, context);
				if(rendered)
				{
					return;
				}
			}

			if(value == null)
			{
				return;
			}

			var iRenderizable = value as IRenderizable;
			if(iRenderizable != null)
			{
				iRenderizable.Render(context);
			}
			else
			{
				context.Writer.Write(value.ToString());
			}
		}
开发者ID:scorredoira,项目名称:Sfx.Templates,代码行数:28,代码来源:ModelValue.cs


示例2: FrustumCulling

        // TODO: Find a way to replug this

        /// <summary>
        /// Adds a default frustum culling for rendering only meshes that are only inside the frustum/
        /// </summary>
        /// <param name="modelRenderer">The model renderer.</param>
        /// <returns>ModelRenderer.</returns>
        //public static ModelComponentRenderer AddDefaultFrustumCulling(this ModelComponentRenderer modelRenderer)
        //{
        //    modelRenderer.UpdateMeshes = FrustumCulling;
        //    return modelRenderer;
        //}

        private static void FrustumCulling(RenderContext context, FastList<RenderMesh> meshes)
        {
            Matrix viewProjection, mat1, mat2;

            // Compute view * projection
            context.Parameters.Get(TransformationKeys.View, out mat1);
            context.Parameters.Get(TransformationKeys.Projection, out mat2);
            Matrix.Multiply(ref mat1, ref mat2, out viewProjection);

            var frustum = new BoundingFrustum(ref viewProjection);

            for (var i = 0; i < meshes.Count; ++i)
            {
                var renderMesh = meshes[i];

                // Fast AABB transform: http://zeuxcg.org/2010/10/17/aabb-from-obb-with-component-wise-abs/
                // Get world matrix
                renderMesh.Mesh.Parameters.Get(TransformationKeys.World, out mat1);

                // Compute transformed AABB (by world)
                var boundingBoxExt = new BoundingBoxExt(renderMesh.Mesh.BoundingBox);
                boundingBoxExt.Transform(mat1);

                // Perform frustum culling
                if (!frustum.Contains(ref boundingBoxExt))
                {
                    meshes.SwapRemoveAt(i--);
                }
            }
        }
开发者ID:Powerino73,项目名称:paradox,代码行数:43,代码来源:ModelRendererExtensions.cs


示例3: DrawCore

        protected override void DrawCore(RenderContext context, RenderItemCollection renderItems, int fromIndex, int toIndex)
        {
            var graphicsDevice = context.GraphicsDevice;
            var destination = new RectangleF(0, 0, 1, 1);

            // find the last background to display with valid texture
            BackgroundComponent background = null;
            for (var i = toIndex; i >= fromIndex; --i)
            {
                background = (BackgroundComponent)renderItems[i].DrawContext;
                if (background.Texture != null)
                    break;
            }

            // Abort if not valid background component
            if (background == null || background.Texture == null)
                return;

            var texture = background.Texture;
            var target = CurrentRenderFrame;
            var imageBufferMinRatio = Math.Min(texture.ViewWidth / (float)target.Width, texture.ViewHeight / (float)target.Height);
            var sourceSize = new Vector2(target.Width * imageBufferMinRatio, target.Height * imageBufferMinRatio);
            var source = new RectangleF((texture.ViewWidth - sourceSize.X) / 2, (texture.ViewHeight - sourceSize.Y) / 2, sourceSize.X, sourceSize.Y);

            spriteBatch.Parameters.Add(BackgroundEffectKeys.Intensity, background.Intensity);
            spriteBatch.Begin(SpriteSortMode.FrontToBack, graphicsDevice.BlendStates.Opaque, graphicsDevice.SamplerStates.LinearClamp, graphicsDevice.DepthStencilStates.None, null, backgroundEffect);
            spriteBatch.Draw(texture, destination, source, Color.White, 0, Vector2.Zero);
            spriteBatch.End();
        }
开发者ID:releed,项目名称:paradox,代码行数:29,代码来源:BackgroundComponentRenderer.cs


示例4: OnRenderContent

 protected override void OnRenderContent(RenderContext context)
 {
     if (Head != null)
         Head.OnRender(context);
     if (Body != null)
         Body.OnRender(context);
 }
开发者ID:Kation,项目名称:WebPresentation,代码行数:7,代码来源:HtmlPage.cs


示例5: RadiancePrefilteringGGX

 /// <summary>
 /// Create a new instance of the class.
 /// </summary>
 /// <param name="context">the context</param>
 public RadiancePrefilteringGGX(RenderContext context)
     : base(context, "RadiancePrefilteringGGX")
 {
     computeShader = new ComputeEffectShader(context) { ShaderSourceName = "RadiancePrefilteringGGXEffect" };
     DoNotFilterHighestLevel = true;
     samplingsCount = 1024;
 }
开发者ID:Powerino73,项目名称:paradox,代码行数:11,代码来源:RadiancePrefilteringGGX.cs


示例6: RadiancePrefilteringGGXNoCompute

 /// <summary>
 /// Create a new instance of the class.
 /// </summary>
 /// <param name="context">the context</param>
 public RadiancePrefilteringGGXNoCompute(RenderContext context)
     : base(context, "RadiancePrefilteringGGX")
 {
     shader = new ImageEffectShader("RadiancePrefilteringGGXNoComputeEffect");
     DoNotFilterHighestLevel = true;
     samplingsCount = 1024;
 }
开发者ID:Kryptos-FR,项目名称:xenko-reloaded,代码行数:11,代码来源:RadiancePrefilteringGGXNoCompute.cs


示例7: Render

 public override bool Render(RenderContext dest)
 {
     dest.ForceLineBreak();
     dest.Append(Comment);
     dest.ForceLineBreak();
     return false;
 }
开发者ID:blyry,项目名称:MiniME,代码行数:7,代码来源:StatementComment.cs


示例8: Render

 public override bool Render(RenderContext dest)
 {
     dest.Append("while(");
     Condition.Render(dest);
     dest.Append(")");
     return Code.RenderIndented(dest);
 }
开发者ID:blyry,项目名称:MiniME,代码行数:7,代码来源:StatementWhile.cs


示例9: renderPixel

        public Color renderPixel(int x, int y)
        {
            Color color;
              HitRecord hitRecord = new HitRecord();
              Ray ray;
              RenderContext renderContext = new RenderContext( this.scene );

              float step = 2 / (float)this.scene.getXResolution();
              float xStart = -1 + ( 0.5f * step );
              float yStart = (-(float)this.scene.getYResolution() * (0.5f * step)) + (0.5f * step);

              ray = this.scene.getCamera().generateRay( xStart + (x * step), yStart + (y * step) );
              this.scene.traceRay( ray, hitRecord, renderContext );

              if ( hitRecord.getT() == float.PositiveInfinity || hitRecord.getMaterial() == null || hitRecord.getPrimitive() == null ) {

             color = this.scene.getBackground().getColor( renderContext, ray );

              } else {

             color = hitRecord.getMaterial().shade( renderContext, ray, hitRecord, 1 );

              }

              return color;
        }
开发者ID:dknutsen,项目名称:dokray,代码行数:26,代码来源:Core.cs


示例10: UpdateParameters

        public static void UpdateParameters(RenderContext context, CameraComponent camera)
        {
            if (camera == null) throw new ArgumentNullException("camera");

            // Setup viewport size
            var currentViewport = context.GraphicsDevice.Viewport;
            var aspectRatio = currentViewport.AspectRatio;

            // Update the aspect ratio
            if (camera.UseCustomAspectRatio)
            {
                aspectRatio = camera.AspectRatio;
            }

            // If the aspect ratio is calculated automatically from the current viewport, update matrices here
            camera.Update(aspectRatio);

            // Store the current view/projection matrix in the context
            var viewParameters = context.Parameters;
            viewParameters.Set(TransformationKeys.View, camera.ViewMatrix);
            viewParameters.Set(TransformationKeys.Projection, camera.ProjectionMatrix);
            viewParameters.Set(TransformationKeys.ViewProjection, camera.ViewProjectionMatrix);
            viewParameters.Set(CameraKeys.NearClipPlane, camera.NearClipPlane);
            viewParameters.Set(CameraKeys.FarClipPlane, camera.FarClipPlane);
            viewParameters.Set(CameraKeys.VerticalFieldOfView, camera.VerticalFieldOfView);
            viewParameters.Set(CameraKeys.OrthoSize, camera.OrthographicSize);
            viewParameters.Set(CameraKeys.ViewSize, new Vector2(currentViewport.Width, currentViewport.Height));
            viewParameters.Set(CameraKeys.AspectRatio, aspectRatio);

            //viewParameters.Set(CameraKeys.FocusDistance, camera.FocusDistance);
        }
开发者ID:RainsSoft,项目名称:paradox,代码行数:31,代码来源:CameraComponentRenderer.cs


示例11: Render

        /// <summary>
        /// Clears the current render target (which must be the G-buffer).
        /// </summary>
        /// <param name="context">The render context.</param>
        public void Render(RenderContext context)
        {
            if (context == null)
            throw new ArgumentNullException("context");

              context.Validate(_effect);

              var graphicsDevice = _effect.GraphicsDevice;
              var savedRenderState = new RenderStateSnapshot(graphicsDevice);
              graphicsDevice.DepthStencilState = DepthStencilState.None;
              graphicsDevice.RasterizerState = RasterizerState.CullNone;
              graphicsDevice.BlendState = BlendState.Opaque;

              // Clear to maximum depth.
              _parameterDepth.SetValue(1.0f);

              // The environment is facing the camera.
              // --> Set normal = cameraBackward.
              var cameraNode = context.CameraNode;
              _parameterNormal.SetValue((cameraNode != null) ? (Vector3)cameraNode.ViewInverse.GetColumn(2).XYZ : Vector3.Backward);

              // Clear specular to arbitrary value.
              _parameterSpecularPower.SetValue(1.0f);

              _effect.CurrentTechnique.Passes[0].Apply();

              // Draw full-screen quad using clip space coordinates.
              graphicsDevice.DrawQuad(
            new VertexPositionTexture(new Vector3(-1, 1, 0), new Vector2(0, 0)),
            new VertexPositionTexture(new Vector3(1, -1, 0), new Vector2(1, 1)));

              savedRenderState.Restore();
        }
开发者ID:Zolniu,项目名称:DigitalRune,代码行数:37,代码来源:ClearGBufferRenderer.cs


示例12: Render

 public override bool Render(RenderContext dest)
 {
     dest.Append("with(");
     Expression.Render(dest);
     dest.Append(")");
     return Code.RenderIndented(dest);
 }
开发者ID:blyry,项目名称:MiniME,代码行数:7,代码来源:StatementWith.cs


示例13: Render

        public override void Render(RenderContext context)
        {
            if (renderHost.RenderTechnique == renderHost.RenderTechniquesManager.RenderTechniques.Get(DeferredRenderTechniqueNames.Deferred) ||
                renderHost.RenderTechnique == renderHost.RenderTechniquesManager.RenderTechniques.Get(DeferredRenderTechniqueNames.GBuffer))
            {
                return;
            }

            if (this.IsRendering)
            {
                /// --- turn-on the light
                lightColors[lightIndex] = this.Color;
            }
            else
            {
                // --- turn-off the light
                lightColors[lightIndex] = new global::SharpDX.Color4(0, 0, 0, 0);
            }

            /// --- Set lighting parameters
            lightPositions[lightIndex] = this.Position.ToVector4();
            lightAtt[lightIndex] = new Vector4((float)this.Attenuation.X, (float)this.Attenuation.Y, (float)this.Attenuation.Z, (float)this.Range);

            /// --- Update lighting variables
            this.vLightPos.Set(lightPositions);
            this.vLightColor.Set(lightColors);
            this.vLightAtt.Set(lightAtt);
            this.iLightType.Set(lightTypes);
        }
开发者ID:chantsunman,项目名称:helix-toolkit,代码行数:29,代码来源:PointLight3D.cs


示例14: PrepareCore

 protected override void PrepareCore(RenderContext context, RenderItemCollection opaqueList, RenderItemCollection transparentList)
 {
     if (lightComponentForwardRenderer != null)
     {
         lightComponentForwardRenderer.Draw(context);
     }
 }
开发者ID:Powerino73,项目名称:paradox,代码行数:7,代码来源:LightComponentRenderer.cs


示例15: DrawCore

        protected override void DrawCore(RenderContext context)
        {
            var input = GetSafeInput(0);

            // TODO: Check that input is power of two
            // input.Size.Width 

            Texture fromTexture = input;
            Texture downTexture = null;
            var nextSize = input.Size;
            bool isFirstPass = true;
            while (nextSize.Width > 3 && nextSize.Height > 3)
            {
                var previousSize = nextSize;
                nextSize = nextSize.Down2();

                // If the next half size of the texture is not an exact *2, make it 1 pixel larger to avoid loosing pixels min/max.
                if ((nextSize.Width * 2) < previousSize.Width)
                {
                    nextSize.Width += 1;
                }
                if ((nextSize.Height * 2) < previousSize.Height)
                {
                    nextSize.Height += 1;
                }

                downTexture = NewScopedRenderTarget2D(nextSize.Width, nextSize.Height, PixelFormat.R32G32_Float, 1);

                effect.Parameters.Set(DepthMinMaxShaderKeys.TextureMap, fromTexture);
                effect.Parameters.Set(DepthMinMaxShaderKeys.TextureReduction, fromTexture);

                effect.SetOutput(downTexture);
                effect.Parameters.Set(IsFirstPassKey, isFirstPass);
                effect.Draw(context);

                fromTexture = downTexture;

                isFirstPass = false;
            }

            readback.SetInput(downTexture);
            readback.Draw();
            IsResultAvailable = readback.IsResultAvailable;
            if (IsResultAvailable)
            {
                float min = float.MaxValue;
                float max = -float.MaxValue;
                var results = readback.Result;
                foreach (var result in results)
                {
                    min = Math.Min(result.X, min);
                    if (result.Y != 1.0f)
                    {
                        max = Math.Max(result.Y, max);
                    }
                }

                Result = new Vector2(min, max);
            }
        }
开发者ID:Powerino73,项目名称:paradox,代码行数:60,代码来源:DepthMinMax.cs


示例16: Update

        public override void Update(RenderContext renderContext)
        {
            if (CanDrop) return;

            if (_isFalling)
            {
                var deltaTime = (float)renderContext.GameTime.ElapsedGameTime.TotalSeconds;
                _currentSpeed += Gravity * deltaTime;

                var rockPos = _rockSprite.LocalPosition;
                rockPos.Y += _currentSpeed * deltaTime;
                _rockSprite.Translate(rockPos);

                if (rockPos.Y >= 390)
                {
                    _isFalling = false;
                    _rockSprite.CanDraw = false;

                    _explosionSprite.CanDraw = true;
                    _explosionSprite.Translate(rockPos);
                    _explosionSprite.PlayAnimation();
                }
            }
            else
            {
                if (!_explosionSprite.IsPlaying)
                {
                    _explosionSprite.CanDraw = false;
                    CanDrop = true;
                }
            }

            base.Update(renderContext);
        }
开发者ID:ETdoFresh,项目名称:BuildingYourFirstMobileGame,代码行数:34,代码来源:Rock2D.cs


示例17: shade

        public override Color shade(RenderContext rc, Ray ray, HitRecord hrec, int depth)
        {
            Point hp = ray.pointOn(hrec.getT());
              Vector normal = hrec.getPrimitive().normal(hp);

              hp += 0.0001f * normal;

              Scene scene = rc.getScene();
              int numlights = scene.numberOfLights();
              Color finalc = new Color(0,0,0);
              for ( int i = 0; i < numlights; i++ ) {

              Vector ldir = new Vector();
             Color lcolor = new Color();
             float ldist = scene.getLight(i).getLight(ref lcolor, ref ldir, rc, hp);

             HitRecord shadowhr = new HitRecord();
             Ray shadowray = new Ray(hp, ldir);
             scene.getObject().intersect(ref shadowhr, rc, shadowray);
             if ( shadowhr.getT() >= ldist || shadowhr.getT() < 0.01 ) {

                float dp = Vector.dot(normal, ldir);
                if( dp > 0 ) {
                   finalc += dp*lcolor;
                }

             }
              }

              return color * ( finalc * kd + scene.getAmbient() * ka );
        }
开发者ID:dknutsen,项目名称:dokray,代码行数:31,代码来源:Material.cs


示例18: OnProcess

        protected override void OnProcess(RenderContext context)
        {
            var graphicsDevice = GraphicsService.GraphicsDevice;

              // Set sampler state. (Floating-point textures cannot use linear filtering. (XNA would throw an exception.))
              if (TextureHelper.IsFloatingPointFormat(context.SourceTexture.Format))
            graphicsDevice.SamplerStates[0] = SamplerState.PointClamp;
              else
            graphicsDevice.SamplerStates[0] = SamplerState.LinearClamp;

              // Set the render target - but only if no kind of alpha blending is currently set.
              // If alpha-blending is set, then we have to assume that the render target is already
              // set - everything else does not make sense.
              if (graphicsDevice.BlendState.ColorDestinationBlend == Blend.Zero
              && graphicsDevice.BlendState.AlphaDestinationBlend == Blend.Zero)
              {
            graphicsDevice.SetRenderTarget(context.RenderTarget);
            graphicsDevice.Viewport = context.Viewport;
              }

              _viewportSizeParameter.SetValue(new Vector2(graphicsDevice.Viewport.Width, graphicsDevice.Viewport.Height));
              _sourceTextureParameter.SetValue(context.SourceTexture);
              _effect.CurrentTechnique.Passes[0].Apply();
              graphicsDevice.DrawFullScreenQuad();

              _sourceTextureParameter.SetValue((Texture2D)null);
        }
开发者ID:Zolniu,项目名称:DigitalRune,代码行数:27,代码来源:CopyFilter.cs


示例19: DrawCore

        protected override void DrawCore(RenderContext context, RenderFrame output)
        {
            var input = Input.GetSafeRenderFrame(context);

            // If RenderFrame input or output are null, we can't do anything
            if (input == null)
            {
                return;
            }

            // If an effect is set, we are using it
            if (Effect != null)
            {
                Effect.SetInput(0, input);
                if (input.DepthStencil != null)
                {
                    Effect.SetInput(1, input.DepthStencil);
                }
                Effect.SetOutput(output);
                Effect.Draw(context);
            }
            else if (input != output)
            {
                // Else only use a scaler if input and output don't match
                // TODO: Is this something we want by default or we just don't output anything?
                var effect = context.GetSharedEffect<ImageScaler>();
                effect.SetInput(0, input);
                effect.SetOutput(output);
                effect.Draw(context);
            }
        }
开发者ID:Powerino73,项目名称:paradox,代码行数:31,代码来源:SceneEffectRenderer.cs


示例20: PreDrawCore

 protected override void PreDrawCore(RenderContext context)
 {
     base.PreDrawCore(context);
     Parameters.Set(FactorCount, InputCount);
     Parameters.Set(ColorCombinerShaderKeys.Factors, factors);
     Parameters.Set(ColorCombinerShaderKeys.ModulateRGB, ModulateRGB);
 }
开发者ID:h78hy78yhoi8j,项目名称:xenko,代码行数:7,代码来源:ColorCombiner.cs



注:本文中的RenderContext类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# RenderDrawContext类代码示例发布时间:2022-05-24
下一篇:
C# RenderArgs类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap