Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Jul 16, 2025 11:50

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 04, 2007 15:52 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Offenbar geht texturierung generell nicht. Wenn ich in Startscene:
Code:
  1. TextureManager.Bind('2');
  2. glEnable(GL_TEXTURE_2D);
  3.   glBegin(GL_TRIANGLES);
  4.       glColor3f(1,0,0);                // alle weiteren Vertice werden rot gezeichnet
  5.       glTexCoord2f(0,0);glVertex3f(-1.0,-1.0, 0.0);
  6.       glColor3f(0,0,1);                // alle weiteren Verticen werden blau gezeichnet
  7.       glTexCoord2f(1,1);glVertex3f(1.0,-1.0, 0.0);
  8.       glColor3f(0,1,0);                // alle weiteren Verticen werden grn gezeichnet
  9.       glTexCoord2f(1,0);glVertex3f(0.0, 1.0, 0.0);
  10.   glEnd();
  11. glDisable(GL_TEXTURE_2D);

aktiviere wird das dreieck zwar gezeichnet aber nicht texturiert


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 04, 2007 17:03 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Das würde ich auch sagen. Denn Font.Draw würde ansonsten ne Exception schmeissen.
Benutzt du Threads?

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 04, 2007 17:15 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Also hab die Texturierung wieder hinbekommen, war nur ein Befehl, den ich da irgendwann mal eingebaut habe, der das SDLSurface neugeladen hat. Rausgenommen und schon gings.

Die Font.Draw gibt mir trotz allem keine Exception aus und funktionieren tut es nicht.

Threads benutze ich nicht.


Hier nochmal der Download mit der nun funktionierenden Textur.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 04, 2007 21:41 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
So nun funktioniert es tatsaechlich, ich wagte schon nichtmehr daran zu glauben.

Ein problem habe ich aber noch. Mit folgender Prozedur wechsel ich in den Fullscreenmode und wieder zurueck:

Code:
  1.  
  2. AvailableVModes: PPSDL_Rect
  3.  AvailableVModes := SDL_ListModes(nil, SDL_FULLSCREEN or SDL_HWSURFACE);


Code:
  1. procedure TSE_Window.SetFullScreen   (Value: Boolean);
  2. begin
  3.   fFullScreen := Value;
  4.   if fFullScreen then
  5.   begin
  6.     fLeft         := 0;
  7.     fTop          := 0;
  8.     fScreenWidth  := (AvailableVModes^)^.w;
  9.     fScreenHeight := (AvailableVModes^)^.h;
  10.     Videoflags    := Videoflags OR SDL_FULLSCREEN;
  11.   end
  12.   else
  13.   begin
  14.     fLeft         := fOrgWindowRect.Left;
  15.     fTop          := fOrgWindowRect.Top;
  16.     fScreenWidth  := fOrgWindowRect.Width;
  17.     fScreenHeight := fOrgWindowRect.Height;
  18.     Videoflags    := Videoflags AND NOT SDL_FULLSCREEN;
  19.   end;
  20.   ReloadSurface;
  21. end;


ReloadSurface:


Code:
  1. procedure TSE_Window.ReloadSurface;
  2. begin
  3.   Surface := SDL_SetVideoMode(fScreenWidth, fScreenHeight,
  4.                               fBitPerPixel, VideoFlags);
  5. {$IFDEF WIN32}
  6.   SetWindowPos( fWindowInfo.window,
  7.                 0,
  8.                 fLeft,fTop,
  9.                 0,0,
  10.                 SWP_NOSIZE OR SWP_NOZORDER OR SWP_SHOWWINDOW);
  11. {$ELSE}
  12.    fWindowInfo.info.x11.lock_func();
  13.    XMoveWindow( fWindowInfo.info.x11.display,
  14.                 fWindowInfo.info.x11.wmwindow,
  15.                 fLeft,fTop);
  16.    fWindowInfo.info.x11.unlock_func();
  17. {$ENDIF}
  18.  
  19.   if Surface = nil then
  20.   begin
  21.     WriteLn ('.:. TSE_Window.Show .:.');
  22.     WriteLn ('    -> Failed to create Main Surface');
  23.     Exit;
  24.   end;
  25. end;



Wenn ich in den Fullscreen wechsle, verschwinden alle meine Texturen und ebenso die Fonts (, die ja auch nur Texturen sind). Ich gehe davon aus, dass das mit dem Reload des Surface zusammenhaengt, denn wenn ich den Aufruf von ReloadSurface ausklammere, funktioniert zwar der Fullscreenmode nichtmehr aber die Texturen bleiben erhalten.

Hat da irgendwer eine Idee, wie die Texturen beim Reload des Surface erhalten bleiben?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 04, 2007 22:12 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Mit der aktuellen SDL Version (1.2.11) ist es so, dass beim Aufruf von SDL_SetVideoMode (unter Windows) der Kontext verlohren geht. Da wird dir nichts anderes übrig bleiben als alle Texturen neu zu erstellen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 05, 2007 11:16 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Naja dann bleibt mir wohl nix anderes uebrig als auf ne neue SDL Version zu warten, in der Hoffnung, dass es dann geht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 05, 2007 12:10 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Eine andere Möglichkeit wäre, dem Benutzer nur am Anfang zu erlauben, den Videomodus zu setzen und die Texturen erst dann zu laden.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]