コード例 #1
0
        public void AddObject(
            int renderOrder,
            IRenderObject renderObject,
            ShaderProgram vertProg,
            ShaderProgram fragProg,
            ShaderProgram shadowFragProg,
            string debugName = null)
        {
            IInternalRenderObject internalRenderObj = renderObject as IInternalRenderObject;

            if (internalRenderObj == null)
            {
                throw new Exception(
                          $"[{nameof(RenderScene)}] Render objects have to be implemented at engine level");
            }

            //Keep track of all objects
            objects.Add(internalRenderObj);

            //Add them to techniques for rendering
            gbufferTechnique.AddObject(internalRenderObj, vertProg, fragProg, renderOrder, debugName);
            if (shadowFragProg != null)
            {
                shadowTechnique.AddObject(
                    internalRenderObj, vertProg, shadowFragProg, renderOrder, debugName);
            }

            dirty = true;
        }