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

28.07.2011, 21:13

Bildschirmauflösung nicht änderbar

Hallo zusammen,

bevor ich mit meiner Frage beginne, möchte ich darauf hinweisen, dass ich bereits anderweitig versucht habe folgendes Problem zu lösen.
Im Listing 12.1 wird die main-Funktion des Spiels vorgestellt. Nun habe ich versucht, die Bildschirmauflösung zu ändern in dem ich der Funktion Init(x,x,x,x) von CFramework unterschiedliche Parameter zuordne.
Leider fand keine Veränderung statt.
Ist die Funktion fehlerhaft oder habe ich einen Denkfehler?

Ich danke euch im voraus ;)

MfG Lukas

2

29.07.2011, 02:08

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
bool CFramework::Init (int ScreenWidth, int ScreenHeight,
int ColorDepth, bool bFullscreen)
{
    // Alle Systeme der SDL initialisieren
    if (SDL_Init (SDL_INIT_VIDEO | SDL_INIT_TIMER) == -1 )
    {
cout << "SDL konnte nicht initialisiert werden!" << endl;
cout << "Fehlermeldung: " << SDL_GetError () << endl;

Quit ();

return (false);
    }

    // Vollbild oder Fenstermodus einstellen
    if (bFullscreen == true)
    {
m_pScreen = SDL_SetVideoMode (ScreenWidth, ScreenHeight, ColorDepth,
SDL_HWSURFACE | SDL_DOUBLEBUF |
SDL_FULLSCREEN);
    }
    else
    {
m_pScreen = SDL_SetVideoMode (ScreenWidth, ScreenHeight, ColorDepth,
SDL_HWSURFACE | SDL_DOUBLEBUF);
    }

    // Prüfen, ob alles funktioniert hat
    if (m_pScreen == NULL)
    {
cout << "Videomodus konnte nicht gesetzt werden!" << endl;
cout << "Fehlermeldung: " << SDL_GetError () << endl;

Quit ();

return (false);
    }

    // Zeiger auf internes Array für Tastaturstatus ermitteln
    m_pKeystate = SDL_GetKeyState (NULL);

    // Alles ging glatt, also true zurückliefern
    return (true);

} // Init



müsste eigentlich stimmen, muss man ggf. noch was in den options machen? irgendwo en häkchen setzen oder so ^^

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »TrikkieMikkie« (29.07.2011, 08:40)


3

29.07.2011, 08:44

Willkommen im Forum Lukas92!

Zeig mal den Code der main-Funktion. ;)

Und:
Bitte Code-Tags verwenden.
Hab das mal für dich erledigt.
fka tm

4

29.07.2011, 20:12

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
#include "Framework.hpp"
#include "Game.hpp"

int main (int argc, char *argv[])
{
// Framework initialisieren
if (g_pFramework->Init (800, 600, 16, true) == false)
        return (0);


// Neue Instanz des Spiels
CGame Game;

// Spiel initialisieren
Game.Init ();

// Spiel laufen lassen. Diese Funktion läuft so lange,
// bis das Spiel geschlossen oder die Escape-Taste
// gedrückt wird
Game.Run ();

// Spiel beenden
Game.Quit ();

// Framework beenden
g_pFramework->Quit ();
g_pFramework->Del ();

return (0);

}


das wäre die main funktion

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Lukas92« (29.07.2011, 20:18)


5

29.07.2011, 20:34

Wenn du die Größe über Init(x, x, x, x) änderst, hilft das wenig wenn du im Fullscreen sein solltest, also true als 4. Parameter angibst.
Init(x-Größe, y-Größe, 16, false) sollte das gewünschte Ergebnis hervorrufen.

MfG
Check

PS: Herzlich Willkommen im Forum.

6

29.07.2011, 20:50

@TrikkieMikkie und Checkmatering, danke für die Begrüßung ;D


ich habe für den 4. Parameter 'false' angegeben.
Leider macht dies keinen Unterschied, ich verstehe auch den Grund nicht, weshalb es im Fullscreen nicht funktionieren sollte.


Bitte um weitere Vorschläge.


Gruß Lukas

7

29.07.2011, 20:55

vllt hilft noch diese Information:

Nach Start der main funktioniert eigentlich alles einwandfrei, allerdings steht im Ausgabefenster folgendes (arbeite mit Visual Studio 2008 ) :

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
"Project1.exe": "C:\Program Files\Projekte\Project1\Debug\Project1.exe" geladen, Symbole wurden geladen.
"Project1.exe": "C:\Windows\SysWOW64\ntdll.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\kernel32.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\KernelBase.dll" wurde geladen
"Project1.exe": "C:\Program Files\Projekte\Project1\SDL.dll" geladen, Die Binärdaten wurden nicht mit Debuginformationen erstellt.
"Project1.exe": "C:\Windows\SysWOW64\advapi32.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\msvcrt.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\sechost.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\rpcrt4.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\sspicli.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\cryptbase.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\gdi32.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\user32.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\lpk.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\usp10.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\winmm.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\msvcp100d.dll" geladen, Symbole wurden geladen.
"Project1.exe": "C:\Windows\SysWOW64\msvcr100d.dll" geladen, Symbole wurden geladen.
"Project1.exe": "C:\Windows\SysWOW64\imm32.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\msctf.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\uxtheme.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\dwmapi.dll" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\KBDUS.DLL" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\KBDUS.DLL" entladen.
"Project1.exe": "C:\Windows\SysWOW64\KBDGR.DLL" wurde geladen
"Project1.exe": "C:\Windows\SysWOW64\KBDGR.DLL" entladen.
"Project1.exe": "C:\Windows\SysWOW64\ole32.dll" wurde geladen
Der Thread 'Win32 Thread' (0x968) hat mit Code 0 (0x0) geendet.
Das Programm "[3976] Project1.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.

8

29.07.2011, 21:19

*hust*
Du musst auch X und Y ändern.

Im Fullscreen geht halt nicht mehr wie 800/600, alles andere ist unschön. Habe es ausprobiert. :P
Allerdings mit der SFML, ich weiß nicht ob die SDL den Inhalt des Fensters streckt.

Wieso soll das hilfreich sein? Was hat das mit deinem Code zu tun? Noch ist das unwichtig.

MfG
Checkmateing

9

29.07.2011, 21:26

Dass ich x und y ändern muss war selbstverständlich ^^ man kommt allerdings trotz 'false' in den fullscreen...

zu deiner frage, warum das hilfreich sei, naja ne höhere auflösung lässt dinge schöner aussehen, da man nicht jeden einzelnen pixel sieht.

10

29.07.2011, 21:32

Wenn er trotz false in den Fullscreen geht, setzt du irgendwo anders den Wert auf true. Das kann in so ziemlich allen Files sein, die bFullscreen nutzen.

Ansonsten machst du echt was gehörig falsch, denn es ist von der Nutzung her richtig.

Nur so, welches verkaufte Spiel läuft auf´m PersonalComputer nicht auf Fullscreen, also mit Auflösung 800/600?

MfG
Check

EDIT: Nimm dir mal das eigentliche Projekt von der CD, kopiere es mal und dann ändere die Werte, was wirst du feststellen?
Nur um ganz sicher zu gehen: Die Zeile sollte ungefähr so aussehen:

C-/C++-Quelltext

1
if (g_pFramework->Init (800, 600, 16, false) == false)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Checkmateing« (29.07.2011, 21:47)


Werbeanzeige