Я хочу получить простое отображение куба без использования текстурного атласа.Я могу привязать видимость любой из моих текстур в любой момент времени, но не могу сделать больше 1, не говоря уже о 6. Ниже приведен код из моего цикла рисования.
/*Cube to draw */
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, cube);
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextures[2]);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, circleTexCoords);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 4, 4);
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextures[3]);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextures[4]);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 8, 4);
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextures[5]);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 12, 4);
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextures[6]);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 16, 4);
gl.glBindTexture(GL10.GL_TEXTURE_2D,mTextures[7]);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 20, 4);
Я что-то упустил здесь?
Вещи, которые я проверил: Да, я сгенерировал текстурный буфер.Да, я правильно загрузил и привязал текстуры из своих ресурсов.Да, приведенный выше код работает, когда вместо связывания текстур я рисую его с помощью glColorf
Я ценю вашу помощь.
Редактировать:
Как я генерировал куб:
private float box[] = new float[] {
// FRONT
-0.5f, -0.5f, 0.5f,
0.5f, -0.5f, 0.5f,
-0.5f, 0.5f, 0.5f,
0.5f, 0.5f, 0.5f,
// BACK
-0.5f, -0.5f, -0.5f,
-0.5f, 0.5f, -0.5f,
0.5f, -0.5f, -0.5f,
0.5f, 0.5f, -0.5f,
// LEFT
-0.5f, -0.5f, 0.5f,
-0.5f, 0.5f, 0.5f,
-0.5f, -0.5f, -0.5f,
-0.5f, 0.5f, -0.5f,
// RIGHT
0.5f, -0.5f, -0.5f,
0.5f, 0.5f, -0.5f,
0.5f, -0.5f, 0.5f,
0.5f, 0.5f, 0.5f,
// TOP
-0.5f, 0.5f, 0.5f,
0.5f, 0.5f, 0.5f,
-0.5f, 0.5f, -0.5f,
0.5f, 0.5f, -0.5f,
// BOTTOM
-0.5f, -0.5f, 0.5f,
-0.5f, -0.5f, -0.5f,
0.5f, -0.5f, 0.5f,
0.5f, -0.5f, -0.5f,
};
/* Initialize values for cube */
ByteBuffer bb = ByteBuffer.allocateDirect(Float.SIZE * box.length);
bb.order(ByteOrder.nativeOrder());
cube = bb.asFloatBuffer();
cube.put(box);
cube.rewind();
CircleTexCoords - неправильное название, я использую его как единицу координат текстуры для нескольких различных текстур:
bb = ByteBuffer.allocateDirect(Float.SIZE * 8);
bb.order(ByteOrder.nativeOrder());
circleTexCoords = bb.asFloatBuffer();
circleTexCoords.put( new float[] { 0f, 1f, 1f, 1f, 0f, 0f, 1f, 0f});
circleTexCoords.rewind();