Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++]QT thread e debug

    ciao.
    Sto utilizzando le librerie qt , in particolare con opengl.
    queste librerie utilizzano il multithreading.
    Il problema è che quando provo a fare il debug ottengo dei risultati diversi.
    mi chiedevo se questo fosse dovuto appunto ai thread o se devo rivedere qualcos altro nel programma relativo magari ai driver della scheda video.
    Per spiegare:
    ho questo codice:
    codice:
    if (context.supportsObjectSharing()) {
            positionBuffer = context.createGLBuffer
                (vertexBuffer, QCLMemoryObject::WriteOnly);
            texCoordBuffer = context.createGLBuffer
                (texBuffer, QCLMemoryObject::WriteOnly);
        } else
        {
            positionBuffer = context.createBufferDevice
                (num * sizeof(GLfloat) * 4, QCLMemoryObject::WriteOnly);
            texCoordBuffer = context.createBufferDevice
                (num * sizeof(GLfloat) * 2, QCLMemoryObject::WriteOnly);
        }
    e supportsObjectSharing è una funzione che è relativa appunto al multithreading(scusate la mia ignoranza in merito)
    a volte in debug ,entra nel context.supportsObjectSharing() come se fossse true e a volte no.
    cosa puo essere?
    grazie.

  2. #2
    Che versione di qt usi? Quale Ide? Quale compilatore?
    Cosa torna supportsObjectSharing() ?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    allora uso qt 4.8, visual studio 2010 e supportsObjectSharing() ritorna bool, ma penso sia una cosa relaticva al multithreading.
    grazie.
    ciao.

  4. #4
    Ok allora sono andato a guardarmi la documentazione di Qt (non conoscevo questa classe, ne OpenCL) e non c'è nulla a riguardo del tuo problema, quindi credo che non dipenda da Qt ma da OpenCl in se.
    Sono andato sul sito di khronos ed ho crecato un po nella documentazione.
    Qui ho trovato la magica frase
    OpenCL device(s) corresponding to an OpenGL context may be queried. Such a device may not always exist (for example, if an OpenGL context is specified on a GPU not supporting OpenCL command queues, but which does support shared CL/GL objects), and if it does exist, may change over time.
    Cosa importante: che dalla documentazione di Qt non si evinceva, sembrava che fosse costante su ogni macchina, quindi questo implica che la classe probabilmente funziona in modo corretto e che il tuo debug ha ragione.
    Per quanto riguarda il multithreading Qui C'è una spiegazione su come funziona e su cosa viene messo in condivisione fra l'openGL context e l'OpenCL context.

    Infine, per venire a capo del problema, ho trovato questo documento in pdf che dovrebbe spiegare bene come funziona il tutto (quindi magari spiega anche perchè quel bool può cambiare nel tempo)

    --> click qui per il pdf <--
    In particolare mi sembrano indicati i capitoli 9.6 e 9.7! Comunque vedi tu se riesci a venirne a capo e facci sapere

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.