|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Aug 2008
Città: Veneto
Messaggi: 90
|
[C++] Quali librerie grafiche per visualizzare animazioni e scrivere a video?
Salve a tutti, devo realizzare un programma che funzioni a schermo intero e che visualizzi nei quattro angoli dello schermo un'animazione 300x300, e che mi permetta di impostare il frametime dell'animazione, inoltre dovrei poter scrivere sopra quest'animazione. Con C# e Xna ciò mi risulta patricolarmente facile da realizzare, mentre con C++ non saprei da dove partire, soprattutto quali librerie grafiche utilizzare??
Grazie in anticipo per le eventuali risposte.
__________________
Scheda Madre ASUS P5S800-VM S.O. Windows Xp SP3 Cpu Pentium 4 3.06 GHz 512 + 512 Mb Ram Scheda Video ATI RADEON 9550 256 MbH.D. SEAGATE ST3200826A Ultima modifica di Mr.Gamp : 03-01-2012 alle 09:11. |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2011
Messaggi: 48
|
Con c++ puoi usare le SDL
La questione è banale se possiedi tutti i frame dell'animazione salvati come file di immagine separate. In questo caso il problema è molto facile da risolvere. Le SDL hanno il vantaggio di essere multipiattaforma, ti permettono di entrare in fullscreen semplicemente. Carichi le immage in un array di surfaces Setti un determinato framerate dell'animazione All'interno dell ciclo principale blitti un immagine con un contatore i, incrementi il contatore, fai passare tot tempo, ripeti il ciclo. Dovrebbe assomigliare a qualcosa del genere Codice:
#include <SDL/SDL.h>
#include <string>
SDL_Surface *load_image( std::string filename) {
SDL_Surface* loadedImage = NULL;
SDL_Surface* optImage = NULL;
loadedImage = SDL_LoadBMP( filename.c_str());
if (loadedImage != NULL) {
optImage = SDL_DisplayFormat( loadedImage );
SDL_FreeSurface( loadedImage);
}
return optImage;
}
void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* dest){
SDL_Rect offset;
offset.x = x;
offset.y = y;
SDL_BlitSurface(source, NULL, dest, &offset);
}
int main(int argc, char* args[]) {
if (SDL_Init( SDL_INIT_EVERYTHING ) == -1)
return 1;
SDL_Surface* screen = SDL_SetVideoMode(800, 600, 32, SDL_FULLSCREEN);
if (screen == NULL)
return 1;
// Carico l'animazione fatta da 200 frame nella cartella animazione
SDL_Surface* Animazione[200];
char name[100];
for (int i = 0; i < 200; ++i) {
sprintf(name, "Animazione/anim%4d", i);
Animazione[i] = load_image(name);
name[0] = '\0';
}
int count = 0;
while (count < 5000) {
apply_surface(0, 0, Animazione[count], screen);
SDL_Flip(screen);
count++;
}
SDL_Quit();
return 0;
}
Ultima modifica di mesonepigreco : 08-01-2012 alle 23:56. Motivo: Non si compilava il codice |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Oct 2011
Messaggi: 48
|
Per scrivere a video puoi usare sempre le SDL, con il modulo font se non ricordo male pui generare surface di caratteri da stampare sopra le animazioni o sopra lo schermo
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Aug 2008
Città: Veneto
Messaggi: 90
|
Grazie è proprio quello che cercavo
__________________
Scheda Madre ASUS P5S800-VM S.O. Windows Xp SP3 Cpu Pentium 4 3.06 GHz 512 + 512 Mb Ram Scheda Video ATI RADEON 9550 256 MbH.D. SEAGATE ST3200826A |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:51.



















