Hi leute,
ich versuch mich grade in C++ und Irrlicht einzuarbeiten und bin dabei auf ein Problem gestossen.
Um besser zu verstehen was ich mache und wie ich bestimmte dinge umsetzen kann (zb. 3rd Person View) möchte ich mir eine Ausgabe erzeugen in der die Positionen des Mauszeigers, der (zukünftigen) Spielfigur und die der Kamera ausgegeben werden.
Den folgenden Quellcode habe ich in Microsoft Visual C++ 2008 Express Edition geschrieben und Ausprobiert. Dort funktioniert er auch. Da ich aber eigentlich komplett mit Freeware programmieren möchte habe ich mir gedacht das Eclipse vielleicht besser wäre, also hab ichs mir eingerichtet ausprobiert und da taucht das Problem auf.
Denn Eclipse hängt sich beim Starten des Programms auf , es kommt zu garkeiner Ausgabe.
Der Quellcode:
Code:
#include "irrlicht.h"
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
int main()
{
IrrlichtDevice *device = createDevice( video::EDT_SOFTWARE, dimension2d<u32>(640, 480), 16, false, false, false, 0);
if (!device) return 1;
device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");
IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
IGUIEnvironment* guienv = device->getGUIEnvironment();
ISceneNode* player = smgr->addAnimatedMeshSceneNode(smgr->getMesh("C:/irrlicht/media/faerie.md2"));
if (!player)
{
device->drop();
return 1;
}
if (player)
{
player->setMaterialFlag(EMF_LIGHTING, false);
player->setMaterialTexture( 0, driver->getTexture("C:/irrlicht/media/sydney.bmp") );
}
ICameraSceneNode* camera = smgr->addCameraSceneNode();
camera->setTarget(player->getPosition());
camera->setPosition(player->getPosition()+vector3df(100,0,10));
IGUIStaticText *SText = guienv->addStaticText( L"" , rect<s32>(10,10,110,90), true);
ICursorControl *cursor = device->getCursorControl();
vector3df playerPos;
vector3df cameraPos;
position2d<irr::f32> cursorPos;
stringw debug_text;
int i,j;
while(device->run())
{
cursorPos = cursor->getRelativePosition();
cameraPos = camera->getPosition();
playerPos = player->getPosition();
debug_text = "Cursor X: ";
debug_text += cursorPos.X;
debug_text += "\nCursor Y: ";
debug_text += cursorPos.Y;
debug_text += "\nCamera X: ";
debug_text += cameraPos.X;
debug_text += "\nCamera Y: ";
debug_text += cameraPos.Y;
debug_text += "\nCamera Z: ";
debug_text += cameraPos.Z;
debug_text += "\nPlayer X: ";
debug_text += playerPos.X;
debug_text += "\nPlayer Y: ";
debug_text += playerPos.Y;
debug_text += "\nPlayer Z: ";
debug_text += playerPos.Z;
// Start_Problemzone
j = debug_text.size();
wchar_t *p= new wchar_t[j+1];
for( i=0; i<j; ++i)
p[i]=debug_text[i];
SText->setText( p );
// End_Problemzone
driver->beginScene(true, true, SColor(255,100,101,140));
smgr->drawAll();
guienv->drawAll();
driver->endScene();
}
device->drop();
return 0;
}
Genauer gesagt scheint es die Zeile "SText->setText( p )" zu sein die in Eclipse den Absturz verursacht. Im Visual Studio hingegen nicht, kann mir einer von euch vielleicht erklären wie es dazu kommt?
Oder eine andere Lösung für die Ausgabe erläutern?
MfG der VollDepp