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

Aktuelle Zeit: Fr Jul 18, 2025 04:15

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 22 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: glgentextures funktioniert nicht
BeitragVerfasst: Mi Apr 26, 2006 16:28 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
moin

ich hab das problem, dass bei mir glgentextures und auch glgenlists einen EAccess Error auslöst. ich hab mir zuerst gedacht es liege an mir, aber dann hab ich mal die partikel engine von hier kompiliert und siehe da, der gleiche fehler. die funktion ist doch ganz wichtig, und es wäre super wenn ihr mir lösungsvorschläge geben könntet.

mfg

_________________
bester uo-shard: www.uosigena.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 26, 2006 16:54 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Welche Partikelengine? Welches Template? Welcher Header? Welcher Compiler?

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 26, 2006 21:39 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Jo die Fragen stell ich mir auch gerade. Da die Funktionen eigentlich recht trivial sind, sollten die von jedem GL Header zur verfügung gestellt werden, außer man bindet die Funktionen selber, und vergisst selbige.

Also bitte mehr Infos.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 27, 2006 20:44 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
jep, war wohl n bissl zu kurz ;)

also ich benutze dglopengl.pas, delphi 7, die partikelengine ist diejenige der tutorials, ich hab allerdings auch probiert, das ganze irgendwie sonst zu benutzen, ohne sdl ging es teilweise, aber eben auch nur teilweise und mit sdl meldet der immer EAccessViolation (read 00000) ich weiss nicht woran es liegt, früher ging das jeweils, evtl liegt es auch an mir bzw meinem pc.

das ganze kommt immer hier in der zweiten zeile vor:
procedure STUB_glGenTextures(n: TGLsizei; textures: PGLuint); {$IFNDEF CLR}{$IFDEF Win32} stdcall; {$ELSE} cdecl; {$ENDIF}{$ENDIF}
begin
_glGenTextures := TglGenTextures(glProcedure('glGenTextures'{$IFDEF CLR}, typeof(TglGenTextures){$ENDIF}));
_glGenTextures(n, textures);
end;


2. Problem:
bei TgluQuadricDrawStyle(Quadobject, GL_LINES); gibt mir der compiler immer

[Error] Mainunit.pas(172): ')' expected but ',' found

aus. das schlimme daran, wenn ich das ganze auskommentiere, hat er überhaupt kein problem
das ganze sieht so aus:

procedure Tgame.draw_opengl;
var
i,j: integer;
Quadobject: PGLUquadric;
begin
Quadobject := gluNewQuadric;
TgluQuadricDrawStyle(Quadobject, GL_LINES);
[..]
end;

_________________
bester uo-shard: www.uosigena.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 27, 2006 23:58 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Gaukler hat geschrieben:
das ganze kommt immer hier in der zweiten zeile vor:
procedure STUB_glGenTextures(n: TGLsizei; textures: PGLuint); {$IFNDEF CLR}{$IFDEF Win32} stdcall; {$ELSE} cdecl; {$ENDIF}{$ENDIF}
...

Hänge mal deinen ganzen Code an. Ich vermute, dass dein Template defekt ist und du OpenGL vor dem SDL-Fenster initialisierst.

Gaukler hat geschrieben:
2. Problem:
bei TgluQuadricDrawStyle(Quadobject, GL_LINES); gibt mir der compiler immer

Die Funktion heisst auch gluQuadricDrawStyle ohne T.
Das T dient zu zeigen, dass es ein Object, Record, Klasse ist, was es hier aber nicht ist.
Wenn du das änders sollte der Code problemlos laufen.

Übrigens kannst du bei sowas ins Wiki schauen. Dort existiert eine GL(U)-Funktionsübersicht aus der du die korrekte Bezeichnung entnehmen kannst und auch die restlichen Infos die man benötigt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 28, 2006 06:38 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
jo stimmt das wirds wohl sein, ich weiss das mitm t eigentlich scho, habs nur irgendwie übersehen...

beim 2ten werd ich dann mal mein template posten, also das sdl template, kann sein, dass ich da eine änderung gemacht hab, die ich nicht hätte machen sollen. dummerweise bin ich grad in der schule und komm nich an die source ran....

mfg

