A
Andi0310
Neues Mitglied
- 0
Hallo.
Vieleicht kann mir jemand weiterhelfen, ich habe folgendes Problem.
Textur wird über Bitmapfactory.DecodeResource einwandfrei eingelesen !=null wird aber nicht gerendert.
Das Object erscheint nur in seiner Material Amb Dif einstellung.
Was mache ich Falsch ?
Ich Compiliere und Code mit AIDE direct auf Android.
Kann jemand helfen ?
Danke !
Vieleicht kann mir jemand weiterhelfen, ich habe folgendes Problem.
Textur wird über Bitmapfactory.DecodeResource einwandfrei eingelesen !=null wird aber nicht gerendert.
Das Object erscheint nur in seiner Material Amb Dif einstellung.
Was mache ich Falsch ?
Code:
package com.Trials;
import java.nio.*;
import javax.microedition.khronos.opengles.*;
import android.opengl.*;
import android.graphics.*;
import android.content.*;
import android.net.http.*;public class Quad
{
public FloatBuffer vertexBuffer,
normalBuffer,
uvBuffer;
public ShortBuffer indexBuffer;
private float[] matAmbDif={0f,.5f,.8f,1f};
private float[] vertices={-3f,0f,-3f,
3f,0f,-3f,
3f,0f, 3f,
-3f,0f, 3f};
private short[] indices={0,1,2,
0,2,3};
private float[] normals={0f,1f,0f,
0f,1f,0f,
0f,1f,0f,
0f,1f,0f};
private float[] uv={1f,0f,
1f,1f,
0f,1f,
0f,0f};
private int[] texturPointer;
Context context;
public Quad(GL10 gl10,Context context)
{
GL11 gl=(GL11)gl10;
this.context=context;
ByteBuffer vbb=ByteBuffer.allocateDirect(vertices.length*4);
vbb.order(ByteOrder.nativeOrder());
vertexBuffer=vbb.asFloatBuffer();
vertexBuffer.put(vertices);
vertexBuffer.position(0);
ByteBuffer nbb=ByteBuffer.allocateDirect(normals.length*4);
nbb.order(ByteOrder.nativeOrder());
normalBuffer=nbb.asFloatBuffer();
normalBuffer.put(normals);
normalBuffer.position(0);
ByteBuffer uvbb=ByteBuffer.allocateDirect(uv.length*4);
uvbb.order(ByteOrder.nativeOrder());
uvBuffer=uvbb.asFloatBuffer();
uvBuffer.put(uv);
uvBuffer.position(0);
ByteBuffer ibb=ByteBuffer.allocateDirect(indices.length*2);
ibb.order(ByteOrder.nativeOrder());
indexBuffer=ibb.asShortBuffer();
indexBuffer.put(indices);
indexBuffer.position(0);
Bitmap textur=BitmapFactory.decodeResource(context.getResources(),R.drawable.test);
// Hier wird !=null zurückgegeben.
texturPointer=new int[1];
gl.glGenTextures(1,this.texturPointer,0);
gl.glBindTexture(GL11.GL_TEXTURE_2D,texturPointer[0]);
gl.glTexParameterf(GL11.GL_TEXTURE_2D,GL11.GL_TEXTURE_MIN_FILTER,GL11.GL_NEAREST);
gl.glTexParameterf(GL11.GL_TEXTURE_2D,GL11.GL_TEXTURE_MAG_FILTER,GL11.GL_LINEAR);
GLUtils.texImage2D(GL11.GL_TEXTURE_2D,0,textur,0);
textur.recycle();
}
public void Draw(GL10 gl10)
{
GL11 gl=(GL11)gl10;
gl.glEnable(GL11.GL_TEXTURE_2D);
gl.glBindTexture(GL11.GL_TEXTURE_2D,texturPointer[0]);
// Eigenschaften für das Material festlegen
gl.glMaterialfv(GL11.GL_FRONT_AND_BACK,GL11.GL_AMBIENT_AND_DIFFUSE,matAmbDif,0);
gl.glEnableClientState(GL11.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
gl.glEnableClientState(GL11.GL_NORMAL_ARRAY);
gl.glVertexPointer(3,GL11.GL_FLOAT,0,vertexBuffer);
gl.glTexCoordPointer(2,GL11.GL_FLOAT,0,uvBuffer);
gl.glDrawElements(GL11.GL_TRIANGLES,indices.length,GL11.GL_UNSIGNED_SHORT,indexBuffer);
gl.glDisableClientState(GL11.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
gl.glDisableClientState(GL11.GL_NORMAL_ARRAY);
gl.glDisable(GL11.GL_TEXTURE_2D);
}
}
Ich Compiliere und Code mit AIDE direct auf Android.
Kann jemand helfen ?
Danke !