स्क्रीन पर ऑब्जेक्ट ड्रॉइंग करना OpenGL की एक काफ़ी बेसिक सुविधा है, लेकिन आप इसे दूसरे
Android ग्राफ़िक फ़्रेमवर्क की क्लास, जिनमें Canvas
और
Drawable
ऑब्जेक्ट. OpenGL ES में
ड्रॉ किए गए ऑब्जेक्ट को तीन डाइमेंशन में या किसी दूसरे तरीके से मूव करना या बदलना
उपयोगकर्ताओं को बेहतरीन अनुभव देना.
इस लेसन में, OpenGL ES का इस्तेमाल करने की दिशा में एक और कदम उठाया गया है. इसके लिए, मोशन जोड़ने का तरीका सीखें का आकार घुमाया जा सकता है.
आकार को घुमाना
OpenGL ES 2.0 की मदद से, ड्रॉइंग ऑब्जेक्ट को घुमाना बेहद आसान है. अपने रेंडरर में, एक अन्य रूपांतरण आव्यूह (एक घूर्णन आव्यूह) और फिर इसे अपने प्रोजेक्शन के साथ मिलाएं और कैमरा व्यू ट्रांसफ़ॉर्मेशन मैट्रिक्स:
Kotlin
private val rotationMatrix = FloatArray(16) override fun onDrawFrame(gl: GL10) { val scratch = FloatArray(16) ... // Create a rotation transformation for the triangle val time = SystemClock.uptimeMillis() % 4000L val angle = 0.090f * time.toInt() Matrix.setRotateM(rotationMatrix, 0, angle, 0f, 0f, -1.0f) // Combine the rotation matrix with the projection and camera view // Note that the vPMatrix factor *must be first* in order // for the matrix multiplication product to be correct. Matrix.multiplyMM(scratch, 0, vPMatrix, 0, rotationMatrix, 0) // Draw triangle mTriangle.draw(scratch) }
Java
private float[] rotationMatrix = new float[16]; @Override public void onDrawFrame(GL10 gl) { float[] scratch = new float[16]; ... // Create a rotation transformation for the triangle long time = SystemClock.uptimeMillis() % 4000L; float angle = 0.090f * ((int) time); Matrix.setRotateM(rotationMatrix, 0, angle, 0, 0, -1.0f); // Combine the rotation matrix with the projection and camera view // Note that the vPMatrix factor *must be first* in order // for the matrix multiplication product to be correct. Matrix.multiplyMM(scratch, 0, vPMatrix, 0, rotationMatrix, 0); // Draw triangle mTriangle.draw(scratch); }
अगर ये बदलाव करने के बाद आपका त्रिभुज नहीं बदलता है, तो पक्का करें कि आपने
GLSurfaceView.RENDERMODE_WHEN_DIRTY
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
सेटिंग देखें, जैसा कि अगले सेक्शन में बताया गया है.
लगातार रेंडरिंग चालू करें
अगर आपने इस क्लास में, उदाहरण के तौर पर दिए गए कोड को सही से फ़ॉलो किया है, तो
आप उस लाइन पर टिप्पणी करेंगे जो रेंडर मोड को सिर्फ़ गंदी होने पर ही ड्रॉ करने के लिए सेट करती है, नहीं तो OpenGL
आकार को सिर्फ़ एक क्रम से घुमाता है और फिर GLSurfaceView
कंटेनर से requestRender()
को कॉल किए जाने का इंतज़ार करता है:
Kotlin
class MyGLSurfaceView(context: Context) : GLSurfaceView(context) { init { ... // Render the view only when there is a change in the drawing data. // To allow the triangle to rotate automatically, this line is commented out: // renderMode = GLSurfaceView.RENDERMODE_WHEN_DIRTY } }
Java
public class MyGLSurfaceView(Context context) extends GLSurfaceView { ... // Render the view only when there is a change in the drawing data. // To allow the triangle to rotate automatically, this line is commented out: //setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); }
जब तक उपयोगकर्ता के इंटरैक्शन के बिना ऑब्जेक्ट बदल जाते हैं, तब तक यह ज़रूरी है कि फ़्लैग करने की सुविधा चालू की गई. इसलिए, इस कोड को हटाने के लिए तैयार रहें, क्योंकि अगले लेसन में यह कॉल लागू किया जा सकता है एक बार फिर से.