Importer un moteur 3d ?

Sujets variés concernant le développement en PureBasic
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Importer un moteur 3d ?

Message par wolfjeremy »

Salut,

J'aimerai savoir comment importer un moteur 3d dans PureBasic ?
J'ai vu qu'on utilise des .pbi, mais y a-t-il un tuto ou autre chose qui explique la manoeuvre ?

Merci d'avance pour votre aide.
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

c'est un sacré boulot. Et une certaine maitrise du langage d'origine du moteur (du C++ pour Ogre et Irrlicht) est obligatoire.
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Ok ben je laisse tomber alors :lol:

Que se soit un sacré boulot je m'en tape mais par contre en ce qui est de la metrise du C++ ... :?

Merci pour ta réponse.
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Ca ne demande aucune maitrise du C++, faire un wrapper d'un moteur 3D programmé en C++ ne consiste qu'à créer une instance de classe de chaque class du moteur.
Exemple, il y a une Class C++ Mesh, le wrapper se chargera de créer une instance de cette classe et exportera toutes les méthodes de cette classe.
C'est par contre un gros boulot car il existe pas mal de Class et autant de méthodes à wrapper.
Pour un exemple concret, télécharge jwsmtp, regarde un peu le code C++ et regarde ce que j'ai fait pour l'utiliser en PB :

Code : Tout sélectionner

#include <iostream>
#include <assert.h>
#include "jwsmtp/jwsmtp.h"

#ifdef	__cplusplus
	extern "C" {
#endif

#define API			__stdcall
#define EXPORTAPI	__declspec(dllexport)


typedef struct mail_info {
	const char * toAddress;
	const char * fromAddress;
	const char * subject;
	const char * message;
	const char * server;
	unsigned short Port;
	bool		mxLookup;
}mail_info;

using namespace jwsmtp;

EXPORTAPI mailer * API PB_jwSMTP_Create(mail_info * info )
{
mailer * m = new mailer(info->toAddress, info->fromAddress, info->subject, info->message, info->server, info->Port, info->mxLookup);

	assert(m);
	return m;
}

EXPORTAPI void API PB_jwSMTP_Destroy(mailer * m)
{
	assert(m);

	delete m;
	m = NULL;
}

EXPORTAPI void API PB_jwSMTP_Send(mailer *m)
{
	m->send();
}

EXPORTAPI void API PB_jwSMTP_Attach(mailer *m, const char * filename)
{
const std::string& s = filename;

	m->attach(s);
}

EXPORTAPI void API PB_jwSMTP_RemoveAttachment(mailer *m, const char * filename)
{
const std::string& s = filename;

	m->removeattachment(s);
}

EXPORTAPI bool API PB_jwSMTP_SetMessage(mailer *m, const char * newmessage)
{
const std::string& s = newmessage;

	return m->setmessage(s);
}

EXPORTAPI bool API PB_jwSMTP_SetMessageHTML(mailer *m, const char * newmessage)
{
const std::string& s = newmessage;

	return m->setmessageHTML(s);
}

EXPORTAPI bool API PB_jwSMTP_SetMessageHTMLfile(mailer *m, const char * filename)
{
const std::string& s = filename;

	return m->setmessageHTMLfile(s);
}

EXPORTAPI bool API PB_jwSMTP_SetSubject(mailer *m, const char * newSubject)
{
const std::string& s = newSubject;

	return m->setsubject(s);
}

EXPORTAPI bool API PB_jwSMTP_SetServer(mailer * m, const char * nameserver_or_smtpserver)
{
const std::string& s = nameserver_or_smtpserver;

	return m->setserver(s);
}

EXPORTAPI bool API PB_jwSMTP_SetSender(mailer * m, const char * newsender)
{
const std::string& s = newsender;

	return m->setsender(s);
}

EXPORTAPI bool API PB_jwSMTP_AddRecipient(mailer * m, const char * newrecipient, short recipient_type /*CC, BCC*/)
{
const std::string& s = newrecipient;

	return m->addrecipient(s, recipient_type);
}

EXPORTAPI bool API PB_jwSMTP_RemoveRecipient(mailer * m, const char * recipient)
{
const std::string& s = recipient;

	return m->removerecipient(s);
}

EXPORTAPI void API PB_jwSMTP_ClearRecipients(mailer * m)
{
	m->clearrecipients();
}

EXPORTAPI void API PB_jwSMTP_ClearAttachments(mailer * m)
{
	m->clearattachments();
}

EXPORTAPI void API PB_jwSMTP_Reset(mailer * m)
{
	m->reset();
}

EXPORTAPI const char * API PB_jwSMTP_Response(mailer * m)
{
	return m->response().data();
}

/*
void API jwSMTP_AuthType(mailer * m, const enum authtype Type)
{
	m->authtype(Type);
}
*/

EXPORTAPI void API PB_jwSMTP_UserName(mailer * m, const char * User)
{
const std::string& s = User;

	m->username(s);
}

EXPORTAPI void API PB_jwSMTP_Password(mailer * m, const char * Pass)
{
const std::string& s = Pass;

	m->password(s);
}

#ifdef __cplusplus
	}
#endif
"Qui baise trop bouffe un poil." P. Desproges
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Hum oui sa a l'air plutot long comme travail, et j'ai surtout interet a lire le tuto sur les pointeurs :? (que je n'ai pas encore pris le temps de tout lire)
Répondre