public void Delete(CSGL gl) { gl.deleteShader(pixel); gl.deleteShader(vertex); gl.deleteProgram(handle); this = default(Effect); }
public void Draw(CSGL gl) { if(!loaded) { loaded = true; } var fade = (Environment.TickCount / 2000f) % 2; var col = new Color4(0.5f,fade < 1 ? (fade % 1) : 1 - (fade % 1),fade >= 1 ? (fade % 1) : 1 - (fade % 1),1); gl.Clear(col,1); gl.InitMatrix(); gl.EnableVertex(); gl.EnableColor(); fixed(float* pV = v) gl.VertexPointer(3,0,pV); fixed(byte* pC = c) gl.ColorPointer(3,0,pC); gl.DrawArrays(CSGL.DrawMode.Triangles,0,3); gl.Finish(); }
public Texture2D(CSGL gl,byte[] data,int width,int height) { fixed(uint* h = &handle) gl.genTextures(1,h); gl.bindTexture((uint)Texture.Target.T2D,handle); fixed(byte* pData = data) gl.texImage2D((uint)Texture.Target.T2D,0,(uint)Texture.InternalFormat.RGBA ,width,height,0,(uint)Texture.Format.RGBA,(uint)Texture.Type.RGBA8,pData); }
public Effect(CSGL gl,string vertexShader,string pixelShader) { handle = gl.createProgram(); vertex = gl.createShader((uint)ShaderType.Vertex); pixel = gl.createShader((uint)ShaderType.Fragment); fixed(byte* source = Encoding.ASCII.GetBytes(vertexShader)) fixed(byte** sources = new byte*[] { source }) gl.shaderSource(vertex,1,sources,null); fixed(byte* source = Encoding.ASCII.GetBytes(pixelShader)) fixed(byte** sources = new byte*[] { source }) gl.shaderSource(pixel,1,sources,null); gl.compileShader(vertex); gl.compileShader(pixel); gl.attachShader(handle,vertex); gl.attachShader(handle,pixel); gl.linkProgram(handle); }
public void UseProgram(CSGL gl) { gl.useProgram(handle); }