Exemplo n.º 1
0
 public void DecreaseVertexCount()
 {
     {
         IndexBufferPointer renderer = this.indexBufferPointer as IndexBufferPointer;
         if (renderer != null)
         {
             if (renderer.ElementCount > 0)
             {
                 renderer.ElementCount--;
             }
             return;
         }
     }
     {
         ZeroIndexBufferPointer renderer = this.indexBufferPointer as ZeroIndexBufferPointer;
         if (renderer != null)
         {
             if (renderer.VertexCount > 0)
             {
                 renderer.VertexCount--;
             }
             return;
         }
     }
 }
Exemplo n.º 2
0
 public void IncreaseVertexCount()
 {
     {
         IndexBufferPointer renderer = this.indexBufferRenderer as IndexBufferPointer;
         if (renderer != null)
         {
             if (renderer.ElementCount < this.elementCount)
             {
                 renderer.ElementCount++;
             }
             return;
         }
     }
     {
         ZeroIndexBufferPointer renderer = this.indexBufferRenderer as ZeroIndexBufferPointer;
         if (renderer != null)
         {
             if (renderer.VertexCount < this.elementCount)
             {
                 renderer.VertexCount++;
             }
             return;
         }
     }
 }
Exemplo n.º 3
0
        protected override void DoInitialize()
        {
            // init shader program
            ShaderProgram program = new ShaderProgram();
            string        vertexShaderCode = null, geometryShaderCode = null, fragmentShaderCode = null;

            FillShaderCodes(this.allShaderCodes, ref vertexShaderCode, ref geometryShaderCode, ref fragmentShaderCode);
            program.Create(vertexShaderCode, fragmentShaderCode, geometryShaderCode, null);
            this.shaderProgram = program;

            // init all uniform variables
            this.uniformVariables = GetAllUniformVariables(this.allShaderCodes);

            // init property buffer objects' renderer
            var propertyBufferRenderers = new BufferPointer[propertyNameMap.Count()];
            int index = 0;

            foreach (var item in propertyNameMap)
            {
                BufferPointer bufferRenderer = this.model.GetBufferRenderer(
                    item.NameInIConvert2BufferRenderer, item.VarNameInShader);
                if (bufferRenderer == null)
                {
                    throw new Exception();
                }
                propertyBufferRenderers[index++] = bufferRenderer;
            }
            this.propertyBufferRenderers = propertyBufferRenderers;

            // init index buffer object's renderer
            this.indexBufferRenderer = this.model.GetIndexBufferRenderer();

            this.model           = null;
            this.allShaderCodes  = null;
            this.propertyNameMap = null;
            //this.uniformNameMap = null;

            {
                IndexBufferPointer renderer = this.indexBufferRenderer as IndexBufferPointer;
                if (renderer != null)
                {
                    this.elementCount = renderer.ElementCount;
                }
            }
            {
                ZeroIndexBufferPointer renderer = this.indexBufferRenderer as ZeroIndexBufferPointer;
                if (renderer != null)
                {
                    this.elementCount = renderer.VertexCount;
                }
            }
        }
Exemplo n.º 4
0
        protected void InitializeVAO()
        {
            IModel model = this.model;

            this.positionBufferRenderer = model.GetPositionBufferRenderer(strin_Position);
            //this.colorBufferRenderer = model.GetColorBufferRenderer(strin_Color);
            this.normalBufferRenderer = model.GetNormalBufferRenderer(strin_Normal);
            this.indexBufferRenderer  = model.GetIndexes() as IndexBufferPointerBase;

            IndexBufferPointer renderer = this.indexBufferRenderer as IndexBufferPointer;

            if (renderer != null)
            {
                this.indexCount = renderer.ElementCount;
            }
        }
Exemplo n.º 5
0
        protected void InitializeVAO()
        {
            this.positionBufferRenderer = model.GetPositionBufferRenderer(strposition);
            this.colorBufferRenderer    = model.GetColorBufferRenderer(strcolor);
            //this.texCoordBufferRenderer = ???(strtexCoord);
            this.texCoordBufferRenderer = model.GetTexCoordBufferRenderer(strtexCoord);
            this.indexBufferRenderer    = model.GetIndexes() as IndexBufferPointerBase;

            {
                IndexBufferPointer renderer = this.indexBufferRenderer as IndexBufferPointer;
                if (renderer != null)
                {
                    this.elementCount = renderer.ElementCount;
                }
            }
            {
                ZeroIndexBufferPointer renderer = this.indexBufferRenderer as ZeroIndexBufferPointer;
                if (renderer != null)
                {
                    this.elementCount = renderer.VertexCount;
                }
            }
        }
