我对 android 开发很陌生,我知道基本的活动、地图、sqlite 等。我希望能够实现一些 3D 对象以便能够在我的应用程序中进行交互。经过一番搜索,我发现 rajawali 似乎是最好的方法。正如你所做的那样,我从第一个教程开始并阅读示例文档中的源代码。我迷路的地方是我逐字逐句地遵循教程,并且由于脚本中的错误而无法运行该应用程序。如果有人在我之前使用过 Rajawali,我会赞赏一些关于我哪里出错的指针。(该教程最后一次更新是在 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);
}
}
如果我能帮上忙,我真的不想成为勺子饲料代码,但似乎错误出现在“DiffuseMaterial”中。除了使用 min3D 或 Rajawali 之外,为什么还有更好的方法来操纵 3D 对象?