मैं इसी तरह की स्थिति में था।
जिस तरह से मैंने ओपनजीएल के साथ शुरुआत की, शुरुआत के साथ बहुत ही बुनियादी GLSurfaceView नमूने/डेमो को देखकर शुरू किया।
प्रारंभ करें, अपनी ऐप गतिविधि सेट करके, और मूल कैनवास सेट अप करें।
प्रतिकृति द्वीप स्रोत कोड फ़ाइल पर एक लूट लें: GameRenderer.java 2 डी (स्प्राइट) प्रतिपादन के लिए उचित जीएल झंडे के साथ अपने कैनवास को कैसे सेट अप करें। http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest
इस सवाल का जहां मैं अपने खुद के कोड पोस्ट देखें:: यदि आप अपने कैनवास सेट करने के बाद Using OpenGL to replace Canvas - Android
, आप कुछ फोन करके शुरू आप वास्तव में प्रतिकृति द्वीप के एक ही लेखक द्वारा SpriteMethodTest पर एक नज़र रखना चाहिए जैसे: gl.glClear (GL10.GL_COLOR_BUFFER_BIT);
उसके बाद आप एक स्प्राइट प्रस्तुत करने के लिए तैयार हैं। पहले, आप एक बनावट में स्प्राइट लोड करने के लिए की आवश्यकता होगी: http://tkcodesharing.blogspot.com/2008/05/working-with-textures-in-androids.html
यह कैसे मैं यह कर, मेरे पास है: http://qdevarena.blogspot.com/2009/02/how-to-load-texture-in-android-opengl.html
हालांकि, इस ट्यूटोरियल है कि वास्तव में मुझे लोड हो रहा है स्प्राइट के साथ बाहर की मदद की है एक वर्ग के नाम पर रखा गया Texture.java:
public class Texture
{
/*Begin public declarations*/
public float x = 0;
public float y = 0;
public float z = 0;
public float width = 0;
public float height = 0;
/*Begin Private Declarations*/
private GL10 gl;
public int[] texture; //holds the texture in integer form
private int texture_name;
private int[] mCropWorkspace;
private final BitmapFactory.Options sBitmapOptions;
/*Begin Methods*/
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;
//Log.d(TAG, "Initializing Texture Object");
}
public int get_texture_name()
{
return texture_name;
}
/*Loads the resource to memory*/
public boolean Load(Bitmap bitmap) //rename this to glLoad and don't have it as an initializer parameter
{
/*many thanks to sprite method test if this works*/
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];
//Log.d(TAG, "Generated texture: " + textureName);
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);
}
//Log.d(TAG, "Loaded texture: " + textureName);
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 डी स्प्राइट्स ड्राइंग के साथ जाना चाहिए। मैंने देखा है कि इस पर वास्तव में कोई सीधा ट्यूटोरियल नहीं है। उम्मीद है कि भविष्य में मैं अपने देव ब्लॉग में एक पोस्ट करूंगा: http://developingthedream.blogspot.com/
'और मैं इसे सीखने के लिए तैयार नहीं हूं' यह प्रश्न शुरू करने के लिए बहुत अच्छा तरीका नहीं है – Falmarri
कृपया मेरा पूरा प्रश्न पढ़ें, आपने इसका एक संवेदनशील हिस्सा लिया और सबसे महत्वपूर्ण समापन छोड़ दिया: "मैं नहीं हूं" ओ ओपनजीएल पहले से ही नहीं जानता है, और मैं इसे सीखने को तैयार नहीं हूं, मैं ओपनजीएल ईएस को सीधे सीखना चाहता हूं क्योंकि मैं एंड्रॉइड में अपने विकास को लक्षित कर रहा हूं " ओपनजीएल सीखने का क्या मतलब है अगर मैं केवल ओपनजीएल के साथ काम करने जा रहा हूं एम्बेडेड उपकरणों पर ईएस? चीयर्स – CoolStraw
यह देखते हुए कि ओपनजीएल ईएस ज्यादातर ओपनजीएल का सबसेट है, मुझे यह कहने का मुद्दा नहीं दिख रहा है कि आप ओपनजीएल सीखने वाले नहीं हैं, क्योंकि परिभाषा के अनुसार आपको यह करना होगा। –