Exemplo n.º 6
0
        protected void InitializeVAO()
        {
            IModel model = this.model;

            this.positionBufferRenderer = model.GetPositionBufferRenderer(strin_Position);
            //this.colorBufferRenderer = model.GetColorBufferRenderer(strin_Color);
            using (var colorBuffer = new ColorBuffer(strin_Color))
            {
                colorBuffer.Alloc(4 * 6);
                for (int i = 0; i < 6; i++)
                {
                    colorBuffer[i * 4 + 0] = new vec2(0, 0);
                    colorBuffer[i * 4 + 1] = new vec2(0, 1);
                    colorBuffer[i * 4 + 2] = new vec2(1, 1);
                    colorBuffer[i * 4 + 3] = new vec2(1, 0);
                }

                this.colorBufferRenderer = colorBuffer.GetRenderer();
            }
            //this.normalBufferRenderer = model.GetNormalBufferRenderer(strin_Normal);
            this.indexBufferRenderer = model.GetIndexes() as IndexBufferPointerBase;

            {
                IndexBufferPointer renderer = this.indexBufferRenderer as IndexBufferPointer;
                if (renderer != null)
                {
                    this.elementCount = renderer.ElementCount;
                }
            }
            {
                ZeroIndexBufferPointer renderer = this.indexBufferRenderer as ZeroIndexBufferPointer;
                if (renderer != null)
                {
                    this.elementCount = renderer.VertexCount;
                }
            }
        }
Exemplo n.º 7
0
        protected override void DoInitialize()
        {
            // init shader program
            ShaderProgram program = new ShaderProgram();
            string        vertexShaderCode = null, geometryShaderCode = null, fragmentShaderCode = null;

            FillShaderCodes(this.allShaderCodes, ref vertexShaderCode, ref geometryShaderCode, ref fragmentShaderCode);
            program.Create(vertexShaderCode, fragmentShaderCode, geometryShaderCode, null);
            this.shaderProgram = program;

            // init all uniform variables
            UniformVariableBase[] uniformVariables = GetAllUniformVariables(this.allShaderCodes);
            if (uniformVariables.Length != this.uniformNameMap.Count())
            {
                throw new Exception(String.Format("uniforms' count not match! [{0}] in shaders but [{1}] in map.",
                                                  uniformVariables.Length, this.uniformNameMap.Count()));
            }
            var pairs = from variable in uniformVariables
                        join mappingPair in this.uniformNameMap on variable.VarName equals mappingPair.UniformNameInShader
                        select new { variable, mappingPair };

            if (pairs.Count() != uniformVariables.Length)
            {
                StringBuilder builder = new StringBuilder();
                builder.AppendLine(string.Format("Only {0} of {1} uniforms are paired:",
                                                 pairs.Count(), uniformVariables.Length));
                foreach (var item in pairs)
                {
                    builder.AppendLine(string.Format("{0}", item.mappingPair));
                }

                throw new Exception(builder.ToString());
            }
            //var samplers = from variable in uniformVariables
            //               where variable.GetValue().GetType() == typeof(samplerValue)
            //               select variable;
            //this.uniformSamplers = samplers.ToArray();
            this.uniformVariables = uniformVariables;

            // init property buffer objects' renderer
            var propertyBufferRenderers = new BufferPointer[propertyNameMap.Count()];
            int index = 0;

            foreach (var item in propertyNameMap)
            {
                BufferPointer bufferRenderer = this.model.GetBufferRenderer(
                    item.NameInIConvert2BufferRenderer, item.VarNameInShader);
                if (bufferRenderer == null)
                {
                    throw new Exception();
                }
                propertyBufferRenderers[index++] = bufferRenderer;
            }
            this.propertyBufferPointers = propertyBufferRenderers;

            // init index buffer object's renderer
            this.indexBufferPointer = this.model.GetIndexBufferRenderer();

            this.model           = null;
            this.allShaderCodes  = null;
            this.propertyNameMap = null;
            //this.uniformNameMap = null;

            {
                IndexBufferPointer renderer = this.indexBufferPointer as IndexBufferPointer;
                if (renderer != null)
                {
                    this.elementCount = renderer.ElementCount;
                }
            }
            {
                ZeroIndexBufferPointer renderer = this.indexBufferPointer as ZeroIndexBufferPointer;
                if (renderer != null)
                {
                    this.elementCount = renderer.VertexCount;
                }
            }
        }