_________________
bester uo-shard: www.uosigena.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 28, 2006 07:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Das T gibt normal an, dass es sich um einen Typen handelt. Das sind zu 98% Klassen, Records etc. In diesem Falle ist es aber eine Procedur. Und zwar kann man dann eine Methode genau so behandeln wie eine Variable. Sie zuweisen und ausführen kann man sie natürlich immer noch. In dem Falle hat i0n0s aber recht. Benutzt die Variante ohne T dann wird alles gut.

Zu der AccessVialotion. Die ist an Adresse 0000. Das bedeutet, dass jemand versucht auf etwas zu zugreifen was aber nil ist. All die Funktionen sind zu Begin nil, da sie erst geladen werden müssen. Diese STUB methode macht nichts anderes als sie zu laden, sich selbst aus dem Methodenaufruf rauszuschmeißen und die Methode dann aufzurufen. Und da denke ich mal, dass die Methode nicht geladen werden konnte.

Stellt sich jetzt die Frage warum ist das so. Das kann meherere Gründe haben. Du musst als erstes in deinem Programm InitOpenGL aufrufen oder aber die Methode CreateRenderingContext. Die ruft das InitOpenGL selbsttätig auf. Und du musst einen Context erstellt haben. Entweder manuell oder eben wieder per CreateRenderingContext. Erst dann darfst du glGenTextures oder sonst etwas aufrufen, da erst jetzt OpenGL richtig initialisiert wurde.

Es bietet sich an, so lange du nicht unter .NET arbeitest, dass du nach dem Erstellen ActivateRenderContext aufrufst. Dabei werden alle Methodenpointer geladen und der Kontex aktiviert. Das mit den Stubs funktioniert zwar meistens aber einige Konstelationen mögen das nicht. Zum Beispiel wenn ein Stub zwischen glBegin und glEnd aufgerufen wird.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 28, 2006 12:02 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
hmm glbegin und glend hab ich eigentlich nicht benutzt, ich hab da wirklich keine ahnung, bins scho vielmal durchgegangen...

zuerst der mainunit code, ist nicht ganz vollständig, sollte aber nich so wichtig sein. ausserdem hab ich hier auch die 2 units der partikelengine nicht drin, das ganze sollte aber in ordnung sein, stehen ja auch in der wiki ;)

Code:
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3.   SDL_Unit:=TSDL_Unit.create;
  4.   Effect:=TexampleFX.Create;
  5.   glEnable(GL_BLEND);
  6.   glDisable(GL_DEPTH_TEST);
  7.   glBlendFunc(GL_SRC_ALPHA, GL_ONE);
  8.  
  9.   // Eintritt in Main-Loop
  10.   while ( Done <> -1 ) do
  11.   begin
  12.     SDL_Unit.glHandleEvents;
  13.     Draw_OpenGL;
  14.     Inc(FPSCount);
  15.   end;
  16.  
  17.   SDL_Unit.Quit_App;
  18. end;
  19.  
  20. procedure Tform1.Draw_OpenGL;
  21. begin
  22.   glClearColor(0,0,0,0);
  23.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  24.  
  25.   Effect.Advance(25);
  26.  
  27.   //Render-Particles
  28.   glLoadIdentity;
  29.   glTranslatef(0,-1,-3);
  30.  
  31.   Effect.Render;
  32.   SDL_GL_SwapBuffers;
  33. end;
  34.  
  35.  
  36. end.



hier der code der sdl_unit:

