Autore Topic: sdl e mui  (Letto 1954 volte)

Offline rebraist

  • Nerd
  • *****
  • Post: 946
  • Karma: +13/-1
    • Mostra profilo
sdl e mui
« il: 06 ſettembre 2011, 11:08:22 »
Ciao! Posto la stessa domanda su morphzone: qualcuno ha avuto esperienza di interfacciamento tra sdl e mui?
In pratica ho una finestra sdl e vorrei dotarla di menu, gadget etc.
Chiaramente dovrei prima di tutto recuperare l'indirizzo della finestra e in  una qualche maniera forzare mui (o viceversa sdl) a usarla come sua finestra...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »
Amigaos spacca.
Aros rulla.
Morphos corre di brutto.
Sinceramente, non vorrei che mio figlio facesse amicizia con uno di questi tre tipacci.
Dottore:lei é uno di quelli che si potrebbero definire nerd...
Io: dottò, lo so di mio. Sono pure iscritto a 'n'forum...
Dottore: su internet?
Io: no a rete 4

Offline rebraist

  • Nerd
  • *****
  • Post: 946
  • Karma: +13/-1
    • Mostra profilo
Re: sdl e mui
« Risposta #1 il: 06 ſettembre 2011, 12:36:16 »
su morphzone mi rispondono che non c'è maniera.
ho fatto un tentativo...
la funzione SDL_GetWMInfo permette di ottenere informazioni dal windows manager in relazione alla finestra. Usa una struttura SDL_SysWMinfo che viene riempita con le opportune informazioni.
Nel file sdl_syswm.h la struttura in questione ha una definizione diversa a seconda del sistema operativo. A titolo di esempio quella di windows è questa.
typedef struct SDL_SysWMinfo {
   SDL_version version;
   HWND window;         /**< The Win32 display window */
   HGLRC hglrc;         /**< The OpenGL context, if any */
} SDL_SysWMinfo;

E'chiaro che se ho l'HWND ho tutto ciò che mi serve. Ci ho provato in passato e tutto funzionava alla perfezione: menu, gadget, barre varie etc.
Con aros e gli altri sistemi amiga non c'è una vera definizione. Si usa la struttura generica che è questa:

/** The generic custom window manager information structure */
typedef struct SDL_SysWMinfo {
   SDL_version version;
   int data;
} SDL_SysWMinfo

Mi sono detto: chissà ora faccio una bella fprintf %p del valore restituitomi in data e vediamo cosa succede. Ho verificato con scout per verificare che la finestra del mio programma abbia effettivamente l'indirizzo che mi riporta "data" ma niente. Il dato che mi riporta data è sempre diverso da qualsiasi indirizzo di finestra riportato da scout di aros...
A questo punto ipotizzo che sdl di aros (morphos) non abbia una versione implementata di questa funzione? O sbaglio io qualcosa?

Evidentemente il sistema operativo fornisce un altro sistema per il recupero dell'indirizzo di una finestra (scout da qualche parte lo deve prendere).

Riformulo la domanda: laddove riuscissi in una qualche maniera a trovare l'indirizzo della finestra, ovviamente a runtime, c'è una possibilità di dire a mui che l'oggetto finestra che voglio è proprio quello con quell'indirizzo? In breve gli "monto" i gadget a finestra già creata...
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »
Amigaos spacca.
Aros rulla.
Morphos corre di brutto.
Sinceramente, non vorrei che mio figlio facesse amicizia con uno di questi tre tipacci.
Dottore:lei é uno di quelli che si potrebbero definire nerd...
Io: dottò, lo so di mio. Sono pure iscritto a 'n'forum...
Dottore: su internet?
Io: no a rete 4

Offline raistlin77it

  • Tech Guru
  • *****
  • Post: 221
  • Karma: +2/-0
    • Mostra profilo
Re: sdl e mui
« Risposta #2 il: 06 ſettembre 2011, 15:19:06 »
Era un problema che mi ero posto anche io per un mio progettino 3 anni fa.
Io volevo aprire una finestra opengl e mettere bottoni mui, per fare tipo un "model viewer"
Mi ricordo che mi aveva risposto Tokai, dicendomi praticamente che ti devi aprire una finestra mui, dove metti tutti i tuoi gadget, e poi ne metti anche uno di tipo bitmap(mi pare) e lì ci incolli con una rasterport (sempre mi pare) la grafica della superficie SDL o Opengl. Comunque mi aveva detto di scaricarmi i sorgenti del vice perchè lo schermo del c64 è renderizzato su una bitmap e poi "incollato" in una finestra mui.

Io all'epoca lo avevo scaricato, ma i sorgenti mi reano sembrati un bordello e ho lasciato perdere :P :P

se trovo la mail la posto, anche a "futura memoria "

Ecco trovata, in questo caso parlo di opengl, ma dovrebbe andare anche con le SDL

