2013-04-23 17 views
8

ich lerne zu verwenden Irrlicht on Android. Letzten Monat habe ich an dem Treiber gearbeitet, basierend auf openGL es 1.0, was gut funktioniert hat (ich benutze 1.0, weil, wenn ich versuchte, das Beispiel basierend auf dem Treiber 2.0 auszuführen, das Ergebnis sehr seltsam wurde). Laden von Mesh ist in Ordnung, aber was mich verwirrt ist, dass die Textur nicht korrekt angezeigt werden kann. Code Render ist wie folgt:irrlicht android on opengl es 2.0 treiber

smgr = device->getSceneManager(); 
guienv = device->getGUIEnvironment(); 

stringc myDir = gSdCardPath; 
myDir += "/Irrlicht"; 
device->getFileSystem()->changeWorkingDirectoryTo(myDir.c_str()); 

stringc sydneyFilename = "/Irrlicht/sydney.md2"; 
mesh=smgr->getMesh("/sdcard/Irrlicht/sydney.md2"); 
if (!mesh) { 
    device->drop(); 
    __android_log_print(ANDROID_LOG_INFO, "Irrlicht", "cannot getMesh"); 
    return; 
} 
nodeSydney = smgr->addAnimatedMeshSceneNode(mesh); 

if (nodeSydney) { 
    nodeSydney->setMaterialFlag(EMF_LIGHTING, false); 
    nodeSydney->setMD2Animation(scene::EMAT_STAND); 
    stringc sydneyTextureFilename = "/Irrlicht/sydney.bmp"; 
    texture=driver->getTexture("/sdcard/Irrlicht/sydney.bmp"); 
    if (!texture) 
     LOGI("sydney.bmp load failed"); 
    else{ 
     nodeSydney->setMaterialTexture(0,texture); 
     LOGI("sydney.bmp load successfully"); 
    } 
    nodeSydney->setPosition(core::vector3df(0.0f,0.0f,0.0f)); 
} 
smgr->addCameraSceneNode(0, vector3df(0, 10, -50), vector3df(0, 5, 0)); 

receiver = new AndroidEventReceiver(context); 
device->setEventReceiver(receiver); 

Alles ist das gleiche wie das Original-Code mit Ausnahme der entfernt Kommentare und die Position der Knoten, und ich bin auch sicher, dass im Code benötigten Dateien auf das richtige Verzeichnis sind.

Kann mir also jemand helfen, der die Erfahrung mit Irrlicht auf Android hat?

+1

Nun, es wäre wahrscheinlich besser zu beschreiben, was "nicht korrekt" in Ihrem Kontext bedeutet. Sie zeigen überhaupt nicht, sie sind auf dem Kopf, unheimliche Farben? Ein Bild wäre wahrscheinlich auch nützlich. –

Antwort

1

Wir haben das gleiche Problem. Die Länge der einheitlichen Namen ist das einzige Problem. Einheitliche Namen werden im Array SBuiltinShaderUniformNames [] in den Klassen COGLES2FixedpipelineShader, COGLES2NormalMapShader usw. gespeichert. Verkürzen Sie die einheitlichen Namen auf die Länge von weniger als 10 Zeichen.

Bearbeiten: Verkürzen der einheitlichen Namen wird dieses Problem beheben.

+0

Vielen Dank für Ihre Antwort. Wählen Sie Ihre Antwort, um mehr Menschen, die das gleiche Problem haben, wissen zu lassen, warum und wie zu tun :) – EpisodeXI

+0

Wenn Ihr Problem durch Verkürzen von einheitlichen Namen gelöst wurde, markieren Sie diese als richtige Antwort, um die Leute klar zu machen. – VivekParamasivam

+0

Sorry aber ich weiß nicht, ob das stimmt, ich habe Irrlicht auf Android aufgegeben und stattdessen libgdx benutzt. Wenn jemand, der Ihre Methode verwendet und findet, dass es funktioniert, werde ich dies als richtige Antwort markieren. – EpisodeXI