Code:
  1. unit Unit_SDL;
  2.  
  3. interface
  4.  
  5. uses
  6.   windows,sdl, easysdl, dglOpenGL, sysutils;
  7.  
  8. type
  9.   TSDL_UNIT = class
  10.     procedure Init_SDL;
  11.     function  glResizeWindow( width : integer; height : integer ) : Boolean;
  12.     procedure glHandleEvents;
  13.     procedure Quit_App;
  14.     function glTimer( interval : UInt32; param : Pointer ) : UInt32;
  15.     procedure Init;
  16.   private
  17.     { Private declarations }
  18.   public
  19.     { Public declarations }
  20.   end;
  21.  
  22.  
  23. const
  24.   INVALID_MODULEHANDLE = 0;
  25.  
  26. var
  27.   Windows_Caption:    shortstring   =       'The Butision';
  28.  
  29.   Screen_width:       integer   = 800;
  30.   Screen_height:      integer   = 600;
  31.   Screen_bpp:         integer   = 8;
  32.  
  33.   FPSCount:           LongInt;
  34.   Done:               integer=0;
  35.   videoFlags:         integer;
  36.   surface:            PSDL_Surface;
  37.   h_DC:               HDC;                      // Device Context
  38.   h_RC:               HGLRC;                    // OpenGL Rendering Context
  39.   h_Wnd:              HWND;                     // Handle aufs Fenster
  40.  
  41.   GLHandle:           HINST;
  42.   GLUHandle:          HINST;
  43.  
  44. implementation
  45.  
  46. uses Unit1;
  47.  
  48. procedure TSDL_Unit.Init;
  49. begin
  50.     // Initalisierung
  51.   Init_SDL;
  52.   InitOpenGL;
  53.  
  54.   //gibt schönere Animationen            IN SDL UNIT VERSCHIEBEN SPÄTER -> nicht nötig hier
  55.   glEnable(GL_TEXTURE_2D);         // Aktiviert Texture Mapping
  56.   glShadeModel(GL_SMOOTH);         // Aktiviert weiches Shading
  57.   glClearColor(0.0, 0.0, 0.0, 1.0);         // Bildschirm löschen (schwarz)
  58.   glClearDepth(1.0);                                    // Depth Buffer Setup
  59.   glEnable(GL_DEPTH_TEST);                        // Aktiviert Depth Testing
  60.   glDepthFunc(GL_LEQUAL);                          // Bestimmt den Typ des Depth Testing
  61.   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // Qualitativ bessere Koordinaten Interpolation
  62.  
  63.   // Setzen eines Timers für FPS-Berechnung
  64.   SDL_Init(SDL_INIT_TIMER);
  65.   SDL_AddTimer(1000, @TSDL_UNIT.gltimer, nil);
  66.  
  67.   // Anpassen der Fenstergröße
  68.   glResizeWindow( SCREEN_WIDTH, SCREEN_HEIGHT );
  69. end;
  70.  
  71.  
  72. {------------------------------------------------------------------------------}
  73. {                             SDL Initialieren                                 }
  74. {------------------------------------------------------------------------------}
  75. procedure TSDL_UNIT.Init_SDL;
  76. var
  77.   videoinfo:    PSDL_VideoInfo;
  78. begin
  79. // Initalisieren vom Simple DirectMedia Layer
  80.   if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) then
  81.   begin
  82.     messagebox(0,'Initalisierung von SDL schlug fehl: ', SDL_GetError, MB_OK);
  83.     Quit_App;
  84.   end;
  85.  
  86. // Information über Grafikkarte einholen
  87.   videoInfo := SDL_GetVideoInfo;
  88.   if ( videoInfo = nil ) then
  89.   begin
  90.     messagebox(0,'Grafikkarte ließ sich nicht abfragen: ', SDL_GetError, MB_OK);
  91.     Quit_App;
  92.   end;
  93.  
  94.   // Flags für den SDL-Grafikmodus setzen
  95.   videoFlags := SDL_OPENGL or                  // OpenGL-Unterstützung aktivieren
  96.                 SDL_DOUBLEBUF or               // Double Buffering aktivieren
  97.                 SDL_HWPALETTE;                 // Palette in Hardware speichern
  98.  
  99.   if ( videoInfo.hw_available <> 0 ) then
  100.     videoFlags := videoFlags or SDL_HWSURFACE
  101.   else
  102.     videoFlags := videoFlags or SDL_SWSURFACE;
  103.  
  104.   // Wird hardware blitting unterstützt?
  105.   if ( videoInfo.blit_hw <> 0 ) then videoFlags := videoFlags or SDL_HWACCEL;
  106.  
  107.   // Setzen der OpenGL-Attribute
  108.   SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 5 );
  109.   SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 5 );
  110.   SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 5 );
  111.   SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 );
  112.   SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
  113.   SDL_GL_SetAttribute( SDL_GL_STENCIL_SIZE, 8 );
  114.  
  115.   // Fenstertitel festlegen
  116.   SDL_WM_SetCaption(pChar( Windows_Caption + ' ['+IntToStr(Round(FPSCount))+' FPS]') , nil);
  117.   videoflags := videoFlags or SDL_RESIZABLE;    // Enable window resizing
  118.   //videoflags := // Initalisierung der Surface
  119.   surface := SDL_SetVideoMode( Screen_width, Screen_height, Screen_bpp, videoflags );
  120.   if ( surface = nil ) then
  121.   begin
  122.     messagebox(0,'Erzeugen einer OpenGL-Zeichenfläche schlug fehl: ', SDL_GetError, MB_OK);
  123.     Quit_App;
  124.   end;
  125. end;
  126.  
  127.  
  128.  
  129. {------------------------------------------------------------------------------}
  130. {              Stellt das Fenster auf die richtige Grösse                      }
  131. {------------------------------------------------------------------------------}
  132. function TSDL_UNIT.glResizeWindow( width : integer; height : integer ) : Boolean;
  133. begin
  134. // Verhindern von "Division by Zero"
  135.   if ( height = 0 ) then height := 1;
  136.  
  137.   // Viewport und Projektions-Matrix aktualisieren
  138.   glViewport( 0, 0, width, height );
  139.  
  140.   glMatrixMode( GL_PROJECTION );
  141.     glLoadIdentity;
  142.     gluPerspective( 45.0, width / height, 0.1, 100.0 );
  143.   glMatrixMode( GL_MODELVIEW );
  144.  
  145.   // Rücksetzen der World-Matrix
  146.   glLoadIdentity;
  147.  
  148.   // Vorgang erfolgreich
  149.   result := true;
  150. end;
  151.  
  152. {------------------------------------------------------------------------------}
  153. {                   Event Handler - Mouse Down, Key Down                       }
  154. {------------------------------------------------------------------------------}
  155. procedure TSDL_UNIT.glHandleEvents;
  156. var event       : TSDL_Event;
  157. begin;
  158.     // Verarbeiten der Events
  159.     while ( SDL_PollEvent( @event ) = 1 ) do
  160.     begin
  161.       case event.type_ of
  162.  
  163.         // Beenden der Applikation
  164.         SDL_QUITEV :
  165.         begin
  166.           Done := -1;
  167.         end;
  168.  
  169.         // Taste wurde gedrückt
  170.         SDL_KEYDOWN :
  171.         begin
  172.           //EventHandler.KeyDown(@event.key.keysym);
  173.           if event.key.keysym.sym = SDLK_ESCAPE then done:=-1;
  174.         end;
  175.  
  176.         SDL_KEYUP :
  177.         begin
  178.           //EventHandler.KeyUp(@event.key.keysym);
  179.         end;
  180.  
  181.         SDL_MouseMotion :
  182.         begin
  183.           //EventHandler.MouseMotion(@event.motion);
  184.         end;
  185.  
  186.         //hier noch mousemove events hinzufügen
  187.  
  188.         // Fenster-Größe hat sich verändert
  189.         SDL_VIDEORESIZE :
  190.         begin
  191.           Screen_Width:=event.resize.w;
  192.           Screen_Height:=event.resize.h;
  193.           surface := SDL_SetVideoMode( event.resize.w, event.resize.h, 8, videoflags );
  194.  
  195.           if ( surface = nil ) then
  196.           begin
  197.             Messagebox(0,'Surface bei Größenänderung verloren: ', SDL_GetError, MB_OK);
  198.             Quit_App;
  199.           end;
  200.  
  201.           glResizeWindow( event.resize.w, event.resize.h );
  202.         end;
  203.       end;
  204.     end;
  205. end;
  206.  
  207. {----------------------------------------------------------------------------}
  208. {                    Terminieren der SDL-Anwendung                           }
  209. {----------------------------------------------------------------------------}
  210. procedure TSDL_UNIT.Quit_App;
  211.   procedure CloseOpenGL;
  212.   begin
  213.     if GLHandle <> INVALID_MODULEHANDLE then
  214.     begin
  215.       FreeLibrary(Cardinal(GLHandle));
  216.       GLHandle := INVALID_MODULEHANDLE;
  217.     end;
  218.  
  219.     if GLUHandle <> INVALID_MODULEHANDLE then
  220.     begin
  221.       FreeLibrary(Cardinal(GLUHandle));
  222.       GLUHandle := INVALID_MODULEHANDLE;
  223.     end;
  224.  
  225. //    ClearProcAddresses;
  226.     //ClearExtensions;
  227.   end;
  228. begin;
  229.   // Freigeben der Ressourcen
  230.   SDL_QUIT;
  231.   CloseOpenGL;
  232.   Halt(0);
  233. end;
  234.  
  235. {------------------------------------------------------------------------------}
  236. {                       Timer für Frames pro Sekunde                           }
  237. {------------------------------------------------------------------------------}
  238. function TSDL_UNIT.glTimer( interval : UInt32; param : Pointer ) : UInt32;
  239. begin;
  240.     SDL_WM_SetCaption(pChar( Windows_Caption + ' [' + IntToStr(FPSCount) + ' FPS]'), nil);
  241.     FPSCount := 0;
  242.     Result :=1000;
  243. end;
  244.  
  245. end.
  246.  


