Einzelnen Beitrag anzeigen

Destroxi

Registriert seit: 29. Okt 2011
55 Beiträge
 
Delphi 7 Enterprise
 
#1

OpenGL - Allgemeine Fragen

  Alt 31. Okt 2011, 12:38
Hi,
da ich in letzter Zeit öfters Fragen zu OpenGL hatte (und manche schon selber beantwortet hatte bevor eine Antwort kam), möchte ich hier ein Thread erstellen, wo ich alle meine Fragen hineinschreibe, damit das Forum sauber bleibt
Wenn ich lieber neue Threads erstellen soll, schreibt es mir hier rein oder schreibt mir eine Nachricht. Danke

Fragen

1. DDS Dateien Laden
Ich will .dds dateien laden. Nun kenne ich den glBitmap loader, allerdings funktioniert dieser bei mir nicht richtig.
Ich lade die Datei (egal, ob *.dds oder *.bmp oder *.tga) aber das Bild wird falsch geladen (bzw. anders als bei Textures.pas).
Hat jemand einen loader der läd wie Textures.pas?
€dit: Anders geladen = Meine Flugzeug Textur wird in der falschen Richtung geladen und bei der Gras (Boden) Textur verändert er die Größe nicht...
€dit²: Ich weiß wie, nur klappt es nicht (Rotieren), allerdings wird die Frage schon in Nr. 3 gefragt, deswegen Abgeschlossen
Erledigt


2. Texturen verdopplung
Wie verdopple ich Texturen? Habe es so versucht (leider nicht geklappt), dachte dan kämen vielleicht unten eine (in der größer von einer halben) und oben eine
Delphi-Quellcode:
glBegin(GL_QUADS);
  glTexCoord2f(0, 0); glVertex2f(-AWidth/2, -AHeight/2);
  glTexCoord2f(1, 0); glVertex2f(AWidth/2, -AHeight/2);
  glTexCoord2f(1, 2); glVertex2f(AWidth/2, AHeight/2);
  glTexCoord2f(0, 2); glVertex2f(-AWidth/2, AHeight/2);
 glEnd;
3. Rotationen mit Texturen
Ganz oft habe ich das Problem, dass man mit Texturen fast nichts machen darf, da sie sonst nicht angezeigt werden
Zum Bespiel hier (wenn ich glRotatef reinnehme zeigt er die Textur nicht mehr an.. warum?)
Zitat:
procedure TForm1.Render(Sender: TObject; var Done: Boolean);
begin
//glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glViewPort(0, 0, ClientWidth, ClientHeight);
glOrtho(0, MapSizeX, 0, MapSizeY, 0, 128);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;

glBindTexture(GL_TEXTURE_2D, Tex);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0);
//glRotatef(180, 0, 0, 1);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex2f(MapSizeX/4, MapSizeY/4);
glTexCoord2f(1, 0); glVertex2f(MapSizeX-MapSizeX/4, MapSizeY/4);
glTexCoord2f(1, 1); glVertex2f(MapSizeX-MapSizeX/4, MapSizeY-MapSizeY/4);
glTexCoord2f(0, 1); glVertex2f(MapSizeX/4, MapSizeY-MapSizeY/4);
glEnd;

SwapBuffers(DC);

Done := False;
end;

4. GL_QUAD_STRIP bei Texturen
Kann ich "GL_QUAD_STRIP" also mehrere Quadrate bei Texturen verwenden?
Wenn ja, wie - wo die TexCoords angeben? Habe es versucht:
Delphi-Quellcode:
glBegin(GL_QUAD_STRIP);
  glTexCoord2f(0, 0); glVertex3f(0, 0, 0);
  glTexCoord2f(1, 0); glVertex3f(MapSizeX/2, 0, 0);
  glTexCoord2f(1, 1); glVertex3f(MapSizeX/2, MapSizeY, 0);
  glTexCoord2f(0, 1); glVertex3f(0, MapSizeY, 0);

  glTexCoord2f(0, 0); glVertex3f(MapSizeX/2, 0, 0);
  glTexCoord2f(1, 0); glVertex3f(MapSizeX, 0, 0);
  glTexCoord2f(1, 1); glVertex3f(MapSizeX, MapSizeY, 0);
  glTexCoord2f(0, 1); glVertex3f(MapSizeX/2, MapSizeY, 0);
 glEnd;
Aber das hat wohl nicht ganz geklappt ^^ Kamen 3 komische Figuren bei raus ;O



Danke !

Geändert von Destroxi (31. Okt 2011 um 16:51 Uhr)
  Mit Zitat antworten Zitat