दिलचस्प पोस्ट
ADO.NET में आउटपुट पैरामीटर मान प्राप्त करें क्या मैं कोणीय नियंत्रक में एक फ़ंक्शन उपलब्ध कर सकता हूं? क्या नोड.जेएस के लिए MySQL ड्राइवर उपलब्ध हैं? क्यों एक्सएमएल सीरियलिज़ेबल वर्ग को पैरासेलेबल कन्स्ट्रक्टर की आवश्यकता है कैसे MVVM में एक PasswordBox के साथ बाध्य करने के लिए क्वेरी पैरामीटर के लिए पथ सेगमेंट की एक मनमाना संख्या को पुनः लिखना । htaccess: रीव्रेटइजिन की अनुमति नहीं है यहां विशेष वर्ण के साथ एंड्रॉइड पर एक फोन कॉल आरंभ करें # जावा में यूटीसी या जीएमटी में मैं वर्तमान दिनांक और समय कैसे प्राप्त करूं? SQL सर्वर चेक केस-संवेदनशीलता? अनिर्धारित चर और जावा में सदस्य सी # वस्तु के लिए JSON स्ट्रिंग कन्वर्ट कोर-डेटा iPhone: एक NSManagedObjectModel का पता नहीं लगा सका अधिक से अधिक एप्लिकेशन कवरेज प्रदान करने के लिए libc के पुराने संस्करण के साथ लिंक करना स्ट्रिंग्स के एक सेट में सबसे लंबे समय तक सामान्य शुरू करने वाले स्थान का पता लगाएं

एंड्रॉइड ओपनजीएल ईएस पारदर्शी पृष्ठभूमि

मैं एक एंड्रॉइड ऐप तैयार कर रहा हूं जो ओपनजीएल का लाभ लेता है। जैसा कि यह खड़ा है, GLSurfaceView लिए पृष्ठभूमि को गतिशील रूप से मेरे कोड द्वारा उत्पन्न किया जाता है और एक बनावट के रूप में लोड किया जाता है और glDrawTexfOES साथ खींचा जाता है। जो "ठीक है" है, लेकिन मैं अपनी छवि (ओपनजीएल के बिना) को आसानी से प्रदर्शित कर सकता हूं। क्या कोई तरीका है कि मैं एक GLSurfaceView पारदर्शी की पृष्ठभूमि बना सकता हूं? मैंने कुछ अफवाहें सुनाईं हैं कि यह setEGLConfigChooser साथ किया जा सकता है, लेकिन मुझे कोई पुष्टि नहीं मिली है। आखिरकार, मैं एक ऐसी सतह लेना चाहूंगा जिसे मैं चित्रित कर रहा हूं और एक स्तरित प्रभाव को प्राप्त करने के लिए उस पर GLSurfaceView डाल रहा हूं।

मुझे पता है यह एक मुश्किल और काफी संभवतः अपाच्य है, लेकिन किसी भी इनपुट की सराहना की है। अग्रिम में धन्यवाद।

Solutions Collecting From Web of "एंड्रॉइड ओपनजीएल ईएस पारदर्शी पृष्ठभूमि"

बस कुछ सरल बदलावों को मैंने काम करने के लिए किया।

मेरे GLSurfaceView.Renderer :

 public void onSurfaceCreated(GL10 gl, EGLConfig config) { gl.glDisable(GL10.GL_DITHER); gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); gl.glClearColor(0,0,0,0); gl.glEnable(GL10.GL_CULL_FACE); gl.glShadeModel(GL10.GL_SMOOTH); gl.glEnable(GL10.GL_DEPTH_TEST); } 

मेरे GLSurfaceView :

 setEGLConfigChooser(8, 8, 8, 8, 16, 0); getHolder().setFormat(PixelFormat.TRANSLUCENT); 

आपके GLSurfaceView को setZOrderOnTop(true); भी आवश्यकता है setZOrderOnTop(true);

मैं चार्ट (पारदर्शी पृष्ठभूमि / ओवरले) को प्रदर्शित करने के लिए अपने स्वयं के जीएलसर्फ़सविव वर्ग का उपयोग करता हूं मेरा विस्तारित GLSurfaceView XML के माध्यम से एक popover विंडो में एम्बेड किया गया है।

 <com.dsignmatters.iq_fitfunlite.GLPieChartView android:id="@+id/gameprogress_chart" android:layout_height="wrap_content" android:layout_width="wrap_content" ... 

गतिविधि के भाग के रूप में मैंने यह कोड जोड़ा:

 mGamesuccessPieChart = (GLSurfaceView) gameprogressView.findViewById(R.id.gameprogress_chart); mGamesuccessPieChart.setZOrderOnTop(true); 

अंतिम लेकिन कम से कम मेरे GLSurfaceView ऐसा दिखता नहीं है:

 public class GLPieChartView extends GLSurfaceView { public GLPieChartView(Context context) { super(context); initGL(); } public GLPieChartView(Context context, AttributeSet attrs) { super(context, attrs); initGL(); } void initGL() { setEGLContextClientVersion(2); setEGLConfigChooser(8,8,8,8,16,0); setRenderer(new GLPieChartRenderer()); setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); getHolder().setFormat(PixelFormat.TRANSLUCENT); } } 

मेरा रेंडरर क्लास GLPieChartRenderer बिल्कुल भी कॉल नहीं करता है।

