2011-06-20 12 views
14

मुझे लगता है कि मैं OpenGL ES 2.0 पोर्ट करना चाहते हैं निम्नलिखित की तरह ओपन कोड है:मैं OpenGL ES 2.0 में glBegin() और संबंधित कार्यों को कैसे बदलूं?

for (surfnum=0;surfnum < surftotal;surfnum++){ 
    for (i=0;i<triNum[surfnum];i++){ 
     glBegin(GL_POLYGON); 
     glNormal3fv(triArray[surfnum][i].normpt1); 
     glVertex3fv(triArray[surfnum][i].pt1); 
     glNormal3fv(triArray[surfnum][i].normpt2); 
     glVertex3fv(triArray[surfnum][i].pt2); 
     glNormal3fv(triArray[surfnum][i].normpt3); 
     glVertex3fv(triArray[surfnum][i].pt3); 
     glEnd(); 
     glFlush(); 
    }  
} 

ओपन ES 2.0 का अभाव GL_POLYGON, glNormal3fv, glVertex3fv, glEnd, glBegin, आदि, तो मैं कैसे की जगह करना ये कार्य?

पीएस .: मैं इसे एक एमुलेटर के माध्यम से उबंटू 10.10 में कर रहा हूं।

+0

मुझे लगता है कि अपने कोड के कुछ जब आप की नकल की ठीक से प्रदर्शित किया गया था इसमें –

+0

आपको एहसास है कि आपका बहुभुज वास्तव में एक त्रिकोण है? और GL_TIRANGLES ES 2.0 में पूरी तरह से मौजूद है। लेकिन आपको वर्टेक्स सरणी/बफर का उपयोग करना होगा। इसके लिए डेटनवॉल्फ का जवाब देखें। –

उत्तर

9

आप वर्टेक्स बफर ऑब्जेक्ट्स का उपयोग करते हैं। नेहे पर ट्यूटोरियल: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=45

ट्यूटोरियल (थोक टेक्स्ट) विंडोज के लिए लिखा गया है। एंड्रॉइड पर ओपनजीएल-ईएस 2 अलग-अलग है कि आपको मैन्युअल रूप से एक्सटेंशन लोड नहीं करना है और egl... फ़ंक्शंस द्वारा उचित रूप से तैयार ओपनजीएल संदर्भ दिया गया है।

एक और पठनीय ट्यूटोरियल http://www.songho.ca/opengl/gl_vbo.html

GL_POLYGONS ओपन -3 से छोड़ दिया गया है और -es बाद से वे के साथ और लगभग इस्तेमाल कभी नहीं काम करने के लिए बोझिल कर रहे हैं। GL_POLYGON को पूरी तरह से GL_TRIANGLE_FAN द्वारा प्रतिस्थापित किया जा सकता है। या आप साफ चीज और tesselate polygonal ज्यामिति खुद त्रिकोण में करते हैं।

5

एक बुनियादी उदाहरण, OpenGL ES में एक त्रिकोण आकर्षित करने के लिए:

GLfloat glverts[9]; 
glVertexPointer(3, GL_FLOAT, 0, glverts); 
glEnableClientState(GL_VERTEX_ARRAY); 

//fill in vertex positions with your data 
for (int i = 0; i < 3; i++) { 
    glverts[i*3] = ...; 
    glverts[i*3+1] = ...; 
    glverts[i*3+2] = ...; 
} 

glDrawArrays(GL_TRIANGLE_FAN, 0, 3); 

संपादित करें: माफ करना, इस OpenGL ES 1.1 के लिए है, न कि 2.0

+1

जो आप मुझे बता रहे हैं वह Opengl es 1.1 में उपयोग किया जाता है लेकिन मैं opengl-es 2.0 के लिए जानना चाहता हूं ... –

+0

मैं देखता हूं, मेरी गलती। मुझे 2.0 के बारे में बहुत कुछ पता नहीं है लेकिन मुझे Google पर लगभग 30 सेकंड में अच्छी पैदल यात्रा मिली: http://www.webreference.com/programming/opengl_es/ – iforce2d

+0

याह मैंने पहले से ही एम्यूलेटर के साथ उबंटू में त्रिभुज के लिए उदाहरण किया है लेकिन केवल vertexbufferarray है और मैं भी मानक का उपयोग करना चाहता हूँ। तो गोनो कैसे करते हैं .. –

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