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

Aktuelle Zeit: Do Mär 28, 2024 23:14

Foren-Übersicht » Sonstiges » Meinungen zu den Projekten
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 169 Beiträge ]  Gehe zu Seite Vorherige  1 ... 7, 8, 9, 10, 11, 12  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Mo Okt 25, 2010 20:12 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Was OpenGL 3 angeht wird man nur auf VBOs setzen können. Dann könnte ein extra Renderer sinnvoll sein. Ein Fallback geht eh nicht. Obendrauf müsste man sich sowieso Gedanken machen ob man gleich einen Shader (Quellcode im Code) mit ausliefert oder ob der Benutzer immer einen setzen muss. Etc etc. Wie man so etwas dann vernünftig in Optionen gießt kann ich so nicht sagen. Über VBOs hatte ich schon mal nachgedacht. Über GL3+ bisher gar nicht. Allerdings habe ich auch überhaupt keine Zeit dafür.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Di Feb 15, 2011 20:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 20, 2006 17:34
Beiträge: 52
Ich habe einen Bug gefunden.
TextSuite Zeile 2540:
Code:
procedure tsPostAddShadow3f(Radius: Single; X, Y: tsInt; Red, Green, Blue: tsFloat);
begin
  tsPostAddShadow4f(Radius, X, Y, Red / $FF, Green / $FF, Blue / $FF, 1);
end;     

Ohne das Teilen da wärs besser ;)

_________________
2+2=5
For extremely large values of two


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Mo Nov 28, 2011 01:30 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

ich hab seit langem mal wieder die TextSuite für unser neustes Projekt ausgebraben. Leider hab ich nen Fehler, den ich nicht weg bekomm. Und zwar gibt es ne Exception beim Aufruf von tsTextOutA:
Code:
  1.       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  2.       glEnable(GL_BLEND);
  3.         tsContextBind(tsFontContextID);
  4.         tsTextColor4f(1, 0, 0, 1);
  5.         tsSetParameteri(TS_ALIGN, TS_ALIGN_CENTER);
  6.         tsSetParameteri(TS_VALIGN, TS_VALIGN_CENTER);
  7.         tsTextBeginBlock(-1, -1, 2, 2, TS_BLOCKFLAG_NONE);
  8.           tsFontBind(fFontID);
  9.           tsTextOutA('TEST');
  10.         tsTextEndBlock;
  11.       glDisable(GL_BLEND);
Also bin ich mal fix mit dem Debugger durch gegangen und es hat sich herausgestellt das es beim Aufruf der Funktion GetCharacterPlacementW (TextSuiteClasses.pas; Zeile 3418) knallt. Zuerst dachte ich, das es wieder irgendein Fehler bei nem Datentyp gibt (weil ich ja mit Lazarus/FPC unter 64bit entwickle) aber bis jetzt konnte ich nix finden. Die Adresse der Funktion wird auch richtig geladen, denke ich. Denn wenn ich eine 0 bei Count übergebe, wird sie ohne Fehler ausgeführt. Ich vermute, das es bei einem der Zeiger auf den WideChar, oder das Ergebnis-Record Probleme gibt. Wär toll, wenn mir da jmd helfen könnte.

€: beim erstellen des FontContext und des Fonts gibt es keine Fehler.

MfG & Thx Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Mo Nov 28, 2011 13:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Erst mal vorweg. Die TextSuite unterstützt 64Bit nicht. Denn es gabe (auch mit sdl_image) ein paar Probleme. Wenn du es unter 64 Bit nutzen möchtest wirst du diese Sachen alleine lösen müssen.

ne Exception: Toll. Bei Fehlern oder Exceptions ist es grundsätzlich immer, also ich meine auch wirklich immer, interessant zu erfahren um was für eine Exception (+Zusatzinfos wie Adresse) es sich handelt. Sollte dir jetzt aber eigentlich nicht wirklich neu sein. Zu mindest von Entwickler zu Entwickler. Den Endbenutzer interessiert nur ob es läuft oder nicht. Was auch vollkommen okay ist.

Ich vermute aber mal, dass es eine Zugrifsverletzung ist. Deswegen 2 Vermutungen.
1) Die Breite von Int in der 64x WinAPI und Lazarus sind unterschiedlich. Keine Ahnung welche Größe wo eingesetzt wird.
2) Unter 64Bit ist das Alignment von Records anderes. Das Record TGCPResultsW ist packed. Da die Typen auf 4Bytes ausgerichtet sind sollte das eigentlich egal sein. Vielleicht ist das unter 64Bit anders. Wobei TLogFontA aber auch Packed ist und das scheit ja zu gehen. Solltest dort auch mal TtsFontCreatorGDIFontFace.Create debuggen und überprüfen ob die Werte die ausgelesen wurden stimmen oder nicht. Wobei Windows bei einem unbekannten Font aber einfach ein Defaultfont benutzt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Mo Nov 28, 2011 18:50 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

