【问题标题】:Android - OpenGl es with min3d some textures draw and some dontAndroid - 带有 min3d 的 OpenGL es 一些纹理绘制而一些不绘制
【发布时间】:2012-02-29 11:58:48
【问题描述】:

我动态地将纹理加载到对象,因为它们需要在我的更新方法中创建,但由于某种原因,大多数绘制到屏幕的对象都是在没有纹理的情况下完成的。有时,所有的纹理都被绘制出来了,然后它们突然消失了,所有的对象都被绘制了,但只是白色的。我没有注意到 logcat 中的任何警告,并且应用程序永远不会崩溃,所以我现在只是有点迷失,可以使用正确的方向推动。

这是我在更新场景方法中使用的代码:

 updateScene(){

 //rotate and move stuff removed

 if(!scene._children.contains(viewer.getObj(i).getBox())){
                scene.addChild(viewer.getObj(i).getBox());
                dataView.dataHandler.getMarker(i).addTexture();
                }

然后这是我使用的将纹理加载到盒子的代码:

public void addTexture(){
    if(bitmap1!=null){
        try{
            String bmt1 = "bmt"+this.toString();
            if(!Shared.textureManager().contains(bmt1)){
            Shared.textureManager().addTextureId(bitmap1,bmt1,false);
            box.texturesEnabled(true);
            box.textures().addById(bmt1);
            //box.normalsEnabled(false);
            }else if(Shared.textureManager().contains(bmt1)){
                Log.w("Texture "+bmt1+" already exists","Texture "+bmt1+" already exists");
            }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
}

对于为什么纹理有时会绘制有时不会绘制有什么想法吗?

【问题讨论】:

    标签: android opengl-es textures


    【解决方案1】:

    我想通了。它与我的 min3d 调用无关,但是当我插入要用作纹理的位图时,正在使用的位图是空的,没有像素数据但不是空的。有点怪。

    【讨论】:

    • 还要确保纹理大小是 2 的幂。图像 500x500 不起作用。使其成为 512x512。
    • 是的,我这样做了,但我必须在传递位图的任何地方都将 BitmapFactory.Options.inScale 设置为 false,这样 android 系统就不会调整我的位图大小。它正在重新调整它们并将它们从二的幂中排除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多