Retourner aux forums || Retourner au forum Linux.gui

Linux.gui : double précision dans Opengl

Posté par undine () le 02 juillet 2008
0
Bonjour à tous,

j'ai une question à propos de la double précision dans OpenGL.

Voici le contexte : j'ai une appli utilisant l'interface graphique wxwidgets. L'une des parties de mon IHM est un canevas OpenGL (wxGLCanvas) servant à afficher des données cartographiques.

Je n'ai aucune difficulté à afficher la carte, mais par contre j'ai un problème en ce qui concerne les transformations, en particulier la translation.

En effet, lorsque les valeurs que j'utilise avec glTranslated dépasse les 7 ou 8 chiffres (exemple : 450459.36) j'ai des problème de saut. La carte ne peut être translatée que par paliers de 0.01 (environ). Je comprend tout à fait le phénomène si on utilise des flottants (fonction glTranslatef) mais je ne comprend pas pourquoi j'ai toujours le problème avec des doubles.

Est-ce que cela vient le l'implémentation d'OpenGL sur Linux (la bibliothèque mesa il me semble), de la bibliothèque wxWidgets (peut probable à mon avis), d'une option à la compilation que j'aurai oublié ?

Si vous avez des idées elles sont les bienvenues !!!

Merci d'avance.

> Lire le message (6 commentaires, moyenne: 1,5).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Matériel ?

Posté par David Henry (page perso, ) le 03/07/2008 à 18:22. (lien). Évalué à 1.

Quelle carte graphique avec quel driver ?