Exception ist ne "External SIGSEGV". Die int Größe ist in beiden Fällen 4 Byte. Siehe hier. Ich hab mir die Größe auch nochmal von Lazarus und VisualStudio ausgeben lassen. Ist immer 4 Byte. TtsFontCreatorGDIFontFace.Create arbeitet (soweit ich das beurteilen kann) richtig. Die Daten die da ausgelesen wurden sind gleich der Daten des Fonts. Also sollte das Alignment des Records auch richtig sein...

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Mo Nov 28, 2011 19:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Bergmann89 hat geschrieben:
External SIGSEGV

Definitiv Zugriffsverletzung.

Wenn du die TextSuite unter 64bit irgendwie ans laufen bekommst (bevorzugt mit FreeType) wär das sehr cool. Ich würde sie nämlich auch gerne in einem Projekt von mir unter 64bit verwenden.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Di Nov 29, 2011 10:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich für meinen Teil kann mit sigsegv gar nichts anfangen. Zu mal das ja eigentlich eine linux meldung unter windows ist.
Habe aber auch vermutet, dass es eine Zugriffsverletzung ist. Interessant wäre da aber auch ob man an die Adresse bekommt an der es geknallt hat? Die hilft eventuell auch zu erkennen warum es knallt. Das es bei Count = 0 nicht knallt spricht eigentlich auch dafür. Denn dann wird er nicht auf mehr auf den String und das Result zugreifen. Vielleicht solltest du Result mal auf einen Pointer umstellen. Also nicht über var sondern via Pointer. Was aber identisch sein sollte (wenn nicht gehört Lazarus verprügelt).

Mir ist noch aufgefallenn, dass GCPRes.lStructSize nicht initialisiert wurde. Vor dem Aufruf von GetCharacterPlacementW mal "GCPRes.lStructSize = SizeOf(TGCPResultsW)" ausführen. Dann sollte da eine passende Größe drinne stehen.
Eventuell könnte ich mir vorstellen, dass 64Bit ein Alignment von 8 Bytes hat (nur geraten). Müsstest du testweise mal das Alignment auf 8 setzen und das Packed bei der Struktur wegmachen. Dadurch könnte es auch passieren, dass er auf ein Feld zugreift was eigentlich wo anders ist und dadurch kann es auch knallen.

Zu FreeType. Dazu müsstest du dir mal die 0.9 Dev im Download anschauen. Dafür sind zu mindest schon ein paar Sachen vorbereitet. Allerdings überwiegend Windows und natürlich mitten in der Entwicklung. So etwas wie Italic geht nicht, da FreeType so etwas nur fakt. dglopengl steht in der Classes auch noch drin. Wird aber nur wärend der Bastelei für OpenGL Funktionen benötigt. Ansonsten sollte das alles in Imports stecken. So zu mindest mein Konzept dahinter.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Di Nov 29, 2011 15:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Dass Lazarus SIGSEGV anzeigt hängt damit zusammen, dass es GDB benutzt, das natürlich intern Posix-Signale verwendet.

Eigentlich sollte man mit Lazarus herausbekommen können, wo genau es knallt. Versuch mal das Callstack-Fenster zu befragen oder führe deine Anwendung halt per hand mit dem gdb aus.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Di Nov 29, 2011 18:22 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

das mit dem Pointer auf das Record hab ich schon probiert, hat aber nix gebracht. Das mit der lStructSize ist mir auch schon aufgefallen und das hatte ich auch schon so eingebaut. Der CallStack nach der Exception sieht folgendermaßen aus:
Code:
  1. #0 7FEFFE91635E LpkGetTextExtentExPoint
  2. #1     0263EFB0 ??
  3. #2     004175E8 HEAPTRC_TRACEGETMEM$QWORD$$POINTER

Per Hand hab ich noch nie was mit dem gdb debuggt, da muss ich mich erstma rein fitzen...

€: OK, Aligment auf 8 löst das Problem. Zumindest bekomm ich jetzt schonmal vernünftige Werte zurück. Aber der Text wird trotzdem noch nicht gezeichnet. Da muss ich nochma n bisl debuggn...

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Di Nov 29, 2011 22:12 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wenn du's irgendwie unter Linux testen kannst, versuch's mal mit Valgrind. Vermutlich wird irgendwo an die falsche stelle geschrieben und es knallt weil die Speicherverwaltung von Heaptrc kaputt geht.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Di Nov 29, 2011 23:17 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

