Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中加载GLES中的Multi-texture.obj文件_Android_Opengl Es 2.0_Texture Mapping_Render To Texture_Multitexturing - Fatal编程技术网

如何在android中加载GLES中的Multi-texture.obj文件

如何在android中加载GLES中的Multi-texture.obj文件,android,opengl-es-2.0,texture-mapping,render-to-texture,multitexturing,Android,Opengl Es 2.0,Texture Mapping,Render To Texture,Multitexturing,我必须在android中创建3d obj文件。我已经搜索并找到了许多论坛,现在我能够成功加载obj+mtl文件。但我对obj和mtl文件有很多纹理文件的问题。在可能的情况下,在mtl中,每个面都有一个纹理(.png)。如何在GLES中加载这种类型的obj文件? 是否可以在android Opegls中加载多纹理obj? 我有min3d、3dmodelviewer和arjpct库,但没有任何用处。如果可以加载多纹理对象,请提供帮助 对于multi_纹理,我已经这样做了 mTextureHandl

我必须在android中创建3d obj文件。我已经搜索并找到了许多论坛,现在我能够成功加载obj+mtl文件。但我对obj和mtl文件有很多纹理文件的问题。在可能的情况下,在mtl中,每个面都有一个纹理(.png)。如何在GLES中加载这种类型的obj文件? 是否可以在android Opegls中加载多纹理obj? 我有min3d、3dmodelviewer和arjpct库,但没有任何用处。如果可以加载多纹理对象,请提供帮助

对于multi_纹理,我已经这样做了

 mTextureHandle = setTexture(obj, textureId,GLES20.GL_TEXTURE1);
        ByteArrayInputStream textureIs0 = new ByteArrayInputStream(obj.getTextureData().get(0));
        int textureId0 = GLUtil.loadTexture(textureIs0);
        mTextureHandle = setTexture(obj, textureId0, GLES20.GL_TEXTURE0);
        ByteArrayInputStream textureIs2 = new ByteArrayInputStream(obj.getTextureData().get(2));
        int textureId2 = GLUtil.loadTexture(textureIs2);
        mTextureHandle = setTexture(obj, textureId2, GLES20.GL_TEXTURE2);
        ByteArrayInputStream textureIs3 = new ByteArrayInputStream(obj.getTextureData().get(3));
        int textureId3 = GLUtil.loadTexture(textureIs3);
        mTextureHandle = setTexture(obj, textureId3, GLES20.GL_TEXTURE3);
        ByteArrayInputStream textureIs4 = new ByteArrayInputStream(obj.getTextureData().get(4));
        int textureId4 = GLUtil.loadTexture(textureIs4);
        mTextureHandle = setTexture(obj, textureId2, GLES20.GL_TEXTURE4);
        ByteArrayInputStream textureIs5 = new ByteArrayInputStream(obj.getTextureData().get(5));
        int textureId5 = GLUtil.loadTexture(textureIs5);
        mTextureHandle = setTexture(obj, textureId5, GLES20.GL_TEXTURE5);
        ByteArrayInputStream textureIs6 = new ByteArrayInputStream(obj.getTextureData().get(6));
        int textureId6 = GLUtil.loadTexture(textureIs6);
        mTextureHandle = setTexture(obj, textureId6, GLES20.GL_TEXTURE6);
        ByteArrayInputStream textureIs7 = new ByteArrayInputStream(obj.getTextureData().get(7));
        int textureId7 = GLUtil.loadTexture(textureIs7);
        mTextureHandle = setTexture(obj, textureId7, GLES20.GL_TEXTURE7);
        ByteArrayInputStream textureIs8 = new ByteArrayInputStream(obj.getTextureData().get(8));
        int textureId8 = GLUtil.loadTexture(textureIs8);
        mTextureHandle = setTexture(obj, textureId8, GLES20.GL_TEXTURE8);
        ByteArrayInputStream textureIs9 = new ByteArrayInputStream(obj.getTextureData().get(9));
        int textureId9 = GLUtil.loadTexture(textureIs9);
        mTextureHandle = setTexture(obj, textureId9, GLES20.GL_TEXTURE9);
公共静态int-loadTexture(最终输入流为){
Log.v(“GLUtil”,“从流加载纹理…”);
最终整数[]纹理句柄=新整数[1];
GLES20.glGenTextures(1,textureHandle,0);
GLUtil.checkGlError(“GLGENTEXTRES”);
if(textureHandle[0]==0){
抛出新的RuntimeException(“加载纹理时出错”);
}
Log.v(“GLUtil”,“Handler:”+textureHandle[0]);
final BitmapFactory.Options=new BitmapFactory.Options();
//默认情况下,Android会根据设备的分辨率和所需的时间对位图应用预缩放
//您放置图像的资源文件夹。我们根本不希望Android缩放位图,所以可以肯定,
//我们设为假。
options.inScaled=false;
//读入资源
最终位图位图=BitmapFactory.decodeStream(is,null,选项);
如果(位图==null){
抛出新的运行时异常(“无法加载位图”);
}
//绑定到OpenGL中的纹理
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D,textureHandle[0]);
GLUtil.checkGlError(“glBindTexture”);
GLUtils.texImage2D(GLES20.GL_纹理_2D,0,位图,0);
GLUtil.checkGlError(“texImage2D”);
bitmap.recycle();
GLES20.glTexParameteri(GLES20.GL_纹理_2D,GLES20.GL_纹理_最小_过滤器,GLES20.GL_最近);
GLES20.glTexParameteri(GLES20.GL_纹理_2D,GLES20.GL_纹理_MAG_过滤器,GLES20.GL_最近);
Log.v(“GLUtil”,“加载纹理正常”);
返回textureHandle[0];
}