[QUOTE=Dark Photon;1248030]It’s been less than 12 hours, and it’s possibly few if any have ever done this.
I personally have never even thought to look and see if this is supported. CPU<->GPU = slow. Keep it all on the GPU when possible.
I could guess at this, but not sure it would help you much. Is pboImageReadBackRed a CPU pointer or an offset into a bound PBO? If the latter when was it last uploaded (or generated)?[/QUOTE]
Thanks a lot, Dark Photon!
At first, I also think it may due to the bandwidth between CPU<->GPU. But after I modified the code to
//glPixelTransferi(GL_MAP_STENCIL,TRUE); //<------------------------- Do not map stencil
long timeBeforeDrawPixels=timeGetTime();
glDrawPixels(FINAL_WIDTH,FINAL_HEIGHT,GL_STENCIL_INDEX,GL_UNSIGNED_BYTE,pboImageReadBackRed);
//FINAL_WIDTH and FINAL_HEIGHT are set to 1024 and 768 respectively
long timeAfterDrawPixels=timeGetTime();
printf("Now, we found this artificial noise is cancelled out, so drawing takes only %ld miliseconds.
", timeAfterDrawPixels-timeBeforeDrawPixels);
//now we've got only about 30 ms here on GeForce GTX 650 Ti.
//glPixelTransferi(GL_MAP_STENCIL,FALSE); //<------------------------- Do not map stencil
No delay was found at all!
So, this is an obvious fault, most probably in hardware’s opengl driver, perhaps even intended:sick:.
And most probably others have encountered this fault, should know how to fix it or know where to download a fixed version of the Nvidia’s driver.
I know Nowhere-01 is a sly guy, he seems to know everything and is always ready to give instructions, I even think he is an employee of Nvidia, but why this time he hides his head like a goddamn turtle:sick:!