अंत में संहिता नमूना GLSurfaceView साथ पारदर्शिता को सक्षम करने के लिए है। लेकिन GLSurfaceView साथ पारदर्शिता का उपयोग करने से पहले, निम्न नकारात्मक बिंदुओं पर विचार करें।

  1. पारदर्शिता को सक्षम करने के लिए आपको setZOrderOnTop पर GLSurfaceView उपयोग करने की आवश्यकता है। इससे आपको अपने पारदर्शी GLSurfaceView शीर्ष पर किसी भी अन्य दृश्य (जैसे GLSurfaceView ) को रखने से रोका जा GLSurfaceView यहां तक ​​कि नेविगेशन GLSurfaceView पारदर्शी GLSurfaceView ( चालें को अनदेखा) से ऊपर नहीं स्लाइड कर सकते हैं। पारदर्शी या नहीं, GLSurfaceView केवल अन्य एंड्रॉइड दृश्यों के ऊपर या नीचे मौजूद हो सकता है और उनके बीच में नहीं है।
  2. पारदर्शिता की आवश्यकता है कि आप setEGLConfigChooser उपयोग setEGLConfigChooser और setFormat नीचे उदाहरण के रूप में। इसका अर्थ है, आप सिस्टम द्वारा चुने गए डिफ़ॉल्ट स्वरूप को प्राप्त नहीं कर सकते हैं जो कि विशेष डिवाइस के लिए सबसे अच्छा होता। इससे भी महत्वपूर्ण बात, आपको यह सुनिश्चित करने की आवश्यकता होगी कि डिवाइस के पास समर्थित प्रारूप है और विकल्प चुना गया है यदि अपेक्षित स्वरूप इस जीएसओसी उदाहरण में मौजूद नहीं है।

पारदर्शिता के लिए अन्य विकल्प

  1. एंड्रॉइड में Tracer लिए ट्रैसर रनिंग, यह दिखाएगा कि, गतिविधियों के लिए पृष्ठभूमि छवियां ओपनग्लक बनावट के रूप में तैयार की जाती हैं इसलिए, यदि संभव हो तो GLSurfaceView पारदर्शी बनाने के बजाय, आप GLSurfaceView में एक ओपनल बनावट के रूप में अपनी पृष्ठभूमि को रेंडर कर सकते हैं।
  2. इसके अलावा, ओपनग्लो में अल्फा ब्लेंडिंग के लिए सतह पर अल्फा चैनल या पारदर्शिता की आवश्यकता नहीं है। दोनों स्वतंत्र हैं
  3. TextureView ( चाल ) एक अच्छा विकल्प है यदि आपके TextureView घटक अन्य दृश्यों के बीच एम्बेड किया जाना है। GLSurfaceView 2d ड्राइंग के लिए यह ब्रेकआउट गेम बहुत अच्छा उदाहरण है

पृष्ठभूमि के साथ पारदर्शी GLSurfaceView के लिए लेआउट xml और कोड वाला नमूना नीचे।

  1. green रंग की पृष्ठभूमि के साथ लेआउट xml फ़ाइल

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:background="#00FFFF"> <android.opengl.GLSurfaceView android:id="@+id/mySurfaceView" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout> 
  2. MainActivity.java फ़ाइल पृष्ठभूमि गतिविधि रंग green रंग के साथ सतह रंग red मिश्रण को देखने के लिए ALPHA चर 0 से 0 से बदलें

     package com.example.transparentsurfaceview; import android.app.Activity; import android.graphics.PixelFormat; import android.opengl.GLES20; import android.opengl.GLSurfaceView; import android.os.Bundle; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; public class MainActivity extends Activity { private GLSurfaceView mSurfaceView; private static float ALPHA = 0.5f; private static float RED = 1.0f; private static float GREEN = 0.0f; private static float BLUE = 0.0f; protected void onCreate( Bundle savedInstanceState ) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main ); mSurfaceView = (GLSurfaceView)findViewById( R.id.mySurfaceView ); mSurfaceView.setEGLContextClientVersion( 2 ); mSurfaceView.setZOrderOnTop( true ); mSurfaceView.setEGLConfigChooser( 8, 8, 8, 8, 16, 0 ); mSurfaceView.getHolder().setFormat( PixelFormat.RGBA_8888 ); mSurfaceView.setRenderer( new GLSurfaceView.Renderer() { public void onSurfaceCreated( GL10 gl10, EGLConfig eglConfig ) { GLES20.glClearColor( RED, GREEN, BLUE, ALPHA ); } public void onSurfaceChanged( GL10 gl10, int i, int i2 ) {} public void onDrawFrame( GL10 gl10 ) { GLES20.glClear( GLES20.GL_COLOR_BUFFER_BIT ); } }); } } 

आपको सुनिश्चित करना चाहिए कि गतिविधि पृष्ठभूमि पारदर्शी है!

यदि गतिविधि की पृष्ठभूमि अपारदर्शी है, तो मूल रूप से सफेद कहते हैं, तब भी जब सामग्री दृश्य (ग्लासफ़रफ्यूव्यूव्यू) पारभासी होता है, तो यह गतिविधि की पृष्ठभूमि को पृष्ठभूमि के रूप में प्रदर्शित करेगा

आप एंड्रॉइड में गतिविधि की पृष्ठभूमि पारदर्शिता सेट कर सकते हैं, जहां इसे घोषित किया गया है, आधिकारिक एपीआई डेमो देखें। मदद के लिए प्रतिभाशाली GLSurfaceViewActivity