Exemplo n.º 1
0
        internal bool Init(RendererCore rc)
        {
            m_MatricesBlockUniformBuffer = rc.CreateUniformBuffer<MatricesBlock>(m_MatricesBlock, MatricesBlock.SIZE, "Internal_Basic_Effect_Vertex_Shader_MatricesBlock");

            var err_code = GL.GetError();

            if (err_code != ErrorCode.NoError)
                Logger.Log.AddLogEntry(LogLevel.Error, "RendererCore", FreezingArcher.Core.Status.DamnThreading, err_code.ToString()); 

            this.VertexProgram.SetUniformBlockBinding("MatricesBlock", 10);

            err_code = GL.GetError();

            if (err_code != ErrorCode.NoError)
                Logger.Log.AddLogEntry(LogLevel.Error, "RendererCore", FreezingArcher.Core.Status.DamnThreading, err_code.ToString()); 

            m_MatricesBlockUniformBuffer.SetBufferBase(10);

            err_code = GL.GetError();

            if (err_code != ErrorCode.NoError)
                Logger.Log.AddLogEntry(LogLevel.Error, "RendererCore", FreezingArcher.Core.Status.DamnThreading, err_code.ToString()); 

            m_LightBlockUniformBuffer = rc.CreateUniformBuffer<LightBlock1>(m_LightBlock, LightBlock1.SIZE, "Internal_Basic_Effect_Vertex_Pixel_Shader_LightBlock");

            err_code = GL.GetError();

            if (err_code != ErrorCode.NoError)
                Logger.Log.AddLogEntry(LogLevel.Error, "RendererCore", FreezingArcher.Core.Status.DamnThreading, err_code.ToString()); 

            this.VertexProgram.SetUniformBlockBinding("LightBlock", 4);

            err_code = GL.GetError();

            if (err_code != ErrorCode.NoError)
                Logger.Log.AddLogEntry(LogLevel.Error, "RendererCore", FreezingArcher.Core.Status.DamnThreading, err_code.ToString()); 

            m_LightBlockUniformBuffer.SetBufferBase(4);

            err_code = GL.GetError();

            if (err_code != ErrorCode.NoError)
                Logger.Log.AddLogEntry(LogLevel.Error, "RendererCore", FreezingArcher.Core.Status.DamnThreading, err_code.ToString()); 

            //m_MaterialBlockUniformBuffer = rc.CreateUniformBuffer<MaterialBlock>(m_MaterialBlock, MaterialBlock.SIZE, "Internal_Basic_Effect_MaterialBlock");

            //this.PixelProgram.SetUniformBlockBinding("MaterialBlock", 6);
            //m_MaterialBlockUniformBuffer.SetBufferBase(6);

            return true;
        }