I'm currently working on Windows with c# using OpenTK.

I was able to load a texture fine until I implemented a fragment and vertex shader of my own.

I tested around to see if the fragment buffer actually contained any of my texture data and that failed as well.

Here's my shader code:

// GLSL for fragment shader
String fragSource = @"

varying vec3 N;
varying vec3 v;

void main (void)
vec3 L = normalize(gl_LightSource[0].position.xyz + v);
vec3 E = normalize(v); // we are in Eye Coordinates, so EyePos is (0,0,0)
vec3 R = normalize(reflect(-L,N));

//calculate Ambient Term:
vec4 Iamb = gl_FrontLightProduct[0].ambient;

//calculate Diffuse Term:
vec4 Idiff = gl_FrontLightProduct[0].diffuse * max(dot(N,L), 0.0);
Idiff = clamp(Idiff, 0.0, 1.0);

// calculate Specular Term:
vec4 Ispec = gl_FrontLightProduct[0].specular * pow(max(dot(R,E),0.0), 0.3 * gl_FrontMaterial.shininess);
Ispec = clamp(Ispec, 0.0, 1.0);

// write Total Color:
gl_FragColor = gl_FrontLightModelProduct.sceneColor + Iamb + Idiff + Ispec;

// GLSL for vertex shader
String vertSource = @"

varying vec3 N;
varying vec3 v;

void main(void)
v = vec3(gl_ModelViewMatrix * gl_Vertex);
N = normalize(gl_NormalMatrix * gl_Normal);
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;

This is where I'm loading my texture:

#region LoadTexture
Texture = LoadTexture("dotcode_image" + img_num + ".tiff");

string save_path = @"c:\NDAC_Simulator";
if (!Directory.Exists(save_path))
DirectoryInfo di = Directory.CreateDirectory(save_path);

//GL.BindTexture(TextureTarget.Texture2D, Texture);


static int LoadTexture(string filename)
string path = System.IO.Directory.GetCurrentDirectory() + "\\" + filename;

if (String.IsNullOrEmpty(path))
throw new ArgumentException(path);

int id = GL.GenTexture();
GL.BindTexture(TextureTarget.Texture2D, id);

Bitmap bmp = new Bitmap(path);
BitmapData bmp_data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb );

GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bmp_data.Width, bmp_data.Height, 0,
OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmp_data.Scan0);


// We haven't uploaded mipmaps, so disable mipmapping (otherwise the texture will not appear).
// On newer video cards, we can use GL.GenerateMipmaps() or GL.Ext.GenerateMipmaps() to create
// mipmaps automatically. In that case, use TextureMinFilter.LinearMipmapLinear to enable them.
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

return id;

And this is my draw:

protected override void OnRenderFrame(FrameEventArgs e)

GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

Matrix4 modelview = Matrix4.LookAt(Vector3.Zero, Vector3.UnitZ, Vector3.UnitY);
GL.LoadMatrix(ref modelview);

GL.Rotate(pitch, 1.0f, 0.0f, 0.0f);
GL.Rotate(yaw, 0.0f, 1.0f, 0.0f);
GL.Rotate(roll, 0.0f, 0.0f, 1.0f);
GL.Translate(x, y, depth);

GL.BindTexture(TextureTarget.Texture2D, Texture);

GL.TexCoord2(0.0f, 1.0f); GL.Vertex2(-2657.0f, -3683.5f);
GL.TexCoord2(1.0f, 1.0f); GL.Vertex2(2657.0f, -3683.5f);
GL.TexCoord2(1.0f, 0.0f); GL.Vertex2(2657.0f, 3683.5f);
GL.TexCoord2(0.0f, 0.0f); GL.Vertex2(-2657.0f, 3683.5f);


Can anybody help me find what seems to be the problem here?