Seite 2 von 3
Verfasst: 16.09.2004 22:33
von Sebe
Kann uns mal bitte jemand aufklären, wer sich irrt und erklären, wie man DX mit PB verwenden kann?
Dreamore hat in einem anderen Thread Folgendes geschrieben:
Einfach die DirectX befehle aufrufen etc.
Die Interfaces und Strukturen sind als Residents integriert ( DX9 )
Irrst du dich vielleicht doch und nicht ich???
Verfasst: 17.09.2004 07:17
von ShadowTurtle
Wieso immer nur OpenGL und keine 3D Engine in Purebasic benutzen? Ich meine jetzt nicht eine Integrierte (ogre), sondern eine Freie 3D Engine die in PureBasic (ogl) geschrieben ist.
Ansonsten konnte ich in meiner 3D Engine viele Examples von den Nehe Tutorials nachbauen. Nur bei den Shader habe ich Probleme, aber das auch nur weil ich keine lust auf Extensions habe.
Wenn man alles richtig Deklariert, dann kann man auch die ogl 1.5 Befehle nutzen. So fern man im Pixelformat Struktur die Version von 1.1 auf z.B. 1.5 umstellt. *g*
Damit unklarheiten verworfen werden, zeige ich nun ein paar Screens meiner OpenGL Fähigkeiten:
http://www.scream3d.de/portals/standart ... pengl1.jpg
http://www.scream3d.de/portals/standart ... ngine1.jpg
Beide Screenshots sind mittlerweile alt, aber zeigen trotzdem Qualitiv gutes. Zumindest wenn man bedenkt das 3D in Purebasic fast so rar wie Wasser in der Wüste ist.
cu
Verfasst: 17.09.2004 07:20
von DarkDragon
AlphaBlending gibts auch, was will man mehr?
Man kann durch die ImageDe/En coder sogar jpg, png, bmp, ... als texturen laden.
Verfasst: 17.09.2004 13:10
von Dreamora
Was ich will sind ARB und EXT Funktionen, da sie für die Vertexdatenspeicherung stark optimierte Funktionen bieten, die speziell für Multipassrendering und dergleichen sehr empfehlenswert sind.
nur bin ich leider noch net durchgestiegen, wie man die folgende Codezeile in PB umbaut ( was mich dann wohl dazu würde nen wrapper zu bauen, was mir garnet passt ... ne DLL zu nutzen die ne DLL aufruft scheint mir leicht ineffizient )
> typedef void (APIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);
Mir geht es dabei hauptsächlich um den APIENTRY "Type".
Ich vermute das ist irgend eine C++ Compilerdirektive oder dergleichen ...
nur wie bastel ich die in PureBasic nach damit ich es nachher für den WGL Call um den Funktionspointer ausgespuckt zu bekommen ...
PBGL unterstützt leider auch nicht wirklich mehr als die standardmässig vorhandene OpenGL 1.1 Integration.
Verfasst: 17.09.2004 15:31
von 3ddreams
APIENTRY is glaub ich mal sowas wie Win-API gewesen oda so, musse Sebe fragen, der weiss es
Verfasst: 17.09.2004 16:24
von ShadowTurtle
Wie wärs mal mit Strg + klick auf "APIENTRY"? Dann kommts du zu der zeile in dem APIENTRY Definiert wurde. Ist in allen guten Programmier IDEs so.
Entweder ist APIENTRY eine klasse/struktur oder nur ein Datentyp. Mehr kann es nicht sein. Immerhin versteht C++ auch nicht mehr.
cu
Verfasst: 17.09.2004 16:35
von Dreamora
Keine Ahnung was für ne komische IDE hast, weder VC++ 6 noch VC++ 2003 kennt den CTRL - Klick
Davon abgesehen besitzt es innerhalb des headers keine Definition davon, noch ist irgend eine File includiert welche die deklaration besitzt. ( Wenn du ein C++ drauf hast, müsstest du da auch ein gl.h bei haben )
Die erste Zeile wo es vorkommt ist:
>#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
Vom Compiler etc verstehe ich leider net ausreichend um jetzt aus dem mittels rumsuchen oder so was sinnvolles zu machen.
Verfasst: 17.09.2004 16:45
von DarkDragon
Was zum teufel ist ein "__stdcall"?
Code: Alles auswählen
#if !defined(APIENTRY)
# if defined(__WIN32__)
# define APIENTRY __stdcall
# else
# define APIENTRY
# endif
#endif
APIENTRY heißt glaube ich einfach, dass es eine Funktion von OpenGL ist.
Die erste Zeile, die du erwähntest ist bei mir unter glext.h zu finden.
Verfasst: 17.09.2004 17:09
von ShadowTurtle
__stdcall ist ein kürzel. Und zwar eine Compiler direktive (oder wie man es nennen mag).
Es bestimmt die Funktion/Struktur/Klasse verwaltung. Was damit nun genau gemeind ist weis ich nicht mehr.
Sicher kann man aber aus PFNGLGETQUERYIVPROC nun daraus schließen das diese eine OpenGL Interne Klasse/Struktur ist. Ob es ein Datentyp ist weis ich nicht. Solche neumodische sachen kann ich in c++ nicht beurteilen.
Aber generell stellt die zeile (typedef void (APIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint *params);) eine Type Definierung da. *oh welch wunder*
Anscheinend definiert diese eine zeile nur das alle funktionen als __stdcall verwaltet werden. So weit ich aber weis soll Purebasic mit alle Funktionstypen (aus einer Libary) klar kommen, oder?
Apropos... mir fällt da gerade auf das ich anscheinend ein paar alte OpenGL Header übertragen hatte/habe. Aber alle GL1.5 Funktionen funktionieren trotzdem.
Ich denke mir mal das diese Zeile nur für einen C++ Compiler interessant ist.
cu
Verfasst: 15.10.2004 16:59
von Quaxi
Entweder bin ich zu doof oder warum gehen bei mir die Tutorials von der vorher angeführten Homepage nicht?
Jedes mal wenn ich eins anklicke, ladet er kurz, komme dann aber wieder zum startschirm.