2D Beschleunigung mit openGL
-
Hi !
Ich habe ein bisschen die openGL Tutorials von Nehe gelesen und mir die Beispiele mit SDL Code angeschaut. Zurzeit versuche ich mein Programm mit openGL aufzupeppen. Allerdings benötige ich keine 3D Funktionen sonder nur Quadrate die dann schnell und hardwarebeschleunigt gezeichnet werden. Kurz es handelt sich eigentlich um ein 2D Programm.
Ich möchte SDL mit openGL kombinieren ( nicht DX ). SDL hat sich leider als zu langsam für das Darstellen der Grafiken erwiesen, da das Programm mit einer relativ hohen Auflösung arbeitet.
Ich denke mal ich werde nicht jedes Detail von openGL benutzen, deshalb wollte ich mal fragen, worauf ich genau achten sollte, wenn ich mit openGL programmiere.
Ich lade PNG Dateien mit Alphakanal (werden dann in einem SDL Surface abgespeichert) und schreibe sie dann als Textur auf ein openGL Quad. Jetzt möchte ich, dass die Transparenz von der PNG Grafik von openGL übernommen wird.
Wie mache ich das am besten, ist das möglich und gibt es dazu ein bisschen Code auf den Ihr mich verweisen könnt ?
thx
Tom
-
Nimm ClanLib, da hast du ne OpenGL - Beschleunigte 2D - API
-
Okay ich hab mir jetzt mal ClanLib runtergeladen und auf dem Rechner ( Suse 9.2 ) installiert.
Jetzt habe ich ein Progrämmchen geschrieben was an das TicTacToe Tutorial auf der ClanLib Homepage angelehnt ist.
TestClanLib.h
#ifndef _TESTCLANLIB_H_ #define _TESTCLANLIB_H_ #include <ClanLib/core.h> #include <ClanLib/display.h> #include <ClanLib/gl.h> #include <ClanLib/appication.h> class TestClanLib : public CL_ClanApplication { public: virtual int main( int , char** ); } #endif
TestClanLib.cpp
#include "TestClanLib.h" #include <iostream> int TestClanLib::main( int argc , char** argv ) { CL_ConsoleWindow* console = new CL_ConsoleWindow("Testausgabe" , 300 , 150 ); console->redirect_stdio(); try { CL_SetupCore::init(); CL_SetupDisplay::init(); CL_SetupGL::init(); CL_DisplayWindow* window = new CL_DisplayWindow( "Title", 400 , 350 ); CL_SetupGL::deinit(); CL_SetupDisplay::deinit(); CL_SetupCore::deinit(); } catch ( CL_Error error ) { std::cout << error.message; console.display_close_message(); } return 0; }
Wie jag ich das jetzt am besten durch den Compiler ? Bzw mit g++ -c TestClanLib.cpp -o TestClanLib.o funktionierts nicht. Da fehlt ja schließlich noch was...
thx
Tom
-
Also meine Kristalkugel ist zwar ziemlich trueb, aber irgendwas sagt mir, dass du evtl. noch angeben musst, wo die includes fuer die Clanlib liegen
-
naja ich glaub so trüb war sie dann doch nicht
Allerdings mecker der Compiler jetz beim Linken:"g++ -c TestClanLib.cpp -I /pfad/zu/ClanLib -o TestClanLib.o" funktioniert fein
aber:
g++ TestClanLib.o -o TestClanLib /usr/lib/gcc-lib/i586-suse-linux/3.3.4/../../../crt1.o(.text+0x18): In function `_start': ../sysdeps/i386/elf/start.S:115: undefined reference to `main' TestClanLib.o(.text+0x55): In function `TestClanLib::main(int, char**)': : undefined reference to `CL_ConsoleWindow::CL_ConsoleWindow[in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' TestClanLib.o(.text+0xec): In function `TestClanLib::main(int, char**)': : undefined reference to `CL_ConsoleWindow::redirect_stdio()' TestClanLib.o(.text+0xf9): In function `TestClanLib::main(int, char**)': : undefined reference to `CL_SetupCore::init(bool)' TestClanLib.o(.text+0x106): In function `TestClanLib::main(int, char**)': : undefined reference to `CL_SetupDisplay::init(bool)' TestClanLib.o(.text+0x113): In function `TestClanLib::main(int, char**)': : undefined reference to `CL_SetupGL::init(bool)' TestClanLib.o(.text+0x170): In function `TestClanLib::main(int, char**)': : undefined reference to `CL_DisplayWindow::CL_DisplayWindow[in-charge](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int, bool, bool, int)' TestClanLib.o(.text+0x216): In function `TestClanLib::main(int, char**)': : undefined reference to `CL_SetupGL::deinit()' TestClanLib.o(.text+0x21b): In function `TestClanLib::main(int, char**)': : undefined reference to `CL_SetupDisplay::deinit()' TestClanLib.o(.text+0x220): In function `TestClanLib::main(int, char**)': : undefined reference to `CL_SetupCore::deinit()' TestClanLib.o(.text+0x279): In function `TestClanLib::main(int, char**)': : undefined reference to `CL_ConsoleWindow::display_close_message()' TestClanLib.o(.gnu.linkonce.t._ZN11TestClanLibD1Ev+0x16): In function `TestClanLib::~TestClanLib [in-charge]()': : undefined reference to `CL_ClanApplication::~CL_ClanApplication [not-in-charge]()' TestClanLib.o(.gnu.linkonce.t._ZN11TestClanLibD0Ev+0x16): In function `TestClanLib::~TestClanLib [in-charge deleting]()': : undefined reference to `CL_ClanApplication::~CL_ClanApplication [not-in-charge]()' TestClanLib.o(.gnu.linkonce.r._ZTI11TestClanLib+0x8): undefined reference to `typeinfo for CL_ClanApplication' collect2: ld returned 1 exit status
Irgendwie kann ich damit nix anfangen...
Tom
-
da sind .o oder .a oder .lib - dateien nicht referenziert, bzw. existieren nicht dort wo der compiler sie sucht..
Hast du nich ne IDE? gibt doch auch schöne für Linux.
-
Ausserdem musst du im Compiler RTTI anstellen.
-
ich benutz den Editor J. Hab schon einige IDEs ausprobiert (KDevelop, Eclipse etc) find ich aber alle unpraktisch.
DocJunioR schrieb:
da sind .o oder .a oder .lib - dateien nicht referenziert, bzw. existieren nicht dort wo der compiler sie sucht..
Und wie kann ich das beheben ?
btw: RTTI sagt mir nicht viel...
thx
Tom
-
tom07 schrieb:
ich benutz den Editor J. Hab schon einige IDEs ausprobiert (KDevelop, Eclipse etc) find ich aber alle unpraktisch.
DocJunioR schrieb:
da sind .o oder .a oder .lib - dateien nicht referenziert, bzw. existieren nicht dort wo der compiler sie sucht..
Und wie kann ich das beheben ?
g++ TestClanLib.o -o TestClanLib -i/pfad/zur/clanlib.a-Datei
-
-
tom07 schrieb:
ich benutz den Editor J. Hab schon einige IDEs ausprobiert (KDevelop, Eclipse etc) find ich aber alle unpraktisch.
DocJunioR schrieb:
da sind .o oder .a oder .lib - dateien nicht referenziert, bzw. existieren nicht dort wo der compiler sie sucht..
Und wie kann ich das beheben ?
Indem Du eine IDE benutzt...
-
nö nö ich benutzt lieber meinen J Editor den find ich ziemlich schick.
Ich hab das Prob jetzt aber anders gelöst indem ich einfach ein ClanLib Projekt genommen habe und mir das Makefile angeschaut habe.
Jetzt klappts auch mit dem Compilieren....
mfgTom
-
Dann RTFM.
Bye, TGGC (Keine Macht den Dummen)
-