The way it all works in my game is:
1) the textures class is created and then i create the blank texture (i have changed the creation class to:
[pascal]
SetLength(Indexs, 1);

glEnable(GL_TEXTURE_2D);
glGenTextures(1, @Indexs[0]);
glBindTexture(GL_TEXTURE_2D, Indexs[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
// (target: GLenum; level, internalformat: GLint; width, height: GLsizei; border: GLint; format, atype: GLenum; const pixels: Pointer);

Done := False;
i := 0;
Try
GetMem(Data, Width*Height*3);
ZeroMemory(Data, Width*Height*3);
While Not Done Do
Begin
If (Width = 1) And (Height = 1) Then Done := True;
glTexImage2d(GL_TEXTURE_2D, i, 3, Width, Height, 0, GL_RGB, GL_UNSIGNED_BYTE, Data);
Inc(i);
If Width > 1 Then Width := Width Shr 1;
If Height > 1 Then Height := Height Shr 1;
End;
glFinish;
Finally
FreeMem(Data, Width*Height*3);
End;
[pascal]
I still seem to be getting the white texture..

2) during the rendering process, i call the procedure to update the texture
3) render the scene

* Im not sure if the texture id is set, i will check that now
* The viewport size doesnt seem to change, im constantly checking it during the rendering process to position elements.
* It supposed to render from the original camera, so im pretty sure that works
* I call glEnable(GL_Texture_2D) everytime i call the texture.bind procedure