Autor Beitrag
Green
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

Windows XP Home
Delphi 6 Enterprise
BeitragVerfasst: Di 01.08.06 16:56 
wiki.delphigl.com/in...hp/Tutorial_lektion4

kapiert irgendjemand den Teil? ich versteh nich so ganz was ich damit jetzt machen soll.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
uses SDL, SDL_Image;

//##################

var
  tex : PSDL_Surface;
begin
  tex := IMG_Load('textur.jpg');
  if assigned(tex) then
  begin
    glGenTextures(1, @TexID);
    glBindTexture(GL_TEXTURE_2D, TexID);

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    // Achtung! Einige Bildformate erwarten statt GL_RGB, GL_BGR. Diese Konstante fehlt in den Standard-Headern
    glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);

    SDL_FreeSurface(tex);
  end;


Das is letztendich alles was ich da an code kriege, aber ich frage mich, was soll ich jetzt mit dem code machen? wohin soll ich den schreiben?

ich hab mal versucht ihn in einer Procedure zu packen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.InitTextures;
var
  tex : PSDL_Surface;
begin
  tex := IMG_Load('textur.jpg');
  if assigned(tex) then
  begin
    glGenTextures(1, @TexID);
    glBindTexture(GL_TEXTURE_2D, TexID);

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    // Achtung! Einige Bildformate erwarten statt GL_RGB, GL_BGR. Diese Konstante fehlt in den Standard-Headern
    glTexImage2D(GL_TEXTURE_2D, 0, 3, tex^.w, tex^.h,0, GL_RGB, GL_UNSIGNED_BYTE, tex^.pixels);

    SDL_FreeSurface(tex);
  end;
end;


Aber dann meckert Delphi zurecht und fragt was texID für eine Variable sei. Das frag ich mich auch.

dann hab ich sie einfachmal als Cardinal deklariert, und die ganze procedure in FormCreate gepackt, aber dann werd ich mit AccessViolations überhäuft...

Hat jemand ne ahnung wie man jetzt weiter machen muss?
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Di 01.08.06 17:55 
Mit einem Copy & Paste wirst Du nicht weit kommen. Dem Text hättest Du nämlich z.B. entnehmen können, dass es sich dabei um einen gluInt handelt und um den Namen der Textur. Sinnigerweise sollte man diesen dann nicht lokal definieren, sondern in einem globalen Scope. Das Laden kann theoretisch überall erfolgen, wobei die Renderloop vermieden werden sollte (welchen Sinn hätte es jedes Mal neu zu laden) und dies natürlich gesehen muss, nachdem ein gültiges PixelFormat und OpenGL Render Kontext erstellt wurde. Dadurch, dass Du VCL und SDL miteinander mischt, hast Du Dir vermutlich nicht das QuickStart Tutorial durchgelesen?

Sofern Du die DGLSDK verwendest hast um OpenGL/SDL-Header zu installieren, solltest Du unter Samples die ersten Tutorials in easySDL vorfinden (unsere "Ausbildungskapselung von SDL"). API und VCL-Beispiele sind unter Files verfügbar, verwenden allerdings noch als Texturloader das inzwischen antiquierte glaux.

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
Green Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 283

Windows XP Home
Delphi 6 Enterprise
BeitragVerfasst: Di 01.08.06 20:37 
Das Quickstart tut hab ich mir durchgelesen, aber so hab ichs kapiert. ich werds mal ausprobieren, und sonst hier nochmal schreiben