das ganze ist zum grossenteil der sdl code, den ich mir zusammengeschrieben hab aus dem tutorial, hab aber noch ein paar sachen geändert.

_________________
bester uo-shard: www.uosigena.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 28, 2006 13:01 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Erstmal halte ich es für Schwachsinn SDL und VCL zu kombinieren.

Dann:
Wann rufst du SDLUnit.Init auf?
Ich sehe nur SDLUnit.Create ;)

Oh, und wenn du easySDL benutzt findest du im aktuellen SVN auch ein easySDLTemplate.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 28, 2006 16:40 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
grrr vielen dank, das hab ich bei diesem code vergessen, das war aber eigentlich nicht so wichtig, da dieser code nur beweisen sollte, das irgendwas nicht stimmt.

ich hab nun herausgefunden was ich falsch gemacht hab, hab glgentextures vor sdlunit.init laufen lassen, was dann auch zu dem fehler geführt hat. ich versuche grundsätzlich immer zuerst lange nachzudenken und dann zu posten, aber bin einfach nich weitergekommen...
auf jeden fall steht jetzt das sdl.init ziemlich weit vorne im code, also so was sollte nicht nochmal passieren :)

naja hab ich wieder mal was gelernt ;)

vielen dank für die schnellen antworten!

@ionisos:
leider kenne ich mich mit sdl recht wenig aus, bzw kenne ich die anderen compiler nicht, also ich weiss nicht was ich nun verwenden darf von delphi und was nicht, ich vermute mal integer darf man zb normal addieren oder? ich weiss also nicht was vcl alles beinhaltet. könntest du mir sagen was bei diesem code:

