Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi [OpenGL] Texture verpixelt (https://www.delphipraxis.net/153658-%5Bopengl%5D-texture-verpixelt.html)

vlees91 11. Aug 2010 15:03

[OpenGL] Texture verpixelt
 
Ich habe ein Programm mit der GDI gemacht, aber weil die performance nicht wirklich gut ist hatte ich vor diese auf OpenGL umzuschreiben.
Das Problem ist jetzt allerdings das mit GL_NEAREST und auch mit GL_LINEAR die Textur einfach grottig aussieht (Bei der GDI sieht's genau wie bei GIMP aus):
http://img186.imageshack.us/img186/2526/glfail.png

Hat jemand eine Idee wie man das loesen kann?

EDIT: Ich verwende die letzte dglOpenGL.pas von Dezember 2009 und dazu eine Textures.pas von Jan Horn von 1. Mai 2001. Die TGA ist einfach ein Bild mit einem Alphakanal.

blackfin 11. Aug 2010 15:14

AW: [OpenGL] Texture verpixelt
 
Das liegt nicht daran, dass OpenGL das nicht könnte, sondern daran, dass du die falschen Blending-/Alpha-Parameter benutzt.
wie sieht denn z.B. deine glblendfunc aus? Sieht nämlich sehr nach 1-Bit Alpha aus (GL_ONE).

Bevor ich mir hier nen Wolf tippe, hier kannst du das ganze detailliert nachlesen, wie man in OpenGL mit und ohne Alphachannel blendet:

glBlendFunc:
http://wiki.delphigl.com/index.php/glBlendFunc

glAlphaFunc:
http://wiki.delphigl.com/index.php/glAlphaFunc

normalerweise nimmt man für eine Transparenz mit Alphachannel beim Blending mode:
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

vlees91 11. Aug 2010 15:23

AW: [OpenGL] Texture verpixelt
 
Uhm. Im Moment garnichts. Ich habe mir einfach ein Paar Beispiele angesehen und dann gesehen, dass der Code von http://wiki.delphigl.com/index.php/Tutorial_2D#Schatten funktioniert wie ich mir das vorgestellt habe.
Hab also deren Bild mit meinem ersetzt und dann passierte das.
Es sieht ziemlich danach aus das die TGA einfach falsch ist, aber alles schliessen und die exportierte TGA wieder in GIMP oeffnen sieht so aus wie es soll (Die Original Datei ist eine PNG; und wie gesagt: mit GDI/Canvas klappts prima).

blackfin 11. Aug 2010 15:27

AW: [OpenGL] Texture verpixelt
 
GDI und OpenGL haben miteinander überhaupt nichts zu tun :D

Ahaaa...in dem Schatten-Tutorial wird ja auch gebblendet, indem alles, was einen Alpha als kleiner/gleich 0.1 hat, weggeschnippelt wird.
Du brauchst aber in deinem Bild den Alphachannel des Originals.
Also ersetze doch mal

glAlphaFunc(GL_GREATER, 0.1);

durch
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) ;

vlees91 11. Aug 2010 15:35

AW: [OpenGL] Texture verpixelt
 
Ja, danke. Klappt!

(Der Vergleich zur GDI kam weil GDI ja nicht wirklich gut ist und es sogar dort geklappt hat :D (nur eben mit ~30 FPS was zu wenig ist))


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