在opengl es 2.0驱动程序上的irrlicht android

我正在学习使用 Irrlicht on Android.上个月我一直在研究基于openGL es 1.0的驱动程序,它运行良好(我使用1.0,因为当我尝试运行基于驱动程序es 2.0的示例时,结果结果非常好奇怪).加载网格是可以的,但令我困惑的是纹理无法正确显示.
渲染代码如下:
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),5,0));

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

除了删除的注释和节点的位置之外,一切都与原始代码相同,我也确信代码中所需的文件位于正确的目录中.

任何在Android上使用Irrlicht的人都可以帮助我吗?

解决方法

我们面临同样的问题.统一名称的长度是唯一的问题.统一名称将存储在COGLES2Fixedpipelineshader,COGLES2normalMapShader等类中的SBuiltinShaderUniformNames []数组中.将统一名称缩短为10个字符以下的长度.

编辑:缩短统一名称解决此问题.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...