| 419 | } |
| 420 | |
| 421 | void * CreateGLRenderbuffer( GLsizei width, GLsizei height, |
| 422 | GLenum attachment, |
| 423 | GLenum rbFormat, GLenum rbType, |
| 424 | GLenum texFormat, GLenum texType, |
| 425 | ExplicitType type, |
| 426 | GLuint *outFramebuffer, |
| 427 | GLuint *outRenderbuffer, |
| 428 | int *outError, MTdata d, bool allocateMem ) |
| 429 | { |
| 430 | *outError = CreateGLRenderbufferRaw( width, height, attachment, rbFormat, rbType, outFramebuffer, outRenderbuffer ); |
| 431 | |
| 432 | if( *outError != 0 ) |
| 433 | return NULL; |
| 434 | |
| 435 | GLenum err = 0; |
| 436 | |
| 437 | // Generate a renderbuffer and bind |
| 438 | glGenRenderbuffersEXT( 1, outRenderbuffer ); |
| 439 | glBindRenderbufferEXT( GL_RENDERBUFFER_EXT, *outRenderbuffer ); |
| 440 | |
| 441 | // Allocate storage to the renderbuffer |
| 442 | glGetError(); |
| 443 | glRenderbufferStorageEXT( GL_RENDERBUFFER_EXT, rbFormat, (GLsizei)width, (GLsizei)height ); |
| 444 | err = glGetError(); |
| 445 | if( err != GL_NO_ERROR ) |
| 446 | { |
| 447 | *outError = 1701; |
| 448 | log_error("Failed to allocate render buffer storage!\n"); |
| 449 | return NULL; |
| 450 | } |
| 451 | |
| 452 | GLint realInternalFormat; |
| 453 | glGetRenderbufferParameterivEXT( GL_RENDERBUFFER_EXT, GL_RENDERBUFFER_INTERNAL_FORMAT_EXT, &realInternalFormat ); |
| 454 | rbFormat = realInternalFormat; |
| 455 | |
| 456 | #ifdef GLES_DEBUG |
| 457 | GLint rsize, gsize, bsize, asize; |
| 458 | glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT, GL_RENDERBUFFER_RED_SIZE_EXT,&rsize); |
| 459 | glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT, GL_RENDERBUFFER_GREEN_SIZE_EXT,&gsize); |
| 460 | glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT, GL_RENDERBUFFER_BLUE_SIZE_EXT,&bsize); |
| 461 | glGetRenderbufferParameterivEXT(GL_RENDERBUFFER_EXT, GL_RENDERBUFFER_ALPHA_SIZE_EXT,&asize); |
| 462 | |
| 463 | log_info("Renderbuffer internal format requested: %s actual: %s sizes: r=%d g=%d b=%d a=%d\n", |
| 464 | GetGLFormatName( internalFormat ), GetGLFormatName( realInternalFormat ), |
| 465 | rsize, gsize, bsize, asize ); |
| 466 | #endif |
| 467 | |
| 468 | // Create and bind a framebuffer to render with |
| 469 | glGenFramebuffersEXT( 1, outFramebuffer ); |
| 470 | glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, *outFramebuffer ); |
| 471 | err = glGetError(); |
| 472 | if( err != GL_NO_ERROR ) |
| 473 | { |
| 474 | log_error( "ERROR: Unable to bind framebuffer : Error %s\n", |
| 475 | gluErrorString( err )); |
| 476 | |
| 477 | *outError = -1; |
| 478 | return NULL; |
nothing calls this directly
no test coverage detected