Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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
Java 如何让rajawali工作(git教程1)_Java_Android_Opengl Es 2.0_Rajawali - Fatal编程技术网

Java 如何让rajawali工作(git教程1)

Java 如何让rajawali工作(git教程1),java,android,opengl-es-2.0,rajawali,Java,Android,Opengl Es 2.0,Rajawali,我是android开发的新手,我知道基本的活动、地图、sqlite等。 我希望能够实现一些3D对象,以便能够在我的应用程序中与之交互。经过一番搜索,我发现拉贾瓦利似乎是最好的方法。正如您所做的,我从第一个教程开始,阅读示例文档中的源代码。 我迷路的地方是我一字不差地遵循了教程,由于脚本中的错误,我无法运行应用程序。如果以前有人用过拉贾瓦利,我会告诉他我哪里出了问题。(本教程上一次更新是在2个月前,因此它是最新的) 这是我的源代码 主要活动: package rajawali.tutorials;

我是android开发的新手,我知道基本的活动、地图、sqlite等。 我希望能够实现一些3D对象,以便能够在我的应用程序中与之交互。经过一番搜索,我发现拉贾瓦利似乎是最好的方法。正如您所做的,我从第一个教程开始,阅读示例文档中的源代码。 我迷路的地方是我一字不差地遵循了教程,由于脚本中的错误,我无法运行应用程序。如果以前有人用过拉贾瓦利,我会告诉他我哪里出了问题。(本教程上一次更新是在2个月前,因此它是最新的)

这是我的源代码

主要活动:

package rajawali.tutorials;

import rajawali.RajawaliActivity;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends RajawaliActivity {
    private Renderer mRenderer;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mRenderer = new Renderer(this);
        mRenderer.setSurfaceView(mSurfaceView);
        super.setRenderer(mRenderer);
    }   
}
渲染器:

package rajawali.tutorials;

import javax.microedition.khronos.opengles.GL10;

import android.content.Context;
import rajawali.lights.DirectionalLight;
import rajawali.materials.textures.ATexture.TextureException;
import rajawali.materials.textures.Texture;
import rajawali.primitives.Sphere;
import rajawali.renderer.RajawaliRenderer;

public class Renderer extends RajawaliRenderer {

    private DirectionalLight mLight;
    Sphere mSphere;

    public Renderer(Context context) {
        super(context);
        setFrameRate(60);
    }
    public void initScene() {
        mLight = new DirectionalLight(1f, 0.2f, -1.0f);
        mLight.setColor(1.0f, 1.0f, 1.0f);
        mLight.setPower(2);

        try {
            *DiffuseMaterial* material = new *DiffuseMaterial*(); //there is an error here (DiffuseMaterial cannot be rsolved as a type)
            material.addTexture(new *Texture(R.drawable.earthtruecolor_nasa_big)*);  //here (constructor Texture(int) cannot be defined)
            mSphere = new Sphere(1, 24, 24);
            mSphere.setMaterial(material);
            mSphere.*addLight(mLight)*;  //and here (The method addLight(DirectionalLight) is undefined for the type Sphere)
            addChild(mSphere);
        } catch (TextureException e) {
            e.printStackTrace();
        }
        getCurrentCamera().setZ(4.2f);
    }

    @Override 
    public void onDrawFrame(GL10 glUnused) {
        super.onDrawFrame(glUnused);
        mSphere.setRotY(mSphere.getRotY() + 1);
    }

}

如果我能帮上忙的话,我真的不想成为填鸭式代码,但似乎错误在“DiffuseMeterial”中。除了使用min3D或Rajawali,为什么还有更好的方法来操作3D对象?

我也一直在尝试使用下一个代码运行这个Rajawali教程。

拉贾瓦利特类



拉贾瓦利特酒店

请参阅以下更改:

  • sphere
    对象声明为
    Object3D
    而不是
    sphere
  • 通过
    物料
    更改
    扩散物料
    ,以进行物料申报
  • 更改参数以获取
    纹理
    。第一个参数是自定义标识符,第二个参数是资源id
  • 添加行
    material.setColorInfluence(0)加载纹理后,如果不添加这一行,“心”将变为红色(我不知道为什么)
  • sphere
    对象替换为场景对象(使用
    getCurrentScene
    方法访问),以调用
    addLight
    方法
  • 添加try/catch for line
    material.addTexture()
    ,因为此方法现在抛出TextureException
  • 添加
    getCurrentCamera().setZ(4.2f)到场景的末尾

  • 这似乎与
    Rajawali
    的版本有关

    上面写着不要使用
    master
    分支:

    无论您选择克隆还是下载,您都可能希望使用其中一个发布标签。库和示例的主分支都用于开发,对于生产代码来说应该被认为是不稳定的。当我们发布一个稳定的版本时,它将被标记。如果要克隆,只需签出标记即可

    如果使用
    git
    克隆了
    Rajawali
    ,则需要从标记签出。要列出标记,请执行以下操作:

    $ git tag
    v0.9
    
    在撰写本文时,
    v0.9
    是您唯一的选择

    $ git checkout v0.9
    
    现在,您将拥有可用的
    扩散材质。但是,其他一些类仍然缺失

    编辑:


    本教程似乎既不适用于
    v0.9
    ,也不适用于最新的主分支。我制作了教程1的一个工作版本,它是

    您还可以使用我编写的RajawaliExamples应用程序作为使用主分支的演示,该应用程序由提供的示例组成


    另外,为了澄清迪恩斯的话,在那里发表的声明劝阻人们不要因为下面的API发生了变化而惊慌失措,这在jwoolston为支持场景图进行重大更改时最为重要。大部分工作已经完成,如果完成,api可能会从当前状态发生重大变化,因为其他主要项目已经完成。这些项目包括动画、更多解析选项、灵活的渲染等。

    太棒了,谢谢。我想知道为什么教程不起作用。其他教程是这样的吗?不确定,我没有尝试再做一个教程,但看起来教程是为rajawali.super.addChild的早期版本编写的,似乎不再有效
    getCurrentScene().addChild
    确实有效。我已经在Google+社区网站上发布了这个答案的链接,这里=>
    $ git tag
    v0.9
    
    $ git checkout v0.9