ich habs geschaft. Zumindest hab ich ne Textausgabe. Kann sein, das es bei der ein oder anderen Funktion (die mein Programm jetzt noch nicht nutz) noch knallt, aber die sollten auch relativ schnell gefixt sein. Hier mal die Änderungen:

  • die Größe des Aligments ändern: TextSuiteImports.pas (Zeilen 114-233):
    Code:
    1. //für Lazarus/FPC
    2.   {$IFDEF CPU64}
    3.   {$PACKRECORDS 8}
    4.   {$ENDIF}
  • PointerTypen auf die Rekords anlegen
  • Pointer anstatt var bei der Übergabe benutzen (kann auch sein das es mit var geht, aber bei mir läuft es jetzt mit Pointern. Und ich bin sehr froh das es jetzt arbeitet und will es jetzt nicht nochmal kaputt frickeln^^)
  • folgende 2 Funktionsaufrufe wie folgt abändern:
    Code:
    1. //das (TextSuiteImports.pas Z.278/280)
    2. GetGlyphOutlineA: function(DC: HDC; uChar, uFormat: Word; const lpgm: TGlyphMetrics; cbBuffer: DWORD; lpvBuffer: Pointer; const lpmat2: TMat2): DWORD; stdcall;
    3. GetCharacterPlacementW: function(DC: HDC; Str: PWideChar; Count, MaxExtent: Integer; var Result: TGCPResultsW; Flags: DWORD): DWORD; stdcall;
    4.  
    5. //wird zu dem:
    6. GetGlyphOutlineA: function(DC: HDC; uChar, uFormat: Cardinal; lpgm: PGlyphMetrics; cbBuffer: DWORD; lpvBuffer: Pointer; lpmat2: PMat2): DWORD; stdcall;
    7. GetCharacterPlacementW: function(DC: HDC; Str: PWideChar; Count, MaxExtent: Integer; Result: PGCPResultsW; Flags: DWORD): DWORD; stdcall;

mich wundert aber, das GetGlyphOutlineA bei 32bit funktioniert hat, weil uCahr und uFormat in der Doku als UINT deklaiert sind, und nicht als Word?!

MfG Bergmann89.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Mi Nov 30, 2011 11:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
GetGlyphOutline: Das Wundert mich allerdings auch irgendwie. Keine Ahnung wieso dort ein Word steht.

Wegen dem Alignment. Das sollte wohl sinnvollerweise in die "TextSuiteOptions.inc" rein. Inklusive dem "Default" von 4 für 32Bit Systeme. Dann befindet sich das nicht nur in einer Datei sondern überträgt sich gleich auf alle Units. Wobei die Strukturen etc eh nur in der Imports zu finden sind.
Wobei sich mir da auch gerade die Frage stellt in wie fern sich das Alignment auch auf TMat2 auswirkt. Denn TFixed ist nur 4Bytes groß. Mit einem Alignment von 8 müsste sich die Größe aber verändern. Als Member von Mat2 wäre das aber nicht nötig. Was das angeht bin ich auch etwas unschlüssig wann dort Packed bei den Records benötigt wird und wann nicht.

Und danke fürs Testen und Korrigieren. Wäre dann wohl fast das Sinnvollste, wenn ich die ganzen Änderungen zusammentrage und noch mal den Code anpasse.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Do Dez 01, 2011 11:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

ich hab noch n kleines Problem, bei dem ich nicht weiß wo ich ansetzen soll. Und zwar wird meine komplette Szene dunkler dargestellt, sobald ich ne Textausgabe drin hab. Der Text und Objekte die ich mit nem PerPixelLight-Shader zeichne hat aber seltsamerweise die richtige Farbe. So hab ich das Ganze gezeichnet:
Code:
  1.       glScalef(0.01, -0.01, 0.01);
  2.       glRotatef(90, 1, 0, 0);
  3.       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  4.       glEnable(GL_BLEND);
  5.       glDepthFunc(GL_ALWAYS);
  6.       glDisable(GL_CULL_FACE);
  7.         tsTextColor3f(0, 0, 0);
  8.         tsSetParameteri(TS_ALIGN, TS_ALIGN_CENTER);
  9.         tsSetParameteri(TS_VALIGN, TS_VALIGN_CENTER);
  10.         tsTextBeginBlock(-100, -100, 200, 200, TS_BLOCKFLAG_NONE);
  11.           tsFontBind(fFontID);
  12.           tsTextOutA(PAnsiChar(IntToHex(fSectorConstList[i].ID, 8)));
  13.         tsTextEndBlock;
  14.       glDisable(GL_BLEND);
  15.       glEnable(GL_CULL_FACE);
  16.       glDepthFunc(GL_LESS);
Könnte es sein, da noch irgendwo ne Funktion falsche Werte liefert?

MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Do Dez 01, 2011 13:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
http://files.opengl24.de/projects/TextSuite/help/faq_opengl_states.html

Du hast in deinen Ausführungen selber schon einen entscheidenen Hinweis gehabt (shader sind nicht betroffen). Die TextSuite benutzt natürlich nur normale OpenGL Funktionionen zum Darstellen des Textes (wie soll das sonst auch anders gehen). Im speziellen Quads, Texturen und Farben. Da die Bibliothek nun mal nicht bei jedem Text wieder alles deaktivieren kann/sollte. Bleibt das Sache des Entwicklers. Entsprechend ist nach dem Aufruf von tsTextOut* auch eine Textur aktiv und gebunden.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: TextSuite
BeitragVerfasst: Do Dez 01, 2011 13:44 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Ah stimmt. Ich hab zwar darüber nachgedacht ob die TextSuite irgendwelche OpenGL Sachen de-/aktiviert, aber an die Textur hatte ich nicht gedacht^^ Jetzt gehts, Danke.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 169 Beiträge ]  Gehe zu Seite Vorherige  1 ... 7, 8, 9, 10, 11, 12  Nächste
Foren-Übersicht » Sonstiges » Meinungen zu den Projekten


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.125s | 17 Queries | GZIP : On ]