Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.01.2015, 15:06

Probleme mit Landscape/Portrait C++/SDL2

Hallo
ich experimentiere schon seit einiger zeit mit SDL2 und kann damit mitlerweile echt viel machen ;)
Nun ist mir die Tage aufgefallen, dass wenn ich ein SDL2 Programm in Android ausführen
will und den screen oder besser gesagt das Handy drehe, mein programm immer abstürtzt

-> bei SDL1.2 und SDL2/OpenGl Es funtioniert alles reibungslos... warum ??

nach tiefere recherche in google fand ich raus, das es anscheind mit dem SDL_GetDesktopDisplayMode
sowie dem "event.window" zusammen hängt - doch leider finde ich im Netz nur was im zusammenhang mit OpenGL ES

-> da ich aber momentan kein OpenGL Es benötige wollte ich euch mal fragen, ob ihr mir weiterhelfen könnt
ich habe ein einfaches programm mit nen cursor programmiert , der sich mithilfe des touchscreen bewegen lässt

- wenn ich mein Handy aber drehe dann wird das programm nur noch bis zur hälfte dargestellt
(von portrait in landsape -> total verzehrt || von landscape nach portrait nur noch halb)
und ich kann nichts mehr machen

:dash:

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

04.01.2015, 15:26

Hast du das Problem im offiziellen SDL Forum mal angesprochen? Ansonsten wäre es nett, wenn du den entsprechenden Code zeigst.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

3

04.01.2015, 21:32

hey ich hab mir heute nochmal einige Beispiele ganz genau angeschaut und bin zu folgendem ergebnis gekommen:

-> jetzt kann man das handy auch drehn :) :thumbsup: :thumbup:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>

#define __USE_C99_MATH
#include <stdbool.h>

SDL_Surface* screen =NULL;
SDL_Surface* window = NULL;
SDL_Surface* Background = NULL;
SDL_Surface* Cursor = NULL;

int main(int argc, char** argv)
{
  SDL_DisplayMode mode;
  SDL_Init(SDL_INIT_VIDEO);
  SDL_GetDesktopDisplayMode(0, &mode);

 SDL_Window * window = SDL_CreateWindow("SDL Example",
                                         SDL_WINDOWPOS_UNDEFINED,
                                         SDL_WINDOWPOS_UNDEFINED,
                                         mode.w, mode.h,
                                         SDL_WINDOW_SHOWN );

  screen = SDL_GetWindowSurface(window);

  Background = SDL_LoadBMP("data/background.bmp");
  Cursor = IMG_Load("data/cursor.png");

 SDL_Rect cursorPosition;
 cursorPosition.x = 100;
 cursorPosition.y = 300;


 SDL_Event event;
 bool quit;

 //GAME LOOP
 while (quit == false)
 {
    while (SDL_PollEvent(&event))
 {
  switch(event.type)
  {
   case SDL_QUIT:
   quit= true;
   break;
  }

   if(event.type == SDL_MOUSEMOTION)
   {
    cursorPosition.x = event.motion.x;
    cursorPosition.y = event.motion.y;
   }


     if (event.type == SDL_WINDOWEVENT &&
      event.window.event == SDL_WINDOWEVENT_RESIZED)
     {
       screen =  SDL_GetWindowSurface(window);
       SDL_UpdateWindowSurface(window);
      }
 }

  SDL_BlitSurface(Background, NULL, screen, NULL);
  SDL_BlitSurface(Cursor, NULL, screen,&cursorPosition);

  SDL_UpdateWindowSurface(window);
 }

 SDL_DestroyWindow(window);
 SDL_FreeSurface(screen);

 SDL_FreeSurface(Background);
 SDL_FreeSurface(Cursor);

 IMG_Quit();
 SDL_Quit();
 return 0;
}


ich hoffe ich konnte anderen weiterhelfen

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

4

04.01.2015, 22:32

Was genau war denn das Problem? Eine kleine Zusammenfassung wäre sicher hilfreich.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Werbeanzeige