2010-08-30 12 views
8

मैं कैनवास आधारित प्रतिपादन प्रणाली है कि मैं पहले से ही तेजी से ओपन-एस की सतह के साथ है बदलने का प्रयास कर रहा हूँ, हालांकि, मैं एक ऐसे में अनुरूप करने के लिए एक ओपन रेंडरर प्राप्त नहीं कर पा रहे जिस तरह से यह एक परिप्रेक्ष्य दृश्य के बजाय 2 डी क्षेत्र के रूप में कार्य करता है।ओपन का प्रयोग कैनवास को बदलने के लिए - एंड्रॉयड

 @Override 
    public void onSurfaceChanged(GL10 gl, int width, int height) { 
     gl.glViewport(0, 0, width, height); 
     gl.glMatrixMode(GL10.GL_PROJECTION); 
     gl.glLoadIdentity(); 
     gl.glOrthof(0.0f, width, 0.0f, height, 0.0f, 1.0f); 

     gl.glShadeModel(GL10.GL_FLAT); 
     gl.glEnable(GL10.GL_BLEND); 
     gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
     gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000); 
     gl.glEnable(GL10.GL_TEXTURE_2D); 
    } 

    @Override 
    public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
     gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); 

     gl.glClearColor(0.5f, 0.5f, 0.5f, 1); 
     gl.glShadeModel(GL10.GL_FLAT); 
     gl.glDisable(GL10.GL_DEPTH_TEST); 
     gl.glEnable(GL10.GL_TEXTURE_2D); 

     gl.glDisable(GL10.GL_DITHER); 
     gl.glDisable(GL10.GL_LIGHTING); 

     gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);  
    } 

मैं कैसे सेटअप रेंडरर ताकि अनुवाद कर परिवर्तन अप स्क्रीन पर पिक्सल के साथ मेल खाएंगे होगा:

रेंडरर के लिए मेरे वर्तमान कोड के रूप में निम्नानुसार लग रहा है? (इसलिए दाईं ओर 5 का अनुवाद करने से यह 5 पिक्सल हो जाएगा)

+0

कैनवास कन्स्ट्रक्टर को केवल एक जीएल उदाहरण पास क्यों न करें। http://developer.android.com/reference/android/graphics/Canvas.html –

+0

क्या बिटमैप्स ड्राइंग में मूल कैनवास पर ओपनजीएल के स्पीड लाभ बनाए रखेंगे? – GuyNoir

+0

इसके लिए कैनवास का उपयोग न करें। यह दस्तावेज के बावजूद काम नहीं करता है। इसके अलावा, आईआरसी में वार्ता के अनुसार, कैनवास के डेवलपर ने इसे भविष्य के संस्करणों के लिए पहले ही एपीआई से हटा दिया है। – Moncader

उत्तर

9

कृपया ध्यान दें कि ओपनजीएल में वाई समन्वय उलटा हुआ है। अन्यथा सभी एक ही हैं। http://code.google.com/p/replicaisland/

यहाँ क्या मैं अपने खुद के कोड में उपयोग है::
सही झंडे के रूप में, मैं तुम्हें खुला स्रोत एंड्रॉयड खेल प्रतिकृति द्वीप की जाँच की सिफारिश

public void onSurfaceChanged(GL10 gl, int width, int height) 
{ 
    mViewWidth = width; 
    mViewHeight = height; 

    gl.glViewport(0, 0, mViewWidth, mViewHeight); 
    gl.glLoadIdentity(); 
    GLU.gluOrtho2D(gl, 0, mViewWidth, mViewHeight, 0); 
} 

public void onSurfaceCreated(GL10 gl, EGLConfig config) 
{ 
    gl.glClearColor(0.5f, 0.5f, 0.5f, 1); 
    gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); 
    gl.glShadeModel(GL10.GL_FLAT); 
    gl.glDisable(GL10.GL_DEPTH_TEST); 
    gl.glEnable(GL10.GL_BLEND); 
    gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA); 

    gl.glViewport(0, 0, mViewWidth, mViewHeight); 
    gl.glMatrixMode(GL10.GL_PROJECTION); 
    gl.glLoadIdentity(); 
    gl.glEnable(GL10.GL_BLEND); 
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
    gl.glShadeModel(GL10.GL_FLAT); 
    gl.glEnable(GL10.GL_TEXTURE_2D); 

    GLU.gluOrtho2D(gl, 0, mViewWidth, mViewHeight, 0); 
} 

कहाँ mViewWidth & mViewHeight के आकार के होते हैं प्रदर्शन।

+0

मैं तथापि कोड अनुकूलन और टाइल आधारित प्रणाली के साथ इतना मोटा है, कि यह सरल कोड मैं स्क्रीन करने के लिए कुछ बनावट प्रतिपादन के लिए की जरूरत है खोजने के लिए काफी बेकार है है,। – GuyNoir

+0

मैं एक समान मुद्दा था और भाग खोजने कोई समस्या नहीं थी जहां प्रतिकृति द्वीपों सेटअप जीएल कैनवास के लेखक। यह GameRenderer.java नामक फ़ाइल में है। मैंने सेटअप कोड को शामिल करने के लिए अपनी मूल प्रतिक्रिया संपादित की है। –

+0

ठीक है, धन्यवाद। हालांकि यह अभी भी मेरी समग्र कोड संरचना को बदलने के मामले में काफी काम नहीं कर रहा है। गैर-बेस -2 आकारों में बनावट को स्टोर करने का कोई तरीका है? अगर वहाँ नहीं है, यह वैसे भी OpenGL का उपयोग (मैं एंड्रॉयड की मेमरी सीमा धक्का कर रहा हूँ पहले से ही) की परेशानी वास्तव में इसके लायक नहीं है। – GuyNoir

संबंधित मुद्दे