Certaines cartes et leur driver fonctionnent peut-être en interne en simple précision...

  • [^]Re: Matériel ?

    Posté par Nicolas Boulay () le 03/07/2008 à 21:29. (lien). Évalué à 2.

    Et certain utilise même des flottant 24 bits :)

    • [^]Re: Matériel ?

      Posté par undine () le 04/07/2008 à 10:25. (lien). Évalué à 1.

      Bonjour,

      Je ne connais que ma carte graphique: une X1300Pro.
      Pour le driver, si ça peut vous aider voici ce que me donne la commande lspci -v :

      01:00.0 VGA compatible controller: ATI Technologies Inc Unknown device 7183 (prog-if 00 [VGA])
      Subsystem: Dell Unknown device 0d02
      Flags: bus master, fast devsel, latency 0, IRQ 169
      Memory at c0000000 (64-bit, prefetchable) [size=256M]
      Memory at dfde0000 (64-bit, non-prefetchable) [size=64K]
      I/O ports at dc00 [size=256]
      Expansion ROM at dfe00000 [disabled] [size=128K]
      Capabilities: <access denied>

      01:00.1 Display controller: ATI Technologies Inc Unknown device 71a3
      Subsystem: Dell Unknown device 0d03
      Flags: bus master, fast devsel, latency 0
      Memory at dfdf0000 (64-bit, non-prefetchable) [size=64K]
      Capabilities: <access denied>

      Et voici ce que me donne glxinfo :

      name of display: :0.0
      display: :0 screen: 0
      direct rendering: Yes
      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: ATI
      client glx version string: 1.3
      client glx extensions:
      GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context,
      GLX_ARB_get_proc_address, GLX_SGI_video_sync, GLX_ARB_multisample,
      GLX_ATI_pixel_format_float, GLX_ATI_render_texture
      GLX version: 1.2
      GLX extensions:
      GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_EXT_import_context,
      GLX_ARB_multisample
      OpenGL vendor string: ATI Technologies Inc.
      OpenGL renderer string: Generic
      OpenGL version string: 2.0.6119 (8.30.3)
      OpenGL extensions:
      GL_ARB_multitexture, GL_EXT_texture_env_add, GL_EXT_compiled_vertex_array,
      GL_S3_s3tc, GL_ARB_depth_texture, GL_ARB_fragment_program,
      GL_ARB_fragment_program_shadow, GL_ARB_fragment_shader,
      GL_ARB_multisample, GL_ARB_occlusion_query, GL_ARB_point_parameters,
      GL_ARB_point_sprite, GL_ARB_shader_objects, GL_ARB_shading_language_100,
      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_float, GL_ARB_texture_mirrored_repeat,
      GL_ARB_texture_rectangle, GL_ARB_transpose_matrix, GL_ARB_vertex_blend,
      GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_vertex_shader,
      GL_ARB_window_pos, GL_ARB_draw_buffers, GL_ATI_draw_buffers,
      GL_ATI_element_array, GL_ATI_envmap_bumpmap, GL_ATI_fragment_shader,
      GL_ATI_map_object_buffer, GL_ATI_separate_stencil,
      GL_ATI_shader_texture_lod, GL_ATI_texture_compression_3dc,
      GL_ATI_texture_env_combine3, GL_ATI_texture_float,
      GL_ATI_texture_mirror_once, GL_ATI_vertex_array_object,
      GL_ATI_vertex_attrib_array_object, GL_ATI_vertex_streams,
      GL_ATIX_texture_env_combine3, GL_ATIX_texture_env_route,
      GL_ATIX_vertex_shader_output_point_size, GL_EXT_abgr, GL_EXT_bgra,
      GL_EXT_blend_color, GL_EXT_blend_func_separate, GL_EXT_blend_minmax,
      GL_EXT_blend_subtract, GL_EXT_clip_volume_hint,
      GL_EXT_draw_range_elements, GL_EXT_fog_coord, GL_EXT_framebuffer_object,
      GL_EXT_multi_draw_arrays, GL_EXT_packed_pixels, GL_EXT_point_parameters,
      GL_EXT_rescale_normal, GL_EXT_secondary_color,
      GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_EXT_stencil_wrap,
      GL_EXT_texgen_reflection, GL_EXT_texture3D,
      GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map,
      GL_EXT_texture_edge_clamp, GL_EXT_texture_env_combine,
      GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic,
      GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
      GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_vertex_array,
      GL_EXT_vertex_shader, GL_HP_occlusion_test, GL_NV_blend_square,
      GL_NV_occlusion_query, GL_NV_texgen_reflection, GL_SGI_color_matrix,
      GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
      GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_SUN_multi_draw_arrays
      glu version: 1.3
      glu extensions:
      GLU_EXT_nurbs_tessellator, GLU_EXT_object_space_tess

      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
      ----------------------------------------------------------------------
      0x23 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x24 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x25 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x26 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x27 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 1 0 None
      0x28 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 1 0 None
      0x29 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 1 0 None
      0x2a 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 1 0 None
      0x2b 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x2c 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x2d 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x2e 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x2f 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 2 1 None
      0x30 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 2 1 None
      0x31 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 2 1 None
      0x32 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 2 1 None
      0x33 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x34 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x35 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x36 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x37 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 4 1 None
      0x38 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 4 1 None
      0x39 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 4 1 None
      0x3a 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 4 1 None
      0x3b 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x3c 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x3d 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x3e 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x3f 24 tc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 6 1 None
      0x40 24 tc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 6 1 None
      0x41 24 tc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 6 1 None
      0x42 24 tc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 6 1 None
      0x43 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x44 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x45 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x46 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x47 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 1 0 None
      0x48 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 1 0 None
      0x49 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 1 0 None
      0x4a 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 1 0 None
      0x4b 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x4c 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x4d 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x4e 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x4f 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 2 1 None
      0x50 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 2 1 None
      0x51 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 2 1 None
      0x52 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 2 1 None
      0x53 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x54 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x55 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x56 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x57 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 4 1 None
      0x58 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 4 1 None
      0x59 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 4 1 None
      0x5a 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 4 1 None
      0x5b 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x5c 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 16 16 16 16 1 0 None
      0x5d 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x5e 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 16 16 16 16 1 0 None
      0x5f 24 dc 0 32 0 r y . 8 8 8 8 0 24 8 0 0 0 0 6 1 None
      0x60 24 dc 0 32 0 r . . 8 8 8 8 0 24 8 0 0 0 0 6 1 None
      0x61 24 dc 0 32 0 r y . 8 8 8 8 0 24 0 0 0 0 0 6 1 None
      0x62 24 dc 0 32 0 r . . 8 8 8 8 0 24 0 0 0 0 0 6 1 None

      • [^]Re: Matériel ?

        Posté par Nicolas Boulay () le 04/07/2008 à 10:51. (lien). Évalué à 2.

        Les moteurs 3D que j'ai vu prépare les données avant de les envoyer a la carte. Tu ne peux pas demander 8 chiffres de précision de déplacement sur des donnees pour un écran qui fait 2000 pixel de large maximum.

        • [^]Re: Matériel ?

          Posté par undine () le 04/07/2008 à 18:33. (lien). Évalué à 1.

          Heu... j'ai pas tout compris mais pour les déplacements, la fonction glTranslated te permet de faire une translation.
          Elle attend comme paramètres 3 doubles. Si tu ne peut pas avoir plus de 8 chiffres précision à quoi sert cette fonction puisqu'il existe glTranslatef qui fait le même chose mais avec des flottants (qui eux atteignent 6 ou 7 chiffres de précision) ?

          • [^]Re: Matériel ?

            Posté par Nicolas Boulay () le 06/07/2008 à 15:15. (lien). Évalué à 2.

            Je connais mal opengl mais il faut se renseigner sur ce qui execute la fonction en question : le driver 3D ou la lib.

            Si c'est la carte 3D, il y a forcément une limitation. Le fait d'avoir 2 fonctions, c'est pour le hardware qui le gère ou pour éviter une conversion couteuse qui peut être fait plus tard.

Revenir en haut de page || Retourner aux forums || Retourner au forum Linux.gui