I have written a very simple program but with fbos.
That program can run smoothly under ati card pcs but report error on nvidia card pcs.
I have tested it on several nvidia cards installed machines. The cause of the program seems to be the blit between stencil buffers.
The following code is the creation of this fbo.
enum {Color,Depth,Stencil,NumRenderbuffers};
GLuint framebuffer,screenImageFramebuffer, renderbuffer[NumRenderbuffers], screenImageRenderbuffer[NumRenderbuffers];
glGenRenderbuffersEXT(NumRenderbuffers,renderbuffer);
CHECK_ERR;
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT,renderbuffer[Color]);
CHECK_ERR;
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT,GL_RGBA8,256,256);
CHECK_ERR;
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT,renderbuffer[Stencil]);
CHECK_ERR;
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT,GL_STENCIL_INDEX8,256,256);
CHECK_ERR;
glGenFramebuffersEXT(1, & framebuffer);
CHECK_ERR;
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT,framebuffer);
value=glExtCheckFramebufferStatus(ErrorMessage);
CHECK_ERR;
glFramebufferRenderbufferEXT(GL_DRAW_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_RENDERBUFFER_EXT,renderbuffer[Color]);
CHECK_ERR;
glFramebufferRenderbufferEXT(GL_DRAW_FRAMEBUFFER_EXT,GL_STENCIL_ATTACHMENT_EXT,GL_RENDERBUFFER_EXT,renderbuffer[Stencil]);
value=glExtCheckFramebufferStatus(ErrorMessage); //Here reported "GL_FRAMEBUFFER_UNSUPPORTED_EXT" on a GTX 650 Ti card.
CHECK_ERR;
Any one can give any hint or another way to write code about blitting between stencil buffers.
Thanks in advance and good day! :tired:
p.s.
Personally I have no bias on any graphics card products or manufactories. I’m just an individual developer and just want my idea and program can run on as many hardwares as possible!
Best regards,
newbiecow