JOGL - पूर्व निर्धारित आकार
पिछले अध्यायों में हमने सीखा है कि कैसे JOGL का उपयोग करके रेखा, त्रिकोण, रोम्बस जैसी आकृतियाँ बनाई जाती हैं। हम एक पूर्वनिर्धारित क्षेत्र को पास करके रेखाएँ बनाते हैं,Gl_linesto glBegin () विधि।
के आलावा GL_LINES, को glBegin()विधि आठ और मापदंडों को स्वीकार करती है। आप उन्हें विभिन्न आकृतियों को आकर्षित करने के लिए उपयोग कर सकते हैं। इन्हें GL_LINES के समान उपयोग किया जाता है।
निम्न तालिका से पता चलता है glBegin() विधि पैरामीटर उनके विवरण के साथ -
अनु क्रमांक | पैरामीटर और विवरण |
---|---|
1 | GL_LINES एक स्वतंत्र पंक्ति खंड के रूप में प्रत्येक जोड़ी को जोड़ देता है। |
2 | GL_LINE_STRIP पहले शीर्ष से अंतिम तक लाइन खंडों का एक जुड़ा हुआ समूह खींचता है। |
3 | GL_LINE_LOOP पहले खंड से अंतिम तक, फिर से पहले की ओर लाइन खंडों का एक जुड़ा हुआ समूह खींचता है। |
4 | GL_TRIANGLES प्रत्येक त्रिभुज को एक स्वतंत्र त्रिभुज के रूप में मानता है। |
5 | GL_TRIANGLE_STRIP त्रिकोण का एक जुड़ा हुआ समूह बनाता है। पहले दो शीर्षकों के बाद प्रस्तुत प्रत्येक शीर्ष के लिए एक त्रिकोण परिभाषित किया गया है। |
6 | GL_TRIANGLE_FAN त्रिकोण का एक जुड़ा हुआ समूह बनाता है। पहले दो शीर्षकों के बाद प्रस्तुत प्रत्येक शीर्ष के लिए एक त्रिकोण परिभाषित किया गया है। |
7 | GL_QUADS एक स्वतंत्र चतुर्भुज के रूप में चार कोने के प्रत्येक समूह को मानते हैं। |
8 | GL_QUAD_STRIP चतुर्भुज का एक जुड़ा हुआ समूह बनाता है। पहली जोड़ी के बाद प्रस्तुत प्रत्येक जोड़ी के लिए एक चतुर्भुज परिभाषित किया गया है। |
9 | GL_POLYGON एकल, उत्तल बहुभुज बनाता है। कार्यक्षेत्र 1,…, इस बहुभुज को परिभाषित करते हैं। |
आइए हम कुछ उदाहरणों का उपयोग करके देखते हैं glBegin() मापदंडों।
रेखा पट्टी खींचने का कार्यक्रम
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;
import javax.swing.JFrame;
public class LineStrip implements GLEventListener {
@Override
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin (GL2.GL_LINE_STRIP);
gl.glVertex3f(-0.50f,-0.75f, 0);
gl.glVertex3f(0.7f,0.5f, 0);
gl.glVertex3f(0.70f,-0.70f, 0);
gl.glVertex3f(0f,0.5f, 0);
gl.glEnd();
}
@Override
public void dispose(GLAutoDrawable arg0) {
//method body
}
@Override
public void init(GLAutoDrawable arg0) {
// method body
}
@Override
public void reshape(GLAutoDrawable arg0, int arg1, int arg2, int arg3, int arg4) {
// method body
}
public static void main(String[] args) {
//getting the capabilities object of GL2 profile
final GLProfile profile = GLProfile.get(GLProfile.GL2);
GLCapabilities capabilities = new GLCapabilities(profile);
// The canvas
final GLCanvas glcanvas = new GLCanvas(capabilities);
LineStrip r = new LineStrip();
glcanvas.addGLEventListener(r);
glcanvas.setSize(400, 400);
//creating frame
final JFrame frame = new JFrame ("LineStrip");
//adding canvas to frame
frame.getContentPane().add(glcanvas);
frame.setSize(frame.getContentPane().getPreferredSize());
frame.setVisible(true);
}//end of main
}//end of classimport javax.media.opengl.GL2;
यदि आप उपरोक्त कोड को संकलित और निष्पादित करते हैं, तो निम्न आउटपुट उत्पन्न होता है -
लाइन लूप ड्रा करने के लिए डिस्प्ले () विधि के लिए कोड स्निपेट
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin (GL2.GL_LINE_LOOP);
gl.glVertex3f( -0.50f, -0.75f, 0);
gl.glVertex3f(0.7f, .5f, 0);
gl.glVertex3f(0.70f, -0.70f, 0);
gl.glVertex3f(0f, 0.5f, 0);
gl.glEnd();
}
यदि आप प्रतिस्थापित करते हैं display() उपरोक्त कोड के साथ बुनियादी टेम्पलेट कार्यक्रमों में से किसी की विधि, इसे संकलित और निष्पादित करना, निम्नलिखित आउटपुट उत्पन्न होता है -
GL_TRIANGLES का उपयोग करके एक त्रिभुज बनाने के लिए प्रदर्शन के लिए कोड स्निपेट () विधि
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin(GL2.GL_TRIANGLES); // Drawing Using Triangles
gl.glVertex3f(0.5f,0.7f,0.0f); // Top
gl.glVertex3f(-0.2f,-0.50f,0.0f); // Bottom Left
gl.glVertex3f(0.5f,-0.5f,0.0f); // Bottom Right
gl.glEnd();
}
यदि आप प्रतिस्थापित करते हैं display() उपरोक्त कोड के साथ बुनियादी टेम्पलेट कार्यक्रमों में से किसी की विधि, इसे संकलित और निष्पादित करना, निम्नलिखित आउटपुट उत्पन्न होता है -
प्रदर्शन के लिए कोड स्निपेट () एक त्रिभुज पट्टी खींचने की विधि
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin (GL2.GL_TRIANGLE_STRIP);
gl.glVertex3f(0f,0.5f,0);
gl.glVertex3f(-0.50f,-0.75f,0);
gl.glVertex3f(0.28f,0.06f,0);
gl.glVertex3f(0.7f,0.5f,0);
gl.glVertex3f(0.7f,-0.7f,0);
gl.glEnd();
}
यदि आप प्रतिस्थापित करते हैं display() उपरोक्त कोड के साथ मूल टेम्पलेट कार्यक्रमों में से किसी की विधि, इसे संकलित और निष्पादित करें, निम्न आउटपुट उत्पन्न होता है -
चतुर्भुज बनाने के लिए कोड स्निपेट डिस्प्ले () विधि के लिए
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin(GL2.GL_QUADS);
gl.glVertex3f( 0.0f,0.75f,0);
gl.glVertex3f(-0.75f,0f,0);
gl.glVertex3f(0f,-0.75f,0);
gl.glVertex3f(0.75f,0f,0);
gl.glEnd();
}
यदि आप प्रतिस्थापित करते हैं display() उपरोक्त कोड के साथ बुनियादी टेम्पलेट कार्यक्रमों में से किसी की विधि, इसे संकलित और निष्पादित करना, निम्नलिखित आउटपुट उत्पन्न होता है -
बहुभुज बनाने के लिए कोड स्निपेट डिस्प्ले () विधि के लिए
public void display(GLAutoDrawable drawable) {
final GL2 gl = drawable.getGL().getGL2();
gl.glBegin(GL2.GL_POLYGON);
gl.glVertex3f(0f,0.5f,0f);
gl.glVertex3f(-0.5f,0.2f,0f);
gl.glVertex3f(-0.5f,-0.2f,0f);
gl.glVertex3f(0f,-0.5f,0f);
gl.glVertex3f(0f,0.5f,0f);
gl.glVertex3f(0.5f,0.2f,0f);
gl.glVertex3f(0.5f,-0.2f,0f);
gl.glVertex3f(0f,-0.5f,0f);
gl.glEnd();
}
यदि आप प्रतिस्थापित करते हैं display() उपरोक्त कोड के साथ बुनियादी टेम्पलेट कार्यक्रमों में से किसी की विधि, इसे संकलित और निष्पादित करना, निम्नलिखित आउटपुट उत्पन्न होता है -