---------------------------------------------------------------------------------------------------------
On Sat, 31 May 2008, Andrea "Raistlin77it" Beretta wrote:


> it's possible to create a mui window with buttons and an opengl part
> of it displaing a 3d model ?
>
> something like a 3ds viewer with mui buttons ?
>
> if i remember well titler display opengl and mui on the same window,
> so what class/methods i can use to display/redirect tinygl output onto mui win?


You need an area subclass to display your GL stuff in MUI window. You only
need an offscreen bitmap which is blitted to the window in your MUIM_Draw method.


For example in Frodo 4 my TinyGL has following setup called from
MUIM_Setup:


STATIC ULONG mSetupTGL(struct Display_Data *data, ULONG width, ULONG height, ULONG depth)
{
        struct Library *TinyGLBase;


        TinyGLBase = OpenLibrary("tinygl.library", 0);


        if (TinyGLBase)
        {
                data->TinyGLBase = TinyGLBase;


                if ((__tglContext = GLInit()))
                {
                        data->Texture = (GLubyte *)AllocTaskPooled(DISPLAY_X * DISPLAY_Y * 4 * sizeof(GLubyte));


                        if (data->Texture)
                        {
                                if (data->RastPort.BitMap)
                                        data->RastPort.BitMap   = AllocBitMap(width, height, depth, BMF_DISPLAYABLE|BMF_MINPLANES, _screen(data->ehn.ehn_Object)->RastPort.BitMap);


                                if (data->RastPort.BitMap && glAInitializeContextBitMap(data->RastPort.BitMap))
                                {
                                        glViewport(0 , 0 , width , height);
                                        glClearColor(0.0, 0.0, 0.0, 1.0);
                                        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
                                        glMatrixMode(GL_PROJECTION);
                                        glLoadIdentity();


                                        glWindowPos2f(0, 0);
                                        glPixelZoom(1.0f * (float)width/(float)DISPLAY_X, -1.0f * (float)height/(float)DISPLAY_Y);


                                        #if USE_TGL_PALETTE
                                        glColorTable(GL_COLOR_TABLE, GL_RGBA, 256, GL_RGBA, GL_UNSIGNED_BYTE, data->TGLColours);
                                        #endif


                                        data->GLRender  = TRUE;
                                        return TRUE;
                                }
                        }
                }
        }


        mCleanupTGL(data);
        return FALSE;
}


This is only partial example i.e. InitRastPort(&data->RastPort) is done in
other part of code! Once tinygl context is initialized you can render to
your offscreen bitmap using GL calls.


In MUIM_Draw I simply call BltBitMapRastPort() to display stuff in screen:


        BltBitMapRastPort(data->RastPort.BitMap, 0, 0, rp, mleft, mtop , mwidth, mheight, 0xc0);


Please remember that some gfx boards have limitations in 3D. I recall that
old Voodoo cards cant do 32bit modes well if at all. They may also impose
restrictions on texture sizes etc.


Bigfoot or kiero (Mark Olsen and Michal Wozniak) should know more about
it...



  Ilkka



---------------------------------------------------------------------------------------------


Ecco era frodo, non il vice :D ed avevo chiesto ad itix, non tokai :D :D
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline rebraist

  • Nerd
  • *****
  • Post: 946
  • Karma: +13/-1
    • Mostra profilo
Re: sdl e mui
« Risposta #3 il: 06 ſettembre 2011, 15:37:31 »
grazie!! quindi è il contrario di ciò che ho fatto io.
mi metto un pò a studialla.
Ps: raist di rebraist è lo stesso majere di comune conoscenza.
Appassionato di dragonlance immagino;)
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »
Amigaos spacca.
Aros rulla.
Morphos corre di brutto.
Sinceramente, non vorrei che mio figlio facesse amicizia con uno di questi tre tipacci.
Dottore:lei é uno di quelli che si potrebbero definire nerd...
Io: dottò, lo so di mio. Sono pure iscritto a 'n'forum...
Dottore: su internet?
Io: no a rete 4

Offline raistlin77it

  • Tech Guru
  • *****
  • Post: 221
  • Karma: +2/-0
    • Mostra profilo
Re: sdl e mui
« Risposta #4 il: 06 ſettembre 2011, 15:44:51 »
Citazione da: "rebraist"
Ps: raist di rebraist è lo stesso majere di comune conoscenza.
Appassionato di dragonlance immagino;)

Zi Zi :D
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Offline raistlin77it

  • Tech Guru
  • *****
  • Post: 221
  • Karma: +2/-0
    • Mostra profilo
Re: sdl e mui
« Risposta #5 il: 13 ſettembre 2011, 21:08:21 »
Stavo pensando, usando le sdlgl come posso fare per renderizzare offscreen, senza mostrare il risultato a schemo?
« Ultima modifica: 01 Gennaio 1970, 02:00:00 da Guest »

Tags: