| 435 | | { |
| 436 | | fbo->setAttachment(osg::Camera::DEPTH_BUFFER, osg::FrameBufferAttachment(new osg::RenderBuffer(width, height, GL_DEPTH_COMPONENT24))); |
| 437 | | if (fbo_multisample.valid()) |
| | 441 | { |
| | 442 | // If doing MSFBO (and therefore need two FBOs, one for multisampled rendering and one for |
| | 443 | // final resolve), then configure "fbo" as the resolve FBO, and When done |
| | 444 | // configuring, swap it into "_resolveFbo" (see line 554). But, if not |
| | 445 | // using MSFBO, then "fbo" is just the render fbo. |
| | 446 | // If using MSFBO, then resolveBuffersMask |
| | 447 | // is the value set by the app for the resolve buffers. But if not using |
| | 448 | // MSFBO, then resolveBuffersMask is the value set by the app for render |
| | 449 | // buffers. In both cases, resolveBuffersMask is used to configure "fbo". |
| | 450 | if( resolveBuffersMask & osg::Camera::IMPLICIT_DEPTH_BUFFER_ATTACHMENT ) |
| | 451 | { |
| | 452 | fbo->setAttachment(osg::Camera::DEPTH_BUFFER, osg::FrameBufferAttachment(new osg::RenderBuffer(width, height, GL_DEPTH_COMPONENT24))); |
| | 453 | depthAttached = true; |
| | 454 | } |
| | 455 | if (fbo_multisample.valid() && |
| | 456 | ( renderBuffersMask & osg::Camera::IMPLICIT_DEPTH_BUFFER_ATTACHMENT ) ) |
| 443 | | depthAttached = true; |
| 444 | | } |
| 445 | | #endif |
| 446 | | |
| 447 | | #if FORCE_COLOR_ATTACHMENT |
| | 462 | } |
| | 463 | if (!stencilAttached) |
| | 464 | { |
| | 465 | if( resolveBuffersMask & osg::Camera::IMPLICIT_STENCIL_BUFFER_ATTACHMENT ) |
| | 466 | { |
| | 467 | fbo->setAttachment(osg::Camera::STENCIL_BUFFER, osg::FrameBufferAttachment(new osg::RenderBuffer(width, height, GL_STENCIL_INDEX8_EXT))); |
| | 468 | stencilAttached = true; |
| | 469 | } |
| | 470 | if (fbo_multisample.valid() && |
| | 471 | ( renderBuffersMask & osg::Camera::IMPLICIT_STENCIL_BUFFER_ATTACHMENT ) ) |
| | 472 | { |
| | 473 | fbo_multisample->setAttachment(osg::Camera::STENCIL_BUFFER, |
| | 474 | osg::FrameBufferAttachment(new osg::RenderBuffer(width, |
| | 475 | height, GL_STENCIL_INDEX8_EXT, samples, colorSamples))); |
| | 476 | } |
| | 477 | } |
| | 478 | |
| 450 | | fbo->setAttachment(osg::Camera::COLOR_BUFFER, osg::FrameBufferAttachment(new osg::RenderBuffer(width, height, GL_RGB))); |
| 451 | | if (fbo_multisample.valid()) |
| | 481 | if( resolveBuffersMask & osg::Camera::IMPLICIT_COLOR_BUFFER_ATTACHMENT ) |
| | 482 | { |
| | 483 | fbo->setAttachment(osg::Camera::COLOR_BUFFER, osg::FrameBufferAttachment(new osg::RenderBuffer(width, height, GL_RGB))); |
| | 484 | colorAttached = true; |
| | 485 | } |
| | 486 | if (fbo_multisample.valid() && |
| | 487 | ( renderBuffersMask & osg::Camera::IMPLICIT_COLOR_BUFFER_ATTACHMENT ) ) |