Code:
  1. //einzelne Units kreieren
  2.   game:=          Tgame.Create;
  3.   SDL_Unit:=      TSDL_Unit.Create;
  4.   SDL_Unit.Init;   //SDL & OpenGL starten
  5.   Cam:=           TCam.Create;
  6.   Movement:=      TMovement.create;
  7.   gameVariabeln:= TgameVariabeln.Create;
  8.   EventHandler:=  TEventHandler.Create;
  9.   tools:=         TTools.Create;
  10.  
  11. //eher unwichtige einstellungen um aus den Variabeln keine bugs zu erhalten
  12.   game.maxchars:=2;
  13.   setlength(game.chars, game.maxchars);
  14.   gameVariabeln.setdefault;
  15.   Movement.OldTimer :=false;
  16.   //tools.make_arial_15;                          //schrift arial mit grösse 15 erstellen für opengl
  17.  
  18.   //dienste initialisieren
  19.   Movement.start(0,0);
  20.   cam.start;
  21.  
  22.   //maus eigenschaften einstellen
  23.   SDL_ShowCursor(0);   // Cursor ausblenden
  24.   SDL_WarpMouse(round(Screen_Width/2),round(Screen_Height/2));
  25.   SDL_UNIT.glHandleEvents;
  26.   game.camera.angley:= Pi/2;             //um die kamera schön einzustellen
  27.  


so an vcl drin ist? dann hätt ich mal ne vorstellung was so elemente sind, die ich umändern müsste ;)
mfg

