![]() |
Re: OpenGL Probleme
Loaden von Texturen...Ganz einfach. :zwinker:
Wichtig : Die folgende Procedure ist nicht von mir ! (von einem ![]()
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; |
Re: OpenGL Probleme
Danke. Damit wärens also nur noch 4 offene Fragen...
|
Re: OpenGL Probleme
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 ( ![]() ![]() Ich denke, dass sollte erstmal genug Ansatz bzw. Stoff für weitere Recherchen sein. |
Re: OpenGL Probleme
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. |
Re: OpenGL Probleme
Zitat:
|
Re: OpenGL Probleme
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: OpenGL Probleme
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. |
Re: OpenGL Probleme
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.) ![]() 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. |
Re: OpenGL Probleme
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:
Sieht wirklich gut aus, auch wenn der Roboter nur ein Quader ist und deshalb ziemlich besch...eiden aussieht.
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; |
Re: OpenGL Probleme
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 ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz