Возможно, вы захотите взглянуть на руководства NeHe для Android. Они подробно расскажут об этом и покажут, что вам нужно делать.
В частности, урок, который вы ищете, здесь:
http://insanitydesign.com/wp/projects/nehe-android-ports/
Урок 6
Возможно, вы не связываете и не включаете буферы, вот фрагмент из учебника:
public void draw(GL10 gl) {
//Bind our only previously generated texture in this case
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
//Point to our buffers
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
//Set the face rotation
gl.glFrontFace(GL10.GL_CCW);
//Enable the vertex and texture state
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
//Draw the vertices as triangles, based on the Index Buffer information
gl.glDrawElements(GL10.GL_TRIANGLES, indices.length, GL10.GL_UNSIGNED_BYTE, indexBuffer);
//Disable the client state before leaving
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
}
Кредит: Insanity Design - http://insanitydesign.com/
Edit:
Я вижу, что вы спрашиваете. Вот еще код, который сможет вам помочь. Если вы посмотрите в приложение SpriteMethodTest для Android:
http://apps -for-android.googlecode.com / SVN / багажник / SpriteMethodTest
Вы заметите, что Крис Пруэтт (разработчик этого приложения) показывает вам множество способов рисования текстур на экране. Ниже приведен код (я считаю), который вы ищете.
Grid.java
public void beginDrawingStrips(GL10 gl, boolean useTexture) {
beginDrawing(gl, useTexture);
if (!mUseHardwareBuffers) {
gl.glVertexPointer(3, mCoordinateType, 0, mVertexBuffer);
if (useTexture) {
gl.glTexCoordPointer(2, mCoordinateType, 0, mTexCoordBuffer);
}
} else {
GL11 gl11 = (GL11)gl;
// draw using hardware buffers
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, mVertBufferIndex);
gl11.glVertexPointer(3, mCoordinateType, 0, 0);
gl11.glBindBuffer(GL11.GL_ARRAY_BUFFER, mTextureCoordBufferIndex);
gl11.glTexCoordPointer(2, mCoordinateType, 0, 0);
gl11.glBindBuffer(GL11.GL_ELEMENT_ARRAY_BUFFER, mIndexBufferIndex);
}
}
// Assumes beginDrawingStrips() has been called before this.
public void drawStrip(GL10 gl, boolean useTexture, int startIndex, int indexCount) {
int count = indexCount;
if (startIndex + indexCount >= mIndexCount) {
count = mIndexCount - startIndex;
}
if (!mUseHardwareBuffers) {
gl.glDrawElements(GL10.GL_TRIANGLES, count,
GL10.GL_UNSIGNED_SHORT, mIndexBuffer.position(startIndex));
} else {
GL11 gl11 = (GL11)gl;
gl11.glDrawElements(GL11.GL_TRIANGLES, count,
GL11.GL_UNSIGNED_SHORT, startIndex * CHAR_SIZE);
}
}
В частности, вы захотите взглянуть на код, где он принимает ложную ветвь! MUseHardwareBuffers. Я предлагаю вам взглянуть на полный файл Grid.java, чтобы лучше представить, как это сделать, потому что он также устанавливает указатели текстуры и позволяет OpenGL начать рисование.
На заметку: Я предлагаю прочитать это и от Криса:
http://www.scribd.com/doc/16917369/Writing-Real-Time-Games-for-Android
Он рассказывает о том, что делает это приложение, и что он нашел самым эффективным способом рисования текстур.