OpenGL mit PureBasic? Wie?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Sebe
Beiträge: 585
Registriert: 11.09.2004 21:57
Wohnort: Europa
Kontaktdaten:

Beitrag 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???
ShadowTurtle
Beiträge: 114
Registriert: 11.09.2004 07:58
Wohnort: Mannheim
Kontaktdaten:

Beitrag 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
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

AlphaBlending gibts auch, was will man mehr?
Man kann durch die ImageDe/En coder sogar jpg, png, bmp, ... als texturen laden.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Dreamora
Beiträge: 21
Registriert: 10.09.2004 10:44

Beitrag 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.
Zuletzt geändert von Dreamora am 17.09.2004 15:39, insgesamt 1-mal geändert.
3ddreams
Beiträge: 7
Registriert: 16.09.2004 16:36
Kontaktdaten:

Beitrag von 3ddreams »

APIENTRY is glaub ich mal sowas wie Win-API gewesen oda so, musse Sebe fragen, der weiss es
ShadowTurtle
Beiträge: 114
Registriert: 11.09.2004 07:58
Wohnort: Mannheim
Kontaktdaten:

Beitrag 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
Dreamora
Beiträge: 21
Registriert: 10.09.2004 10:44

Beitrag 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.
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
ShadowTurtle
Beiträge: 114
Registriert: 11.09.2004 07:58
Wohnort: Mannheim
Kontaktdaten:

Beitrag 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
Benutzeravatar
Quaxi
Beiträge: 66
Registriert: 11.09.2004 12:42

Beitrag 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.
Antworten