In other words, instead of loading image into texture, actually write the pixel info directly into the already existing texture?
I don't see why it wouldn't be possible... Surely the texture is made up of pixel information..? Just need to find the address in memory and write it in.
EDIT: There's two lines that severely drop the FPS (from a base of 1,300 FPS)
(When commenting out all other code in the loop...)
Drop to about 30FPS
BitBlt(hMemoryDC, 0, 0, x, y, hScreenDC, 0, 0, SRCCOPY);
Drop to about 65FPS
captureImage.setPixel(x,y, sf::Color(GetBValue(thisColor), GetGValue(thisColor), GetRValue(thisColor)));
(this one is in two for loops scanning every pixel)
Drop to about 250FPS
captureTexture.loadFromImage(captureImage);
EDIT: I managed to increase the FPS of the streaming from 15FPS to about 40FPS by disabling the Windows Aero theme!? I suppose this means bitblt has less work to do. But I still must use bitblt otherwise it won't work.