_________________
bester uo-shard: www.uosigena.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 28, 2006 17:00 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Stop, Nein.
VCL ist einfach eine Unit von Delphi, sie ist für die graphische Oberfläche der Delphianwendungen da.
Einfach aufgrund der Bezeichnung: TForm1 habe ich vermutet, dass du VCL noch verwendest.

Wenn du VCL noch verwendest, steht halt in der dpr-Datei das:
Code:
  1. begin
  2.   Application.Initialize;
  3.   Application.CreateForm(TGLForm, GLForm);
  4.   Application.Run;
  5. end.

Was unnötig ist, weil SDL sich schon um das Fenster kümmert.

Ansonsten kannst du bei SDL exact dieselben Befehle wie bei VCL verwenden.
Weil die aus der Sprache Delphi sind, und dann ist es egal was für Units du einbindest, egal ob SDL oder VCL.

Noch ein kleiner Tipp am Rande:
Schreib {$Apptype Console} in die dpr-Datei rein, dann bekommst du zusätzlich noch ein Konsolenfenster wo du mit writeln Infos ausgeben kannst.
Ist für Fehlersuche recht praktisch.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 28, 2006 17:23 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
achso, das stimmt, fand ich eigentlich auch nicht wirklich sinnvoll, aber ich habs vorläufig so gelassen weils nicht wichtig ist, ich kann grundsätzlich das ganze sehr einfach in eine dpr rüberkopieren, muss dann einfach noch die procedure game.start ein bisschen abändern. habe ja auch erst angefangen zu proggen, da wird sich noch einiges ändern :).

das mit der konsole ist cool, aber was kann sie, muss man die wiederum programmieren? weil schreiben kann ich irgendwie nicht drin....
und wenn mans irgendwie schaft zu schreiben, kann man dann einfach solche sachen wie variabeln ausgeben?

mfg

_________________
bester uo-shard: www.uosigena.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 28, 2006 17:38 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Gaukler hat geschrieben:
das mit der konsole ist cool, aber was kann sie, muss man die wiederum programmieren? weil schreiben kann ich irgendwie nicht drin....
und wenn mans irgendwie schaft zu schreiben, kann man dann einfach solche sachen wie variabeln ausgeben?

Code:
  1. Writeln('Visit wiki.delphigl.com'); //Gibt den String aus und geht in die nächste Zeile
  2. Write('Froggs per minute: '); //Gibt den String aus, springt aber nicht in die nächste Zeile
  3. Writeln(FPS); //Gibt die FPS aus. FPS kann eine Variable vom Typ Integer oder Single sein, wird automatisch konvertiert
  4. Readln(variable); //Liesst die Eingabe eines Users aus und speichert sie in Variable

Daneben gehen noch weitere Tricks mit writeln man aber nicht unbedingt kennen muss. Ich kenne sie auch nicht :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Apr 28, 2006 18:59 
Offline
DGL Member
Benutzeravatar

Registriert: So Dez 21, 2003 17:36
Beiträge: 141
Falls das ein Trick ist: :)
i0n0s hat geschrieben:
Code:
  1. Write('Froggs per minute: '); //Gibt den String aus, springt aber nicht in die nächste Zeile
  2. Writeln(FPS); //Gibt die FPS aus. FPS kann eine Variable vom Typ Integer oder Single sein, wird automatisch konvertiert

Geht auch mit
Code:
  1. Writeln('Froggs per minute: ', FPS);


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mai 04, 2006 13:18 
Offline
DGL Member

Registriert: Sa Okt 22, 2005 20:24
Beiträge: 291
Wohnort: Frauenfeld/CH
ja, die writeln readln funktionen kenne ich eigentlich sehr gut - zu gut :roll:
ich kann irgendwie eben nichts in die anderen formen schreiben, also auch nicht in die konsole, während ich sdl am laufen habe. lustigerweise geht es bei der normalen form, mit der maus etwas zu machen, also zb rechtsklick "kopieren" dann in ein anderes edit feld und "einfügen" aber komischerweise kann ich nicht einfach hineinschreiben. es löst aber auch nicht ein keyevent aus in sdl, wenn ich in die anderen formen schreibe, es passiert einfach gar nichts.

weiss da jemand was?

_________________
bester uo-shard: www.uosigena.de


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 1, 2  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 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.012s | 15 Queries | GZIP : On ]