私はOpenGLを使い始めるばかりで、いくつかの基本チュートリアルを扱っています。 しかし、私はテクスチャで三角形を作成しようとします。 それは私がクラスGLSurfaceView
でIllegalArgumentException
を取得する最初の時間glEnableCLientState()
を呼び出した後、このIllegalArgumentException GLSurfaceView
public class demo_Textur extends GameActivity implements GameListener
{
private FloatBuffer vertices;
private FloatBuffer texCoords;
private int texturID;
public void onCreate(Bundle savedInstance)
{
super.onCreate(savedInstance);
setGameListner(this);
}
@Override
public void setup(GameActivity activity, GL10 gl)
{
ByteBuffer buffer = ByteBuffer.allocate(3*3*4);
buffer.order(ByteOrder.nativeOrder());
vertices = buffer.asFloatBuffer();
vertices.put(-0.5f);
vertices.put(-0.5f);
vertices.put(0);
vertices.put(0.5f);
vertices.put(-0.5f);
vertices.put(0);
vertices.put(0);
vertices.put(0.5f);
vertices.put(0);
vertices.rewind();
ByteBuffer textbuffer = ByteBuffer.allocate(3*4*2);
textbuffer.order(ByteOrder.nativeOrder());
texCoords = textbuffer.asFloatBuffer();
texCoords.put(0);
texCoords.put(1);
texCoords.put(1);
texCoords.put(1);
texCoords.put(0.5f);
texCoords.put(0);
texCoords.rewind();
Bitmap bitmap = null;
try
{
bitmap = BitmapFactory.decodeStream(getAssets().open("droid.png"));
} catch (Exception ex)
{
Log.d("Texture Sample", "Couldn't load bitmap 'droid.png'");
}
int[] texturIDs = new int[1];
gl.glGenTextures(1,texturIDs,0);
texturID = texturIDs[0];
gl.glBindTexture(GL10.GL_TEXTURE_2D, texturID);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
bitmap.recycle();
}
@Override
public void mainLoopIteration(GameActivity activity, GL10 gl)
{
gl.glViewport(0, 0, activity.getViewPortWidht(), activity.getViewPortHeight());
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glBindTexture(GL10.GL_TEXTURE_2D, texturID);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texCoords);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertices);
gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);
}
}
のように見えます。
このようなエラーやアイデアを経験したことがある人はいますか?