ich versuche gerade Texturen zu laden. Verwendet wird SDL mit OpenGL. Das Problem dabei ist: Ich möchte einfach nur einen Button programmieren (eigentlich ist er das schon, aber nun muss er an OpenGL angepasst werden). Auf Basis seiner Statusvariable wird eine entsprechende Textur gezeichnet. Diese befindet sich in einer Matrix - die Positionen sind bekannt. Nun binde ich die Textur, aber wie unbinde ich sie wieder ? Der folgende kommentierte Code basiert auf SDL_Image. Das Laden klappt, das binden auch, nur am Unbind scheitert es noch. Der zweite Code ist die Render-Prozedur des Buttons. Ohne ein Unbind passiert aktuell bei einem Statuswechsel (zum Beispiel Maus drüber - ssOver) nichts. Es fehlt einfach das Unbind. Oder habt Ihr andere Vorschläge, wie man das lösen könnte ?
Code:
type
// Textur
TTextur =class
private
Textur : GluInt;
function SetTexture(SDLSurface : PSDL_Surface;var Texture : TGluInt):Boolean;
function LoadTexture(Dateiname :String; Textur : TGluInt):Boolean;
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Du benötigst, jedenfalls soweit ich dich jetzt verstanden habe, immer eine Textur.
Wenn du eine andere anzeigen willst, die erscheint wenn die Maus drüber schwebt, dann musst du die standard Textur einfach in dem Moment wieder setzen, wenn die Maus den Button wieder verlässt.
Die nachfolgenden anderen Teile der Szene werden vermutlich andere Texturen benötigen (außer es besteht alles aus Buttons ) dann musst du die entsprechend binden. Und wenn du keine Textur mehr benötigst dann schaltest du mit glDisable(GL_TEXTURE_2D) das ganze einfach aus.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Sa Nov 24, 2007 11:59 Beiträge: 116
Programmiersprache: FreePascal
Oder du bindest einfach 0 an das entsprechende Ziel. Aber warum unbinden? Eigentlich musst du doch nur irgendwo eine andere Textur binden, oder zeichnest du etwas ohne Texturen?
Stimmt, einfach neu binden und fertig. Aber etwas anderes was zum gleichen Thema gehört wäre da noch: Wenn man einen Text in einem SDL-Surface gerendert hat, gibt es dann noch bessere Möglichkeiten außer Blending, um das Surface als Textur konvertiert über die Button-Textur zu blenden ? Denn im Folgenden geht leider leicht die Leserlichkeit verloren. Es wäre zwar noch hinnehmbar, aber der Text könnte - falls möglich - noch etwas schärfer sein.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Das ist die falsche Blend-Funktion. Die die du da hast ist Additiv, das ist bei Text nicht angebracht. Versuch mal diese:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my 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
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.