पर ओपनजीएल का उपयोग करते समय स्वचालित बफर स्पष्ट है, मैं एक निश्चित ओपनजीएल एप्लिकेशन लिख रहा हूं जहां मैं विशेष रूप से फ्रेम को क्रमशः आकर्षित करना चाहता हूं। इसके लिए, मैं बफर के स्वचालित समाशोधन को अक्षम करना चाहता हूं जो मैं समझता हूं, GLSurfaceView.Renderer.onDrawFrame() का डिफ़ॉल्ट व्यवहार है। क्या कोई मेरी मदद कर सकता है कि यह कैसे करें? मुझे देशी एसडीके का उपयोग न करने पर जावा में एप्लिकेशन लिखना होगा।Android
मैं समझता हूँ कि मैं संभवतः कर ऐसा कर सकता है: -:
"EGL_SWAP_BEHAVIOR_PRESERVED_BIT are supported only if the EGL version is 1.4 or greater."
"EGL_SWAP_BEHAVIOR is supported only if the EGL version is 1.2 or greater."
अब, मैं समझता हूँ कि मैं में EGL यहां पहुंच सकता है -
(1) setting EGL_SWAP_BEHAVIOR_PRESERVED_BIT bit for EGL_SURFACE_TYPE attribute while doing [eglChooseConfig][1](), and
(2) setting EGL_SWAP_BEHAVIOR attribute to EGL_BUFFER_PRESERVED by calling [eglSurfaceAttrib][2] on the EGLSurface object
हालांकि, मैं Khronos दस्तावेज़ जिसे से इकट्ठा मेरी Android एप्लिकेशन में दो तरीके: -
(1) use the Khronos API class [EGL10][3] in javax.microedition.khronos.egl package (EGL11 doesn't seem to be implemented yet)
(2) use the Android API class [EGL14][4] in android.opengl package (similar to using class android.opengl.GLES20)
साथ समस्या यह है (1) है कि संस्करणहै1.4 इसलिए यह मुझे आवश्यक कार्यक्षमता का समर्थन नहीं करता है। समस्या (2) है कि मेरा एप्लिकेशन बस उस क्षण को क्रैश करता है जब मैं ईजीएल 14 में किसी भी विधि को कॉल करता हूं, और मुझे यकीन नहीं है कि मुझे इसका उपयोग कैसे करना है (मुझे एक उदाहरण उदाहरण/ट्यूटोरियल कैसे नहीं मिला ईजीएल 14 को ऐप में इस्तेमाल किया जाना चाहिए)। विशेष रूप से, मैं सीखना चाहता हूं कि ईजीएल 14 से वैध जीएल संदर्भ कैसे प्राप्त करें: ईजीएल 10 के मामले में, मैं javax.microedition.khronos.egl.EGLContext.getGL() को कॉल करके ऐसा कर सकता हूं। हालांकि, मुझे कक्षा android.opengl.EGLContext में कोई समकक्ष विधि नहीं दिखाई देती है। वास्तव में, ईजीएल 14 को छोड़कर android.opengl में सभी ईजीएल से संबंधित वर्ग अधिकतर खाली होते हैं।
मेरी सबसे अच्छी शर्त जीएलएस 20 के मामले में तर्क की एक ही पंक्ति का पालन करना था: केवल GLSurfaceView.Renderer विधियों के अंदर विधियों को कॉल करने के लिए: ऑन ड्राफ्रेम(), ऑनफुरसक्रेटेड(), ऑनफुरस चेंटेड(), क्योंकि इन आपूर्ति मान्य जीएल (जीएल 10) और ईजीएल (ईजीएलकोनफिग) तर्क के रूप में संदर्भित करता है। इसलिए मैं onDrawFrame अंदर कोड निम्नलिखित रख(): -
public void onDrawFrame(GL10 gl)
{
...
android.opengl.EGLDisplay d = null;
if ((d = EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY)) == EGL14.EGL_NO_DISPLAY) {
Log.i("Triangle", "EGL14.eglGetDisplay() failed!");
} else {
Log.i("Triangle", "EGL14.eglGetDisplay() succeeded!");
}
...
}
मेरा मानना है कि मैंने ऊपर बुला के बाद से सभी तरीकों स्थिर हैं पहले EGL14 का दृष्टांत नहीं करना पड़ेगा। हालांकि, EGL14.eglGetDisplay() को कॉल ऐप को क्रैश करता है।
किसी भी मदद की बहुत सराहना की जाएगी, धन्यवाद :)
हैलो, मैं एक ही समस्या का सामना करना पड़ रहा था, और मैं सिर्फ बाहर पाया है कि अपनी समस्या से "glColorMask" एक फोन था , इस विधि को मेरी कॉल हटाने के बाद सब कुछ हल हो गया। शायद आपकी समस्या का कारण अलग है, लेकिन अगर यह आपकी मदद करता है तो मैं आपको संकेत देता हूं। – PerracoLabs