Zwei SDL-Fenster erzeugen?

04/06/2008 - 14:31 von Torben Keil | Report spam
Hallo zusammen,

ich versuche hier in C++ zwei unabhàngige SDL-Surfaces zu erzeugen, in denen
ich unabhàngig voneinander Grafiken einzeichnen kann.

Kann mir jemand sagen, was ich in meinem Beispiel falsch mache?



//-
// 2) Visualize the raw data in a window
//-

uint32_t vidResX = 819; //4096; //2048; //819;
uint32_t vidResY = 410; //2048; //1024; //410;
float dataFactorX = (float)sizeX / (float)vidResX;
float dataFactorY = ((float)valuesPerLine) / (float)vidResY; // Just for
resizing purposes

cout << "Datafactor X: " << dataFactorX << " Y: " << dataFactorY << endl;



if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ) {
cerr << "Couldn't initialize SDL library: " << SDL_GetError() << endl;
exit(1);
}
atexit(SDL_Quit);


SDL_Surface *RAWscreen;
RAWscreen = SDL_SetVideoMode(vidResX, vidResY, 32, SDL_SWSURFACE
SDL_DOUBLEBUF);
if ( RAWscreen == NULL ) {
cerr << "Couldn't create window with a resolution of " << vidResX << "x"
<< vidResY << ": " << SDL_GetError() << endl;
exit(1);
}

// Write to video buffer
//-
write2VidBuffer( vidResX, vidResY, dataFactorX, dataFactorY, data,
RAWscreen );
//-



SDL_Surface *REFscreen;
REFscreen = SDL_SetVideoMode(vidResX, vidResY, 32, SDL_SWSURFACE
SDL_DOUBLEBUF);
if ( REFscreen == NULL ) {
cerr << "Couldn't create window with a resolution of " << vidResX << "x"
<< vidResY << ": " << SDL_GetError() << endl;
exit(1);
}
write2VidBuffer( vidResX, vidResY, dataFactorX, dataFactorY, REFdata,
REFscreen );
//-
//-



cout << "RAWscreen: " << RAWscreen << " REFscreen: " << REFscreen << endl;





Der letzte cout-Befehl zeigt mir wàhrend der Ausführung, daß RAWscreen und
REFscreen Pointer auf die selbe Speicherstelle sind.
Was ist falsch?


Danke und Gruß,
Torben
 

Lesen sie die antworten

#1 Stefan Reuther
04/06/2008 - 18:51 | Warnen spam
Torben Keil wrote:
ich versuche hier in C++ zwei unabhàngige SDL-Surfaces zu erzeugen, in denen
ich unabhàngig voneinander Grafiken einzeichnen kann.


[...]
SDL_Surface *RAWscreen;
RAWscreen = SDL_SetVideoMode(vidResX, vidResY, 32, SDL_SWSURFACE
SDL_DOUBLEBUF);


[...]
SDL_Surface *REFscreen;
REFscreen = SDL_SetVideoMode(vidResX, vidResY, 32, SDL_SWSURFACE
SDL_DOUBLEBUF);


[...]
Der letzte cout-Befehl zeigt mir wàhrend der Ausführung, daß RAWscreen und
REFscreen Pointer auf die selbe Speicherstelle sind.
Was ist falsch?



SDL bietet als Abstraktion einen "Bildschirm" dessen Videomodus man mit
"SDL_SetVideoMode" einstellt. In einem Windowing-System wird das als
Fenster realisiert. Zwei SDL-Fenster in einem Programm geht meines
Wissens nicht.


Stefan

Ähnliche fragen