Results 1 to 7 of 7

Thread: Invalid operation error from GL when using FBO

  1. #1
    Senior Member Regular Contributor
    Join Date
    Aug 2010
    Posts
    114

    Invalid operation error from GL when using FBO

    Code :
    /*Create a offscreen FBO*/
    	glGenRenderbuffersEXT(1, &fbo);
    	/*Bind offscreen framebuffer*/ 
        	glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, fbo);
    	glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT,GL_RGBA,size,noOfpacket);
    	glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_RENDERBUFFER_EXT,fbo);
    	checkError("glFramebufferRenderbufferEXT");
     
    	GLenum status1;
      	status1 = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
      	switch(status1)
      	{
         		case GL_FRAMEBUFFER_COMPLETE_EXT:
         			printf("OK\n");
    			break;
      		default:
         			fprintf(stderr, "Error: %s\n", gluErrorString(status1));
    			break;
     	 }

    I double check already. I very sure that the GL error comes from this function. I even use glCheckFramebufferStatusEXT() to check the FBO status and it returns "OK".

    What is going on actually? I cant even find out the error. Please help...

  2. #2
    Newbie OpenGL Pro
    Join Date
    Jan 2007
    Posts
    1,789

    Re: Invalid operation error from GL when using FBO

    From your thread here you've got an Intel 945.

    The Intel 945 doesn't support FBOs.

  3. #3
    Senior Member Regular Contributor
    Join Date
    Aug 2010
    Posts
    114

    Re: Invalid operation error from GL when using FBO

    Quote Originally Posted by mhagain
    From your thread here you've got an Intel 945.

    The Intel 945 doesn't support FBOs.
    Are you sure? I check the glxinfo already.

    root@goo5257-laptop:~# glxinfo
    name of display: :0.0
    display: :0 screen: 0
    direct rendering: Yes
    server glx vendor string: Brian Paul
    server glx version string: 1.4 Mesa 7.7.1
    server glx extensions:
    GLX_MESA_copy_sub_buffer, GLX_MESA_pixmap_colormap,
    GLX_MESA_release_buffers, GLX_ARB_get_proc_address,
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_SGIX_fbconfig, GLX_SGIX_pbuffer
    client glx vendor string: Brian Paul
    client glx version string: 1.4 Mesa 7.7.1
    client glx extensions:
    GLX_MESA_copy_sub_buffer, GLX_MESA_pixmap_colormap,
    GLX_MESA_release_buffers, GLX_ARB_get_proc_address,
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_SGIX_fbconfig, GLX_SGIX_pbuffer
    GLX version: 1.4
    GLX extensions:
    GLX_MESA_copy_sub_buffer, GLX_MESA_pixmap_colormap,
    GLX_MESA_release_buffers, GLX_ARB_get_proc_address,
    GLX_EXT_texture_from_pixmap, GLX_EXT_visual_info, GLX_EXT_visual_rating,
    GLX_SGIX_fbconfig, GLX_SGIX_pbuffer
    OpenGL vendor string: Brian Paul
    OpenGL renderer string: Mesa X11
    OpenGL version string: 2.1 Mesa 7.7.1
    OpenGL shading language version string: 1.20
    OpenGL extensions:
    GL_EXT_compiled_vertex_array, GL_EXT_texture_env_add, GL_ARB_copy_buffer,
    GL_ARB_depth_texture, GL_ARB_depth_clamp, GL_ARB_draw_buffers,
    GL_ARB_draw_elements_base_vertex, GL_ARB_fragment_program,
    GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
    GL_ARB_framebuffer_object, GL_ARB_half_float_pixel, GL_ARB_imaging,
    GL_ARB_map_buffer_range, GL_ARB_multisample, GL_ARB_multitexture,
    GL_ARB_occlusion_query, GL_ARB_pixel_buffer_object,
    GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_provoking_vertex,
    GL_ARB_shader_objects, GL_ARB_shading_language_100,
    GL_ARB_shading_language_120, GL_ARB_shadow, GL_ARB_shadow_ambient,
    GL_ARB_sync, GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
    GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
    GL_ARB_texture_env_combine, GL_ARB_texture_env_crossbar,
    GL_ARB_texture_env_dot3, GL_ARB_texture_mirrored_repeat,
    GL_ARB_texture_non_power_of_two, GL_ARB_texture_rectangle,
    GL_ARB_transpose_matrix, GL_ARB_vertex_array_bgra,
    GL_ARB_vertex_array_object, GL_ARB_vertex_buffer_object,
    GL_ARB_vertex_program, GL_ARB_vertex_shader, GL_ARB_window_pos,
    GL_EXT_abgr, GL_EXT_bgra, GL_EXT_blend_color,
    GL_EXT_blend_equation_separate, GL_EXT_blend_func_separate,
    GL_EXT_blend_logic_op, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
    GL_EXT_convolution, GL_EXT_copy_texture, GL_EXT_depth_bounds_test,
    GL_EXT_draw_range_elements, GL_EXT_framebuffer_blit,
    GL_EXT_framebuffer_multisample, GL_EXT_framebuffer_object,
    GL_EXT_fog_coord, GL_EXT_gpu_program_parameters, GL_EXT_histogram,
    GL_EXT_multi_draw_arrays, GL_EXT_packed_depth_stencil,
    GL_EXT_packed_pixels, GL_EXT_paletted_texture, GL_EXT_pixel_buffer_object,
    GL_EXT_point_parameters, GL_EXT_polygon_offset, GL_EXT_provoking_vertex,
    GL_EXT_rescale_normal, GL_EXT_secondary_color,
    GL_EXT_separate_specular_color, GL_EXT_shadow_funcs,
    GL_EXT_shared_texture_palette, GL_EXT_stencil_two_side,
    GL_EXT_stencil_wrap, GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
    GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp,
    GL_EXT_texture_env_combine, GL_EXT_texture_env_dot3,
    GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
    GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_texture_sRGB,
    GL_EXT_texture_swizzle, GL_EXT_timer_query, GL_EXT_vertex_array,
    GL_EXT_vertex_array_bgra, GL_3DFX_texture_compression_FXT1,
    GL_APPLE_packed_pixels, GL_APPLE_vertex_array_object,
    GL_ATI_blend_equation_separate, GL_ATI_envmap_bumpmap,
    GL_ATI_texture_env_combine3, GL_ATI_texture_mirror_once,
    GL_ATI_fragment_shader, GL_ATI_separate_stencil,
    GL_IBM_multimode_draw_arrays, GL_IBM_rasterpos_clip,
    GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
    GL_MESA_pack_invert, GL_MESA_resize_buffers, GL_MESA_texture_array,
    GL_MESA_ycbcr_texture, GL_MESA_window_pos, GL_NV_blend_square,
    GL_NV_depth_clamp, GL_NV_fragment_program, GL_NV_fragment_program_option,
    GL_NV_light_max_exponent, GL_NV_packed_depth_stencil, GL_NV_point_sprite,
    GL_NV_texture_env_combine4, GL_NV_texture_rectangle,
    GL_NV_texgen_reflection, GL_NV_vertex_program, GL_NV_vertex_program1_1,
    GL_OES_read_format, GL_SGI_color_matrix, GL_SGI_color_table,
    GL_SGI_texture_color_table, GL_SGIS_generate_mipmap,
    GL_SGIS_texture_border_clamp, GL_SGIS_texture_edge_clamp,
    GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays
    There it is.

  4. #4
    Senior Member OpenGL Pro BionicBytes's Avatar
    Join Date
    Mar 2009
    Location
    UK, London
    Posts
    1,161

    Re: Invalid operation error from GL when using FBO

    By the sane token you should be using ARB frambuffer instead as that is a far better extension.

  5. #5
    Newbie OpenGL Pro
    Join Date
    Jan 2007
    Posts
    1,789

    Re: Invalid operation error from GL when using FBO

    Are you quite certain that's the Intel?

    An Intel 945 is actually a software T&L part locked at OpenGL 1.4 (plus the ARB_vertex_buffer and EXT_shadow_funcs extensions - likely through software emulation - source: Intel website); whereever that extensions list is coming from I highly doubt that it's the 945 driver.

  6. #6
    Senior Member Regular Contributor
    Join Date
    Nov 2010
    Location
    Brazil, Rio de Janeiro
    Posts
    147

    Re: Invalid operation error from GL when using FBO

    You should generate a render first with glGenRenderBuffer.

    You are binding the FBO ID as a render buffer and this do not make sense.
    Your code should with something like:

    Code :
     
    // Generate a depth render buffer
    GLuint depthBuffer;
    glGenRenderbuffers( 1, &depthBuffer );
    glBindRenderbuffer( GL_RENDERBUFFER, depthBuffer );
    glRenderbufferStorage( GL_RENDERBUFFER, GL_DEPTH_COMPONENT, w, h );
    glBindRenderbuffer( GL_RENDERBUFFER, 0 );
     
    // Generate the frame buffer
    GLuint fbo;
    glGenFrameBuffer( 1, &fbo );
    glBindFrameBuffer( fbo )
     
    // Bind the depth render buffer to the frame buffer
    glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer );

    Be aware that you should attach a color buffer or texture to the frame buffer in order to get the render result.

  7. #7
    Senior Member Regular Contributor
    Join Date
    Aug 2010
    Posts
    114

    Re: Invalid operation error from GL when using FBO

    Quote Originally Posted by McLeary
    You should generate a render first with glGenRenderBuffer.

    You are binding the FBO ID as a render buffer and this do not make sense.
    Your code should with something like:

    Code :
     
    // Generate a depth render buffer
    GLuint depthBuffer;
    glGenRenderbuffers( 1, &depthBuffer );
    glBindRenderbuffer( GL_RENDERBUFFER, depthBuffer );
    glRenderbufferStorage( GL_RENDERBUFFER, GL_DEPTH_COMPONENT, w, h );
    glBindRenderbuffer( GL_RENDERBUFFER, 0 );
     
    // Generate the frame buffer
    GLuint fbo;
    glGenFrameBuffer( 1, &fbo );
    glBindFrameBuffer( fbo )
     
    // Bind the depth render buffer to the frame buffer
    glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer );

    Be aware that you should attach a color buffer or texture to the frame buffer in order to get the render result.
    Thanks. I got it.

Similar Threads

  1. Replies: 0
    Last Post: 01-19-2014, 10:21 AM
  2. Shader loading function causes invalid operation error on glUseProgram
    By Ceannfaolaidh in forum OpenGL: Basic Coding
    Replies: 2
    Last Post: 08-12-2013, 08:53 PM
  3. OpenGL Error:: Invalid Operation
    By Roach in forum OpenGL: Advanced Coding
    Replies: 3
    Last Post: 06-13-2001, 06:28 PM
  4. Replies: 1
    Last Post: 11-01-2000, 06:39 PM
  5. what causes glGenLists to return th error "Invalid Operation"?
    By convict@large in forum OpenGL: Advanced Coding
    Replies: 2
    Last Post: 11-01-2000, 02:51 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Proudly hosted by Digital Ocean