ฉันอยู่ในสถานการณ์ที่คล้ายกัน
วิธีที่ฉันเริ่มต้นด้วย openGL โดยเริ่มจากการดูตัวอย่าง / สาธิต GLSurfaceView ขั้นพื้นฐาน
เริ่มต้นด้วยการตั้งค่ากิจกรรมแอปของคุณและตั้งค่าพื้นที่ทำงานพื้นฐาน
จับรางวัลที่ไฟล์ซอร์สโค้ดเกาะจำลอง: GameRenderer.java สำหรับวิธีการตั้งค่าผืนผ้าใบของคุณด้วยแฟล็ก GL ที่เหมาะสมสำหรับการเรนเดอร์ 2D (สไปรท์) คุณควรดู SpriteMethodTest โดยผู้เขียนคนเดียวกันของเกาะจำลอง: http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest
ดูคำถามนี้ที่ฉันโพสต์รหัสของตัวเอง: การใช้ OpenGL เพื่อแทนที่ Canvas - Android
หลังจากที่คุณตั้งค่าผืนผ้าใบของคุณแล้วคุณจะเริ่มต้นด้วยการเรียกสิ่งที่ต้องการ: gl.glClear (GL10.GL_COLOR_BUFFER_BIT);
หลังจากนั้นคุณก็พร้อมที่จะสร้างสไปรท์ ขั้นแรกคุณจะต้องโหลดสไปรต์ลงในพื้นผิว: http://qdevarena.blogspot.com/2009/02/how-to-load-texture-in-android-opengl.html
อย่างไรก็ตามนี่เป็นบทช่วยสอนที่ช่วยฉันในการโหลดสไปรต์:
http://tkcodesharing.blogspot.com/2008/05/working-with-textures-in-androids.html
นี่คือวิธีที่ฉันทำฉันมีคลาสชื่อ Texture.java:
public class Texture
{
public float x = 0;
public float y = 0;
public float z = 0;
public float width = 0;
public float height = 0;
private GL10 gl;
public int[] texture;
private int texture_name;
private int[] mCropWorkspace;
private final BitmapFactory.Options sBitmapOptions;
public Texture( GL10 gl_obj )
{
gl = gl_obj;
texture = new int[1];
mCropWorkspace = new int[4];
sBitmapOptions = new BitmapFactory.Options();
sBitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;
}
public int get_texture_name( )
{
return texture_name;
}
public boolean Load( Bitmap bitmap )
{
if ( gl == null )
{
Log.e(TAG, "Failed to load resource. Context/GL is NULL");
return false;
}
int error;
int textureName = -1;
gl.glGenTextures(1, texture, 0);
textureName = texture[0];
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureName);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
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);
gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_REPLACE);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
mCropWorkspace[0] = 0;
mCropWorkspace[1] = bitmap.getHeight();
mCropWorkspace[2] = bitmap.getWidth();
mCropWorkspace[3] = -bitmap.getHeight();
((GL11) gl).glTexParameteriv(GL10.GL_TEXTURE_2D,
GL11Ext.GL_TEXTURE_CROP_RECT_OES, mCropWorkspace, 0);
error = gl.glGetError();
if (error != GL10.GL_NO_ERROR)
{
Log.e(TAG, "GL Texture Load Error: " + error);
}
return true;
}
}
จากนั้นในวิธี onDrawFrame () ของฉันฉันก็ทำ:
Texture texture = ...
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture.texture[0]);
((GL11Ext) gl).glDrawTexfOES((float)(draw_x + 0.5), (float)(draw_y + 0.5), 0, tile_width, tile_height);
สิ่งนี้จะช่วยให้คุณไปกับการวาดสไปรต์ 2 มิติบนผืนผ้าใบ openGL ฉันสังเกตเห็นว่าไม่มีบทช่วยสอนที่ตรงไปตรงมาเกี่ยวกับเรื่องนี้ หวังว่าในอนาคตฉันจะโพสต์ไว้ในบล็อกนักพัฒนาของฉัน: http://developingthedream.blogspot.com/
and I'm not willing to learn it
นั่นไม่ใช่วิธีที่ดีในการตั้งคำถามที่นี่