Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [C] Caricare immagini con OpenGL?

    Ciao a tutti,

    avrei bisogno di caricare delle immagini da visualizzare in una finestra, possibilmente usando la libreria Opengl.
    L'immagine non mi serve come texture, ma semplicemente devo visualizzarla.

    Ho copiato il codice di un esempio dal libro "OpenGL SuperBible", ma mi da errore:

    GLubyte *pImage = NULL;
    GLint iWidth, iHeight, iComponents;
    GLenum eFormat;

    glClear(GL_COLOR_BUFFER_BIT);

    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

    pImage = gltLoadTGA("gatto.tga", &iWidth, &iHeight, &iComponents, &eFormat);

    glRasterPos2i(0, 0);

    if(pImage!=NULL)
    glDrawPixels(iWidth, iHeight, eFormat, GL_UNSIGNED_BYTE, pImage);

    free(pImage);

    glutSwapBuffers();

    L'errore è: '=' : cannot convert from 'signed char *' to 'unsigned char *' riferito alla riga di pImage = gltLoadTGA.....


    Grazie mille

  2. #2
    Aggiungi un cast esplicito alla linea in questione, ( (unsigned char *) "gatto.tga") oppure memorizza "gatto.tga" in un array di unsigned char.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    ti ringrazio per l'intervento, ma ho già provato a fare il cast o ad usare un vettore di unsigned char...ma non cambia niente

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non vorrei sbagliare ma il messaggio si riferisce al tipo di dati puntati da pImage.

    Prova a scrivere

    GLByte *pImage = NULL;

  5. #5
    ho provato come dice oregon (grazie), però scrivendo GLbyte *pImage = NULL; (con la b minuscola) e non mi da più errori in fase di compilazione.

    Però in fase di linking me ne da 1:

    unresolved external symbol "signed char * __cdecl gltLoadTGA(char const *,int *,int *,int *,unsigned int *)" (?gltLoadTGA@@YAPACPBDPAH11PAI@Z)

    che credo abbia comunque a che fare con l'errore precedente...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    No ... il primo errore e' risolto.

    Questo messaggio indica solamente che non hai indicato al linker la libreria GLUT.

    Indicalo nelle opzioni del linker per il tuo compilatore ...

  7. #7
    ho inserito la libreria nel linker (uso Visual Studio C++ 6), ma l'errore rimane...

    l'errore si riferisce ancora al "signed char*" di quella funzione....

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da syddharta
    ho inserito la libreria nel linker (uso Visual Studio C++ 6), ma l'errore rimane...
    Dove e cosa hai inserito?

    Originariamente inviato da syddharta
    l'errore si riferisce ancora al "signed char*" di quella funzione....
    No ... ti viene evidenziato il modello della funzione (e che questa restituisce un signed char *) ma l'errore e'

    unresolved external symbol

    che vuol dire semplicemente che la compilazione e' andata a buon fine ma il linker non trova la libreria in cui e' definita la funzione chiamata.

    Hai commesso un errore nell'inclusione della libreria.

  9. #9
    in Project->Settings->Link ho aggiunto le librerie "glut32.lib glui32.lib opengl32.lib"
    ma con o senza di queste l'errore mi rimane.

    Una libreria da includere potrebbe essere la LoadTGA.c, ma includendo (come sopra) mi dice "invalid o corrupt file".

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    La LoadTGA.c *non* e' una libreria ma un sorgente c (e quindi non puoi inserirla tra le librerie linkate).

    Se la funzione e' definita in quel file, devi aggiungere tale file tra i sorgenti perche' deve essere compilato in modo che il linker trovi il codice oggetto della gltLoadTGA.

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.