AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

OpenGL Probleme

Ein Thema von 3_of_8 · begonnen am 27. Mär 2005 · letzter Beitrag vom 31. Mär 2005
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#11

Re: OpenGL Probleme

  Alt 28. Mär 2005, 16:08
Loaden von Texturen...Ganz einfach.
Wichtig : Die folgende Procedure ist nicht von mir ! (von einem DGL Supporter)

Delphi-Quellcode:
procedure LoadTextureFromBitmap(bmp:TBitmap);
var
 data:PByteArray;
 i,w:integer;
 b:PByteArray;
begin
 bmp.PixelFormat:=pf32bit;
 getmem(data,bmp.width*bmp.height*4);

 w:=bmp.Width;
 for i:=0 to bmp.Height-1 do
 begin
  b:=bmp.ScanLine[i];
  move(b^,data^[i*w*4],w*4);
 end;

 gltexparameteri(GL_TEXTURE_2D,GL_Texture_min_filter,GL_LINEAR);
 gltexparameteri(GL_TEXTURE_2D,GL_Texture_mag_filter,GL_LINEAR);

 gluBuild2DMipmaps(GL_TEXTURE_2D,gl_RGBA8,bmp.width,bmp.Height,GL_BGRA,gl_unsigned_byte,data);
 //glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA8,bmp.width,bmp.Height,0,GL_BGRA, GL_UNSIGNED_BYTE, Data);
 FreeMem(data);
end;

// aufruf ist von mir :mrgreen:
procedure TForm1.Button1Click(Sender: TObject);
 var MyResBitmap : TBitmap;
     TextID : Cardinal;
begin
 MyResBitmap := TBitmap.Create;
  MyResBitmap.LoadFromResourceName(HInstance, 'MyBitmap' );
  glGenTextures(1,@TextID);
  glBindTexture(GL_TEXTURE_2D,TextID);
  LoadTextureFromBitmap(MyResBitmap);
 MyResBitmap.Free;
end;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: OpenGL Probleme

  Alt 28. Mär 2005, 17:11
Danke. Damit wärens also nur noch 4 offene Fragen...
Manuel Eberl
  Mit Zitat antworten Zitat
Phobeus

Registriert seit: 14. Sep 2003
Ort: Tespe
65 Beiträge
 
Delphi 7 Professional
 
#13

Re: OpenGL Probleme

  Alt 29. Mär 2005, 12:17
