public void Unlock() { VertexBuffer = Tile.PrepDevice.createBuffer(); Tile.PrepDevice.bindBuffer(GL.ARRAY_BUFFER, VertexBuffer); Float32Array f32array = new Float32Array(Count * 5); float[] buffer = (float[])(object)f32array; int index = 0; foreach (PositionTexture pt in verts) { buffer[index++] = (float)pt.Position.X; buffer[index++] = (float)pt.Position.Y; buffer[index++] = (float)pt.Position.Z; buffer[index++] = (float)pt.Tu; buffer[index++] = (float)pt.Tv; } Tile.PrepDevice.bufferData(GL.ARRAY_BUFFER, f32array, GL.STATIC_DRAW); }
public bool isBuffer(WebGLBuffer buffer) { return false; }
public void deleteBuffer(WebGLBuffer buffer) { return; }
public void bindBuffer(int target, WebGLBuffer buffer) { return; }
public virtual void CleanUp(bool removeFromParent) { ReadyToRender = false; DemData = null; demFile = null; demDownloading = false; texReady = false; DemReady = false; errored = false; if (this.texture != null) { this.texture = null; } RenderTriangleLists = new List<RenderTriangle>[4]; GeometryCreated = false; if (removeFromParent && Parent != null ) { Parent.RemoveChild(this); Parent = null; } if (PrepDevice != null) { foreach (WebGLBuffer buf in IndexBuffers) { PrepDevice.deleteBuffer(buf); } IndexBuffers = new WebGLBuffer[4]; if (VertexBuffer != null) { PrepDevice.deleteBuffer(VertexBuffer); VertexBuffer = null; } if (texture2d != null) { PrepDevice.deleteTexture(texture2d); texture2d = null; } } }
public void Unlock() { VertexBuffer = Tile.PrepDevice.createBuffer(); Tile.PrepDevice.bindBuffer(GL.ARRAY_BUFFER, VertexBuffer); Float32Array f32array = new Float32Array(Count * 10); float[] buffer = (float[])(object)f32array; int index = 0; foreach (TimeSeriesPointVertex pt in verts) { buffer[index++] = (float)pt.Position.X; buffer[index++] = (float)pt.Position.Y; buffer[index++] = (float)pt.Position.Z; buffer[index++] = (float)pt.Color.R / 255.0f; buffer[index++] = (float)pt.Color.G / 255.0f; buffer[index++] = (float)pt.Color.B / 255.0f; buffer[index++] = (float)pt.Color.A / 255.0f; buffer[index++] = (float)pt.Tu; buffer[index++] = (float)pt.Tv; buffer[index++] = (float)pt.PointSize; } Tile.PrepDevice.bufferData(GL.ARRAY_BUFFER, f32array, GL.STATIC_DRAW); }
public static void Use(RenderContext renderContext, WebGLBuffer vertex, WebGLTexture texture, Color lineColor, bool zBuffer, float jNow, float decay) { GL gl = renderContext.gl; if (gl != null) { if (!initialized) { Init(renderContext); } gl.useProgram(prog); Matrix3d mvMat = Matrix3d.MultiplyMatrix(renderContext.World, renderContext.View); gl.uniformMatrix4fv(mvMatLoc, false, mvMat.FloatArray()); gl.uniformMatrix4fv(projMatLoc, false, renderContext.Projection.FloatArray()); gl.uniform1i(sampLoc, 0); gl.uniform1f(jNowLoc, jNow); gl.uniform1f(decayLoc, decay); gl.uniform4f(lineColorLoc, lineColor.R / 255f, lineColor.G / 255f, lineColor.B / 255f, 1f); if (zBuffer) { gl.enable(GL.DEPTH_TEST); } else { gl.disable(GL.DEPTH_TEST); } //gl.enable(0x8642); gl.disableVertexAttribArray(0); gl.disableVertexAttribArray(1); gl.disableVertexAttribArray(2); gl.disableVertexAttribArray(3); gl.enableVertexAttribArray(vertLoc); gl.enableVertexAttribArray(colorLoc); gl.enableVertexAttribArray(pointSizeLoc); gl.enableVertexAttribArray(timeLoc); gl.bindBuffer(GL.ARRAY_BUFFER, vertex); gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, null); gl.vertexAttribPointer(vertLoc, 3, GL.FLOAT, false, 40, 0); gl.vertexAttribPointer(colorLoc, 4, GL.FLOAT, false, 40, 12); gl.vertexAttribPointer(pointSizeLoc, 1, GL.FLOAT, false, 40, 36); gl.vertexAttribPointer(timeLoc, 2, GL.FLOAT, false, 40, 28); gl.activeTexture(GL.TEXTURE0); gl.bindTexture(GL.TEXTURE_2D, texture); gl.lineWidth(1.0f); gl.blendFunc(GL.SRC_ALPHA, GL.ONE); } }
public static void Use(RenderContext renderContext, WebGLBuffer vertex, WebGLBuffer index, WebGLTexture texture) { GL gl = renderContext.gl; if (gl != null) { if (!initialized) { Init(renderContext); } gl.useProgram(prog); Matrix3d mvMat = Matrix3d.MultiplyMatrix(renderContext.World, renderContext.View); gl.uniformMatrix4fv(mvMatLoc, false, mvMat.FloatArray()); gl.uniformMatrix4fv(projMatLoc, false, renderContext.Projection.FloatArray()); gl.uniform1i(sampLoc, 0); if (renderContext.Space) { gl.disable(GL.DEPTH_TEST); } else { gl.enable(GL.DEPTH_TEST); } gl.enableVertexAttribArray(vertLoc); gl.enableVertexAttribArray(textureLoc); gl.bindBuffer(GL.ARRAY_BUFFER, vertex); gl.vertexAttribPointer(vertLoc, 3, GL.FLOAT, false, 20, 0); gl.vertexAttribPointer(textureLoc, 2, GL.FLOAT, false, 20, 12); gl.activeTexture(GL.TEXTURE0); gl.bindTexture(GL.TEXTURE_2D, texture); gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, index); gl.blendFunc(GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA); } }
public static void Use(RenderContext renderContext, WebGLBuffer vertex, Color lineColor) { GL gl = renderContext.gl; if (gl != null) { if (!initialized) { Init(renderContext); } gl.useProgram(prog); Matrix3d mvMat = Matrix3d.MultiplyMatrix(renderContext.World, renderContext.View); gl.uniformMatrix4fv(mvMatLoc, false, mvMat.FloatArray()); gl.uniformMatrix4fv(projMatLoc, false, renderContext.Projection.FloatArray()); gl.uniform4f(lineColorLoc, lineColor.R/255, lineColor.G/255, lineColor.B/255, 1); if (renderContext.Space) { gl.disable(GL.DEPTH_TEST); } else { gl.enable(GL.DEPTH_TEST); } gl.disableVertexAttribArray(0); gl.disableVertexAttribArray(1); gl.disableVertexAttribArray(2); gl.disableVertexAttribArray(3); gl.enableVertexAttribArray(vertLoc); gl.bindBuffer(GL.ARRAY_BUFFER, vertex); gl.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, null); gl.vertexAttribPointer(vertLoc, 3, GL.FLOAT, false, 0, 0); gl.lineWidth(1.0f); gl.blendFunc(GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA); } }