public IBufferRange CreateUniformBufferRange(IUniformBlock uniformBlock) { var r = new BufferRangeGL(this, uniformBlock); Add(r); return(r); }
public static IUniformBuffer Create(IUniformBlock uniformBlock) { /*if(Configuration.useGl1) * { * return (IUniformBuffer)new UniformBufferGL1(uniformBlock); * }*/ return((IUniformBuffer) new UniformBufferGL(uniformBlock)); }
public IBufferRange CreateUniformBufferRange(IUniformBlock uniformBlock) { #if false var gl = (BufferRangeGL)bufferGL.CreateUniformBufferRange(uniformBlock); var rl = (BufferRangeRL)bufferRL.CreateUniformBufferRange(uniformBlock); return(new BufferRangeGLRL(gl, rl)); #else return((BufferRangeGL)bufferGL.CreateUniformBufferRange(uniformBlock)); #endif }
public UniformBufferRL(IUniformBlock uniformBlock) { data = new UniformBufferData(uniformBlock); IBuffer buffer = BufferPool.Instance.GetUniformBufferRL(OpenTK.Graphics.OpenGL.BufferUsageHint.DynamicDraw); bufferRange = buffer.CreateUniformBufferRange(uniformBlock); bufferRange.Name = uniformBlock.Name; Sync(); }
public Material( string name, IProgram program, IUniformBlock uniformBlock ) { this.name = name; Program = program; uniformBuffer = UniformBufferFactory.Create(uniformBlock); uniformBuffer.Sync(); }
public UniformBufferGL(IUniformBlock uniformBlock) { // Required always data = new UniformBufferData(uniformBlock); // Required for GL3 and OpenRL only if (Configuration.canUseUniformBufferObject && (Configuration.useGl1 == false)) { IBuffer buffer = BufferPool.Instance.GetUniformBufferGL(BufferUsageHint.DynamicDraw); bufferRange = buffer.CreateUniformBufferRange(uniformBlock); bufferRange.Name = uniformBlock.Name; Sync(); } }
// Uniform Buffer internal BufferRangeRL(BufferRL buffer, IUniformBlock uniformBlock) { this.uniformBlock = uniformBlock; this.buffer = buffer; unchecked { this.beginMode = (BeginMode)(uint.MaxValue); // uniform buffers do not have a valid begin mode value } buffer.Add(this); // Pre-initialize uniform buffer as we do not use BeginEdit() / EndEdit() size = uniformBlock.Size; data = new byte[size]; }
// Uniform Buffer public BufferRangeGL(BufferGL buffer, IUniformBlock uniformBlock) { #if DEBUG if (Configuration.useGl1) { throw new InvalidOperationException(); } #endif this.uniformBlock = uniformBlock as UniformBlockGL; if (this.uniformBlock == null) { throw new InvalidOperationException(); } this.buffer = buffer; unchecked { this.beginMode = (BeginMode)(uint.MaxValue); // uniform buffers do not have a valid begin mode value } // Pre-initialize uniform buffer as we do not use BeginEdit() / EndEdit() size = uniformBlock.Size; data = new byte[size]; }
public UniformBufferData(IUniformBlock uniformBlock /*, IBufferRange bufferRange*/) { this.uniformBlock = uniformBlock; //this.uniformBufferRange = bufferRange; parameterArray = new IUniformValue[uniformBlock.Uniforms.Count]; int i = 0; foreach (var uniform in uniformBlock.Uniforms) { #if DEBUG_UNIFORM_BUFFER System.Diagnostics.Debug.WriteLine( uniform.Type.ToString() + " " + uniform.Name + ", index = " + uniform.Index + ", i = " + i + ", offset = " + uniform.Offset + ", stride = " + uniform.Stride ); #endif switch (uniform.Type) { case ActiveUniformType.Float: parameterArray[i] = new Floats(1, uniform.Count); break; case ActiveUniformType.FloatVec2: parameterArray[i] = new Floats(2, uniform.Count); break; case ActiveUniformType.FloatVec3: parameterArray[i] = new Floats(3, uniform.Count); break; case ActiveUniformType.FloatVec4: parameterArray[i] = new Floats(4, uniform.Count); break; case ActiveUniformType.FloatMat4: parameterArray[i] = new Floats(16, uniform.Count); break; case ActiveUniformType.Int: parameterArray[i] = new Ints(1, uniform.Count); break; case ActiveUniformType.UnsignedInt: parameterArray[i] = new UInts(1, uniform.Count); break; case ActiveUniformType.Sampler1D: break; case ActiveUniformType.Sampler1DArray: break; case ActiveUniformType.Sampler1DArrayShadow: break; case ActiveUniformType.Sampler1DShadow: break; case ActiveUniformType.Sampler2D: break; case ActiveUniformType.Sampler2DArray: break; case ActiveUniformType.Sampler2DArrayShadow: break; case ActiveUniformType.Sampler2DMultisample: break; case ActiveUniformType.Sampler2DMultisampleArray: break; case ActiveUniformType.Sampler2DRect: break; case ActiveUniformType.Sampler2DRectShadow: break; case ActiveUniformType.Sampler2DShadow: break; case ActiveUniformType.Sampler3D: break; case ActiveUniformType.SamplerBuffer: break; case ActiveUniformType.SamplerCube: break; case ActiveUniformType.SamplerCubeMapArray: break; case ActiveUniformType.SamplerCubeMapArrayShadow: break; case ActiveUniformType.SamplerCubeShadow: break; default: { throw new System.Exception("Unsupported uniform type"); } } if (parameterArray[i] != null) { parameterArray[i].Index = i;//uniform.Index; parameters[uniform.Name] = parameterArray[i]; if (uniform.Default != null) { parameterArray[i].CopyFrom(uniform.Default); } } i++; } }
public IBufferRange CreateUniformBufferRange(IUniformBlock uniformBlock) { return(new BufferRangeRL(this, uniformBlock)); }