Naja, mit Verlaub, Du setzt Dich hier auch wie ein kleines Buddha hin und wartest, dass man Dir Lösungen präsentierst.
Gerade was das mit den 3D-Modellen angeht, ist die Frage schlichtweg zu ungenau gestellt. Was für Formate den eigentlich? Die gibt es wie Sand am mehr. Bei uns auf der Seite findest Du einen alten Loader für MS3D und einen für AC3D, im Forum gibt das Mitglied Noeska, der einen 3DS-Loader bereit stellt. Für die meisten Projekte empfiehlt es sich ein eignes simples Format zu "erstellen" und andere Modellformate dafür zu verwenden. Solltest Du Python mächtig sein und Blender nutzen, bringt das von Haus aus einige Klasse funktionen im die Geometry so zu exportieren wie man es gerne mag.
Ich denke auch, dass ich die Texturen nicht über eine Ressourcendatei einbinden würde. Gerade zur Entwicklungszeit würde ich eher davon abraten. Sollte dann bei einem Release wirklich davon abgesehen werden, würde ich auch hier eher zu einer simplen eigen Kreation neigen. Einer Datei mit voranstellender Liste und ein paar Offsets, gefolgt von den eigentlich Nutzendaten. Das hätte z.B. den Vorteil, dass Du in der Liste auch eigene Namen vergeben könntest und eine leichtere Integration in einen Textur-Manager gewährleisten könntest.
Ich denke das Phänomen mit den Linien, dass Du beschreibst ist vollkommen normal. Anti-Aliasing könnte dort helfen. Ein entsprechendes Festsetzen geht über eine WGL-Funktion, die ich nicht zur Hand habe. Versuchs einfach mal über deinen Treiber hochzudrehen. Bringt es etwas? Versuche auch einmal mit glLineWidth die Linien dicker zu machen. Bringt dieser Effekt bereits eine Linderung? Ebenfalls nicht bei mir im Kopf... es gibt Verfahren um mit Hilfe von Blending eine Kantenglättung zu erreichen (http://wiki.delphigl.com/index.php/GlBlendFunc. Sehe dazu auch das jemand bei uns im Wiki etwas verfaßt hat, dass mir ebenfalls bisher unbekannt war. Vielleicht hilft auch das weiter: http://wiki.delphigl.com/index.php/Antialiasing
Ich denke, dass sollte erstmal genug Ansatz bzw. Stoff für weitere Recherchen sein.
Florian Sievert
http://www.delphigl.com/
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: OpenGL Probleme

  Alt 29. Mär 2005, 18:07
Ich denke ein Forum ist dazu da, Fragen zu stellen, und schließlich stelle ich nicht nur Fragen, sondern versuche auch anderen zu helfen.

Antialiasing habe ich bereits mit GLENABLE(GL_LINE_SMOOTH) und (GL_POLYGON_SMOOTH) aktiviert.
Das mit den Modellen lasse ich dann doch lieber, sieht ziemlich kompliziert aus und schließlich weiß ich erst seit 4 Tagen, was OpenGL ist, außerdem schmiert Blender ständig ab.

Über den Treiber hochschrauben, meinst du unter Eigenschaften von Anzeige\Einstellungen\Erweitert...?

Bei mir bringts nichts.

Für die Vorschläge danke, werds mal ausprobieren.
Manuel Eberl
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#15

Re: OpenGL Probleme

  Alt 29. Mär 2005, 18:24
Zitat von 3_of_8:
... außerdem schmiert Blender ständig ab.
Oh. Die 2.36-Version läuft bei mir außer labilen Plugins ziemlich stabil, der ATI-Bug ist AFAIK auch behoben.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Phobeus

Registriert seit: 14. Sep 2003
Ort: Tespe
65 Beiträge
 
Delphi 7 Professional
 
#16

Re: OpenGL Probleme

  Alt 29. Mär 2005, 20:01
Zitat von 3_of_8:
Ich denke ein Forum ist dazu da, Fragen zu stellen, und schließlich stelle ich nicht nur Fragen, sondern versuche auch anderen zu helfen.
Genau. Aber mit einigen Punkten am Satzende klingen deine Fragen recht vorwurfsvoll.

Zitat:
Antialiasing habe ich bereits mit GLENABLE(GL_LINE_SMOOTH) und (GL_POLYGON_SMOOTH) aktiviert.
Nein, IMAO bewirkt das nur etwas wenn man breite Linien zeichnet und auch nur OpenGL intern. Für FSAA (was ich hätte korrekterweise so hätte nennen sollen) mußte man IMAO eine WGL-Funktion verwenden. Ist lange her und ich würde nicht solange danach suchen, da ich denke, dass das Ergebnis nur minimal besser sein wird.

Zitat:
Das mit den Modellen lasse ich dann doch lieber, sieht ziemlich kompliziert aus und schließlich weiß ich erst seit 4 Tagen, was OpenGL ist, außerdem schmiert Blender ständig ab.
Ja, dann würde ich erstmal die Finger davon lassen. Modelle sind meistens doch etwas komplexere Sache, wo häufiger etwas schief gehen kann und das gerade am Anfang sehr schnell frustrierend werden kann. Nimm einfach erstmal ein Prototype (Quadrat) und nutze das erstmal, eine spätere Intergration ist dann leicht möglich. Das Blender abschmiert, würde mir ehrlich gesagt sehr zu denken geben und ich würde dringend einmal das System,Speicher überprüfen oder mal schauen, dass eine neue Version aufs System kommt. Habe selten eine so stabile Anwendung gesehen Und gerade durch das Python-Skripting kann man einige tolle Dinge machen ... und sei es nur, dass man sich seine Szene als "OpenGL-Funktionen" ausgeben läßt oder als Array für einen VertexBufferObject. Damit kann man sich ne Menge kummern mit den Loadern sparen.

Zitat:
Über den Treiber hochschrauben, meinst du unter Eigenschaften von Anzeige\Einstellungen\Erweitert...?
Bei mir bringts nichts.
Keine Ahnung Verwende kein Windows, allerdings denke ich, dass man es dort finden sollte. Aber wie gesagt der erreichte Effekt wird bei Linien wohl auch eher minimal sein. Ich denke die Linien einen Tick breiter zu machen wird in den meisten Fällen gute Ergebnisse bringen. Zumindest konnte ich mich bisher nicht sonderlich darüber beklagen
Florian Sievert
http://www.delphigl.com/
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: OpenGL Probleme

  Alt 29. Mär 2005, 20:26
Ich denke nicht, dass man aus einigen Punkten am Satzende einen Vorwurf schließen kann, und so war es auch nicht gemeint.

Linien breiter machen hilft gar nichts. Hab ich schon versucht.

Ich habe keine Ahnung, wie ich WGL oder GLU Funktionen/Prozeduren benutze, bzw. welche Units/DLLs ich dazu einbinden muss. In der Wikipedia hab ich dazu auch nichts gefunden.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Phobeus

Registriert seit: 14. Sep 2003
Ort: Tespe
65 Beiträge
 
Delphi 7 Professional
 
#18

Re: OpenGL Probleme

  Alt 29. Mär 2005, 20:49
Nicht, Wikipedia
Die WGL-Funktionen sollten in deinen Headern erhältlich sein. Allerdings habe ich gerade einmal Google angeschmissen. Nicht wirklich gelesen, aber überflogen. Es scheint auch inzwischen eine ARB_Lösung zu geben (Ja... man fühlt sich immer schon so alt.)
http://www.joachimrohde.com/Nehe/ogltut46d.html
Das das dicker machen der Linien nichts bringt, fällt mir schwer zu glauben, dass sie den Effekt eigentlich sogar erheblich abschwächen sollten. Poste nochmal bitte ein Screen. Ansonsten musst Du wirklich versuchen mit Hilfe eines Blending verfahrens die Kanten gezielt abzuschwächen.
Florian Sievert
http://www.delphigl.com/
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: OpenGL Probleme

  Alt 30. Mär 2005, 18:06
Wie gesagt: Ich habe null Ahnung von OpenGL. Ich weiß, wie man Blending bastelt und hab mir auch deine Tutorials durchgesehen (Respekt!), aber wie man aus Blending einen AntiAliasing Effekt bastelt, kann ich mir nicht denken.

Und was ist ein Header? In der Wikipedia hab ich nachgeschaut, ob da drinsteht, wie man WGL kriegt. Wenn ich die Linien dicker mache, lässt der Effekt zwar nach, aber dann wirken sie hinten immer noch viel dünner als vorne und man sieht das Aliasing noch mehr als zuvor.

Der Link ist zwar genau das richtige aber: Wenn du mich fragst in C oder C++, und ich kann nur Object Pascal. Hilft mir also auch nicht wirklich weiter. Ich hab jetzt aber das ganze ziemlich gut hinbekommen, in dem ich eine 32*32 Textur für die Gitterlinien hergenommen hab und das ganze kachele. Ungefähr so:

Delphi-Quellcode:
glbegin(GL_QUADS);
gltexcoord(0,0);
glvertex3f(-5,-5);
gltexcoord(10,0);
glvertex3f(5,-5);
gltexcoord(10,10);
glvertex3f(5,5);
gltexcoord(0,10);
glvertex3f(-5,5);
glend;
Sieht wirklich gut aus, auch wenn der Roboter nur ein Quader ist und deshalb ziemlich besch...eiden aussieht.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Phobeus

Registriert seit: 14. Sep 2003
Ort: Tespe
65 Beiträge
 
Delphi 7 Professional
 
#20

Re: OpenGL Probleme

  Alt 30. Mär 2005, 19:42
Erstmal danke für das Lob Schau in ein paar Monaten nochmal vorbei, zahlreiche der alten Tutorials (und das ist eines) werden grundlegend überarbeitet.
@blendaliasing: Ich weiß es auch nicht genau, da ich es nie gemacht habe. Ich vermute auch, dass das Ergebis nicht mehr ganz zeitgemäß sein wird. Im Wiki sind die Blendfactoren vermerkt, die dafür eigentlich gedacht sind. Die Idee besteht halt darinne die Seiten so farblich abzuschwächen, dass die Treppenbildung abnimmt. Da Du ja aber nicht über Treppen klagst, sondern über die Dicke... und das ist ja auch verständlich, dass sie hinten hin abnimmt. Aber ich denke auch, dass eine Textur dort wohl ein besseres Ergebnis bringen wird, zumal man so leicht noch das ganze ein wenig grafisch aufpeppen könnte.
@header: OpenGL wird aus DLLs bezogen. Diese kommen im "IdealfalL" von NVIDIA oder ATI (und besser nicht von MS *g). Die Header sind quasi die Schnittstelle zu der DLL und werden in Form einer Unit geliefert, die die Funktionen mit denen der DLL verbinden. Borland lieferte von Haus aus eine "opengl.pas". Diese sollte man allerdings meiden wie die Pest, da diese nicht nur fehlerhaft ist, sondern Funktionen teilweise sogar anders heißen. Es gibt dann einige Versionen von Mike Lischke sowie den Jedis, die meist auf dem Namen "opengl12.pas" hört. Diese sind eigentlich einwandfrei und man gut damit arbeiten. Wenn Du dann allerdings Features von OpenGL 1.5 benötigst (das aktuellste) empfehle ich Dir die Header zu verwenden, die ein eingefleischtes Team unseres Forums erzeugt hat. Diese hören auf den Namen "dglopengl.pas" und sind im Gespräch als künftige JEDI-Header. Darauf zu setzen wird also sicherlich kein Nachteil sein. In diesen Headern sollten die WGL-Funktionen enthalten sein. (Also OpenGL-Funktionen, die es NUR unter Windows gibt und z.B. das Pixelformat setzen etc. Unter Linux bzw. X-Servern heißen diese GLX_)
@c/c++: Ach komm OpenGL unterscheidet sich doch in den meisten Sprachen nicht sonderlich Allerdings solltest Du sobald wie möglich einen kleinen "Crashkurs" in C/C++ belegen, damit Du zumindest die wichtigsten Datentypen und Syntax beherrscht. NVIDIA und Ati veröffentlichen Ihre Beispiele meist nur in diesen Sprachen und es wäre schade, wenn man damit nichts anfangen könnte
Florian Sievert
http://www.delphigl.com/
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz