Page 1 sur 1
Importer un moteur 3d ?
Publié : lun. 14/août/2006 19:24
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.
Publié : mar. 15/août/2006 23:40
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.
Publié : mer. 16/août/2006 12:09
par wolfjeremy
Ok ben je laisse tomber alors
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.
Publié : mer. 16/août/2006 13:30
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
Publié : mer. 16/août/2006 14:01
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)