В программе написанной с использованием Qt необходимо отображать JPEG с IP-камеры, вариант с использованием QPixmap не подошёл в следствии большого расхода памяти.
Код: Выделить всё
QSize frame_resolution; //геометрические размеры
QByteArray jpg; //изображение
void Image::initializeGL()
{
qglClearColor(Qt::black);
}
void Image::resizeGL(int width, int height)
{
qDebug() << "run Image::resizeGL";
glViewport(0, 0, width, height);
qDebug() << "after glViewport" << glGetError();
glPixelStorei(GL_PACK_ALIGNMENT, 1);
qDebug() << "after glPixelStorei" << glGetError();
glPixelZoom(1, 1);
qDebug() << "after glPixelZoom" << glGetError();
glMatrixMode(GL_PROJECTION);
qDebug() << "after glMatrixMode" << glGetError();
glLoadIdentity();
qDebug() << "after glLoadIdentity" << glGetError();
glViewport(0, 0, width, height);
qDebug() << "after glViewport" << glGetError();
qDebug() << "end Image::resizeGL";
}
void Image::paintGL()
{
qDebug() << "runImage::paintGL"
<< frame_resolution.width()
<< frame_resolution.height()
<< jpg.size() << frame_part;
/*QImage image;
image.loadFromData(jpg);
QImage img = QGLWidget::convertToGLFormat(image);*/
glDrawPixels(frame_resolution.width(), frame_resolution.height(), GL_RGB,
GL_UNSIGNED_BYTE, jpg.data());
qDebug() << "after glDrawPixels" << glGetError();
qDebug() << "end Image::paintGL" << glGetError();
}
Вывод в консоль:
Код: Выделить всё
run Image::view_image
run Image::resizeGL
after glViewport 0
after glPixelStorei 0
after glPixelZoom 0
after glMatrixMode 0
after glLoadIdentity 0
after glViewport 0
end Image::resizeGL
runImage::paintGL 800 592 1296 21
after glDrawPixels 0
end Image::paintGL 0
Насколько я могу понять ошибок нет, но окно с изображением не появляется, более того - окно вообще не появляется.
Основной вопрос - почему не появляется окно с чёрным фоном, которым я инициализировал?
Спасибо.
P.S. Данный по проверке OpenGL
Код: Выделить всё
$ glxgears
3324 frames in 5.0 seconds = 661.961 FPS
3420 frames in 5.0 seconds = 681.951 FPS
Код: Выделить всё
$ glxinfo
name of display: :0.0
display: :0 screen: 0
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose)
server glx vendor string: SGI
server glx version string: 1.2
server glx extensions:
GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating,
GLX_EXT_import_context, GLX_EXT_texture_from_pixmap, GLX_OML_swap_method,
GLX_SGI_make_current_read, GLX_SGIS_multisample, GLX_SGIX_hyperpipe,
GLX_SGIX_swap_barrier, GLX_SGIX_fbconfig, GLX_MESA_copy_sub_buffer
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
client glx extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
GLX_MESA_copy_sub_buffer, GLX_MESA_swap_control,
GLX_MESA_swap_frame_usage, GLX_OML_swap_method, GLX_OML_sync_control,
GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGI_video_sync,
GLX_SGIS_multisample, GLX_SGIX_fbconfig, GLX_SGIX_pbuffer,
GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap
GLX version: 1.2
GLX extensions:
GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_copy_sub_buffer,
GLX_OML_swap_method, GLX_SGI_make_current_read, GLX_SGIS_multisample,
GLX_SGIX_fbconfig, GLX_EXT_texture_from_pixmap
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
OpenGL version string: 1.4 (2.1 Mesa 7.0.4)
OpenGL extensions:
GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,
GL_ARB_imaging, GL_ARB_multisample, GL_ARB_multitexture,
GL_ARB_occlusion_query, GL_ARB_point_parameters, GL_ARB_point_sprite,
GL_ARB_shadow, GL_ARB_shadow_ambient, 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_program,
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_clip_volume_hint, GL_EXT_copy_texture, GL_EXT_draw_range_elements,
GL_EXT_fog_coord, GL_EXT_framebuffer_object, GL_EXT_multi_draw_arrays,
GL_EXT_packed_pixels, GL_EXT_paletted_texture, GL_EXT_point_parameters,
GL_EXT_polygon_offset, 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_wrap, GL_EXT_subtexture,
GL_EXT_texture, GL_EXT_texture3D, GL_EXT_texture_edge_clamp,
GL_EXT_texture_env_add, 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_vertex_array, GL_APPLE_packed_pixels,
GL_ATI_draw_buffers, GL_ATI_texture_env_combine3,
GL_ATI_texture_mirror_once, GL_ATIX_texture_env_combine3,
GL_IBM_texture_mirrored_repeat, GL_INGR_blend_func_separate,
GL_MESA_pack_invert, GL_MESA_ycbcr_texture, GL_NV_blend_square,
GL_NV_fragment_program, GL_NV_light_max_exponent, GL_NV_point_sprite,
GL_NV_texgen_reflection, GL_NV_texture_rectangle, GL_NV_vertex_program,
GL_NV_vertex_program1_1, GL_SGI_color_matrix, GL_SGI_color_table,
GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SGIX_depth_texture,
GL_SGIX_shadow, GL_SGIX_shadow_ambient, GL_SUN_multi_draw_arrays
5 GLX Visuals
visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
----------------------------------------------------------------------
0x22 24 tc 0 24 0 r y . 8 8 8 0 0 16 0 0 0 0 0 0 0 None
0x23 24 tc 0 24 0 r y . 8 8 8 0 0 16 8 16 16 16 0 0 0 None
0x24 24 tc 0 32 0 r y . 8 8 8 8 0 16 8 16 16 16 16 0 0 None
0x25 24 tc 0 32 0 r . . 8 8 8 8 0 16 8 16 16 16 16 0 0 None
0x3e 32 tc 0 32 0 r . . 8 8 8 8 0 0 0 0 0 0 0 0 0 Ncon
5 GLXFBConfigs:
visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
----------------------------------------------------------------------
0x22 0 tc 0 24 0 r y . 8 8 8 0 0 16 0 0 0 0 0 0 0 None
0x23 0 tc 0 24 0 r y . 8 8 8 0 0 16 8 16 16 16 0 0 0 None
0x24 0 tc 0 32 0 r y . 8 8 8 8 0 16 8 16 16 16 16 0 0 None
0x25 0 tc 0 32 0 r . . 8 8 8 8 0 16 8 16 16 16 16 0 0 None
0x3e 0 tc 0 32 0 r . . 8 8 8 8 0 0 0 0 0 0 0 0 0 Ncon