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; } } }
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; } } }
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; } } }
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; } }
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; } } }
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; } } }
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; } } }