Hi, habe eine Klasse, welche von UIView abstammt. Sieht wiefolgt aus:
Code:
#import <UIKit/UIKit.h>
@interface WWSIrrlichtView : UIView {
CADisplayLink *m_DisplayLink;
IrrlichtDevice *m_Device;
}
-(id)initIrrlichtView;
-(void)closeView;
@end
Code:
#import "WWSIrrlichtView.h"
@implementation WWSIrrlichtView
-(id)initIrrlichtView {
[self init];
SIrrlichtCreationParameters params;
params.DriverType = video::EDT_OGLES1;
params.WindowSize = core::dimension2d<u32>(320, 480);
params.WindowId = self;
params.Bits = 32;
m_Device = createDeviceEx((const SIrrlichtCreationParameters) params);
if (!m_Device) {
return 0;
}
NSString *oBunPath = [[NSBundle mainBundle] bundlePath];
m_Device->getFileSystem()->changeWorkingDirectoryTo([oBunPath cStringUsingEncoding:NSASCIIStringEncoding]);
ISceneManager *smgr = m_Device->getSceneManager();
IVideoDriver *driver = m_Device->getVideoDriver();
IAnimatedMesh *mesh = smgr->getMesh("Ressources/media/sydney.md2");
if (!mesh) {
NSLog(@"Konnte Mesh nicht laden!");
return 0;
}
IAnimatedMeshSceneNode *node = smgr->addAnimatedMeshSceneNode(mesh);
if (node) {
node->setMaterialFlag(EMF_LIGHTING, false);
node->setMD2Animation(scene::EMAT_STAND);
ITexture *pTex = driver->getTexture("Ressources/media/sydney256x256.bmp");
if (!pTex) {
NSLog(@"Konnte Textur nicht laden!");
return 0;
}
node->setMaterialTexture(0, pTex);
}
smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));
m_DisplayLink = [[UIScreen mainScreen] displayLinkWithTarget:self selector:@selector(updateDisplay)];
[m_DisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
return self;
}
-(void)updateDisplay {
m_Device->run();
m_Device->getVideoDriver()->beginScene(true, true, SColor(0,0,101,140));
m_Device->getSceneManager()->drawAll();
m_Device->getVideoDriver()->endScene();
}
-(void)closeView {
if (m_DisplayLink != nil) {
[m_DisplayLink invalidate];
}
if (m_Device != nil) {
m_Device->drop();
}
}
Bekomme leider nur ein weißes View angezeigt.... jemand eine Lösungsidee ?