Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [Andorra] GUI wird nicht richtig dargestellt (https://www.delphipraxis.net/119872-%5Bandorra%5D-gui-wird-nicht-richtig-dargestellt.html)

Codewalker 2. Sep 2008 14:36


[Andorra] GUI wird nicht richtig dargestellt
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mit dem GUI-Editor von Andorra eine GUI erstellt und zeige diese an. Leider entspricht die Darstellung im Spiel nicht der im Editor. Die Kanten bei den CheckBoxen beispielsweise sehen sehr ausgefranst aus. Woran kann es liegen?
Die GUI erstelle ich mit folgendem Code:

Delphi-Quellcode:
 EditFieldGUI:=TAdGUI.Create(Canvas);
 EditFieldGUI.Skin.LoadFromFile('sunna.axs');
 EditFieldGUI.Cursors.LoadFromFile('cursors.xml');
 EditFieldGUI.LoadFromFile('FieldEditor.axg');
und im Idle
Delphi-Quellcode:
    EditFieldGUI.Update(TimeGap);
Anbei ein Screenshot, der das Problem ein wenig mehr verdeutlicht.

igel457 2. Sep 2008 14:49

Re: [Andorra] GUI wird nicht richtig dargestellt
 
Hm, welches Grafikplugin verwendest du in deiner Anwendung? OpenGL wie im Editor?

Codewalker 2. Sep 2008 14:57

Re: [Andorra] GUI wird nicht richtig dargestellt
 
Liste der Anhänge anzeigen (Anzahl: 3)
Nein, ich nehme das DirectX9-Plugin. Die Einstellungen habe ich mal angehangen.
Wenn ich das OGL-Plugin nehme, sehe ich sinnigerweise nur noch den Hintergrund (kein Spielfeld oder andere Sprites) und der Text ist überhaupt nicht mehr zu lesen (unten links im Bild).

Ich hänge auch mal zwei volle Screenshots an, einmal mit OpenGL und einmal mit DirectX

Edit: Screenshots sind nicht korrekt ich mache neue
Edit2: Neue Screenshots angehangen

igel457 2. Sep 2008 15:22

Re: [Andorra] GUI wird nicht richtig dargestellt
 
Das ist natürlich interessant. Theoretisch sollten keine so gravierenden Unterschiede beim Wechseln des Plugins auftreten. Wenn du willst könntest du mir entweder mal dein gesamtes Projekt zukommen lassen oder eine Anwendung basteln, die den Fehler mit den plötzlich fehlenden Elementen rekonstruiert.

Zu deinem eigentlichen Anliegen: Diesen Fehler habe ich jetzt schon öfters geschildert bekommen - ich habe aber keine Ahnung woran es liegen könnte. Es scheint, als ob die Vertices oder deren Texturkoordinaten irgendwie deformiert sind. Falls du irgendwelche Einstellungen für deine Grafikkarte gemacht hast, stelle diese mal komplett zurück (Antialias, Filtering etc.).

Edit: Hier hat jemand ein ähnliches Problem. http://www.eggheadcafe.com/forumarch...st23437466.asp

Die Antwort darauf:
Zitat:

It looks like you are rendering multiple sprites from a single texture,
correct? This can result in artifacts where pixels from an adjacent sprite
get blended into the sprite at the borders. Subtracting 0.5 from your X and
Y coordinates can eliminate this when rendering at 1:1 scale, but the
problem gets more complicated if you want to apply arbitrary scaling to the
sprites.

I would recommend surrounding each sprite with an pixel on each side that
repeats the adjacent sprite pixels, and using texture coordinates that don't
include these pixels - this technique, called "gutters", will mean that if a
pixel outside the texture coordinate range is interpolated into any pixel
value it won't show up as an artifact.

--

Robert Dunlop
The X-Zone
http://www.directxzone.com/
Microsoft DirectX MVP
Edit2: Oder hier: http://msdn.microsoft.com/en-us/library/bb147229(VS.85).aspx

Codewalker 2. Sep 2008 15:27

Re: [Andorra] GUI wird nicht richtig dargestellt
 
Grafikkarte ist auf Standardeinstellungen weil der Rechner frisch neu aufgesetzt ist.
Hm, ich sehe mal zu, was ich mit dem Projekt hinkriege...

Codewalker 2. Sep 2008 15:38

Re: [Andorra] GUI wird nicht richtig dargestellt
 
Soweit ich den Link aus deinem zweiten Edit und die MSDN richtig verstehe, könnte man das Problem umgehen, indem man den Magnification filter auf Linear setzt. Hast du das schon ausprobiert? (in Bezug auf ungeahnte Nebenwirkungen?)

Edit: Args, sollte ein Edit und kein Push werden. Ich brauch dringend mehr Kaffee. :freak:

igel457 2. Sep 2008 15:42

Re: [Andorra] GUI wird nicht richtig dargestellt
 
Füge einfach mal bei AdSkin.TAdSkinItem.Create nach dem erzeugen von FImages folgende Zeile ein:
Delphi-Quellcode:
FImages.Filter := atLinear;

Codewalker 2. Sep 2008 15:45

Re: [Andorra] GUI wird nicht richtig dargestellt
 
hm, ich muss Dich leider enttäuschen. Die GUI sieht noch genauso aus und im Gegenzug ist meine Spiellandschaft verschwunden ;-)

igel457 7. Sep 2008 20:14

Re: [Andorra] GUI wird nicht richtig dargestellt
 
Komisch... Dein Code würde mich wirklich mal interessieren. Ich arbeite gerade auch an einem Tile-Basierten spiel mit der SpriteEngineEx und habe hinsichtlich der Darstellungsfehler ähnliche Probleme wie du.

Schau mal was passiert wenn du die folgende Routine in AdDraws.pas austauschst:

Delphi-Quellcode:
procedure TAdCustomImage.SetSrcRegion;
var
  texw, texh: integer;
  rectw, recth: integer;
  mat: TAdMatrix;

const
  add = 0.5;
 
begin
  texw := Texture.Texture.Width;
  texh := Texture.Texture.Height;

  rectw := FSrcRect.Right - FSrcRect.Left;
  recth := FSrcRect.Bottom - FSrcRect.Top;

  mat := AdMatrix_Identity;

  //Scale the texture
  mat[0,0] := (rectw) / texw;
  mat[1,1] := (recth) / texh;

  //Translate the texture
  mat[2,0] := (FSrcRect.Left + add) / texw;
  mat[2,1] := (FSrcRect.Top + add) / texh;

  AdMesh.TextureMatrix := mat;
end;
Edit: Spiele am besten auch mal ein wenig mit der Konstante "Add" herum - auch negative Werte.
Edit2: Entferne add aus dem Skalierungsteil der Matrix. Habs im Code gemacht.

Codewalker 7. Sep 2008 20:27

Re: [Andorra] GUI wird nicht richtig dargestellt
 
Liste der Anhänge anzeigen (Anzahl: 2)
hm, auch wenn ich der Meinung gewesen wäre, durch das addieren von 0.5 hätte sich etwas ändern müssen - das Ergebnis ist: Nichts. Es sieht genauso aus wie vorher.

Anbei ein Screenshot. Sowohl der Button in der GUI als auch der Text (sieht aus wie "rolle da" statt "rolled a") sehen unverändert unschön aus.

Bei krasseren Werten sieht man im Screenshot 2, dass die Textur nur verschoben ist, die Fehler trotzdem die gleichen bleiben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 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