2011-10-24 8 views
5

मैं ओपनजीएल 2.0 प्रतिपादन संदर्भ का उपयोग करके वीबीओ के साथ काम करने का तरीका जानने का प्रयास कर रहा हूं। मैं एक 2 डी (ऑर्थो) प्रतिपादन संदर्भ सेट हो जाने पर, और मैं इस तरह एक साधारण आयत आकर्षित कर सकते हैं:वीबीओ के साथ glDrawArrays क्या कुछ भी आकर्षित नहीं कर सकता है?

glBegin(GL_QUADS); 
    glColor4f(1, 1, 1, 1); 
    glVertex2f(0, 0); 
    glVertex2f(0, 10); 
    glVertex2f(100, 10); 
    glVertex2f(100, 0); 
glEnd; 

लेकिन जब मैं एक VBO साथ यह करने के लिए प्रयास करते हैं, यह विफल रहता है। मैं पहले की तरह इस तरह VBO की स्थापना की, एक ही डेटा के साथ:

procedure initialize; 
const 
    VERTICES: array[1..8] of single = 
    (
    0, 0, 
    0, 10, 
    100, 10, 
    100, 0 
    ); 
begin 
    glEnable(GL_VERTEX_ARRAY); 
    glGenBuffers(1, @VBO); 
    glBindBuffer(GL_ARRAY_BUFFER, VBO); 
    glBufferData(GL_ARRAY_BUFFER, sizeof(VERTICES), @VERTICES[1], GL_DYNAMIC_DRAW); 
    glBindBuffer(GL_ARRAY_BUFFER, 0); 
end; 

और मैं इस तरह आकर्षित करने के लिए प्रयास करें:

begin 
    glColor4f(1, 1, 1, 1); 
    glEnableClientState(GL_VERTEX_ARRAY); 
    glBindBuffer(GL_ARRAY_BUFFER, VBO); 
    glVertexPointer(2, GL_FLOAT, 0, 0); 
    glDrawArrays(GL_QUADS, 0, 1); 
    glBindBuffer(GL_ARRAY_BUFFER, 0); 
end; 

सब कुछ मैं पढ़ा है से, जो काम करना चाहिए। मैं इसे जीडीईबगर के माध्यम से चलाता हूं और कोई जीएल त्रुटियां नहीं होती हैं, और वीबीओ में डेटा सही ढंग से लोड हो रहा है, लेकिन जब मैं बफर को स्वैप करता हूं तो वास्तव में कुछ भी नहीं दिखाई देता है। सामान्यीकृत निर्देशांक (0..1.0 से) का उपयोग करने के लिए वर्टेक्स सरणी में डेटा को बदलना भी कुछ भी प्रदर्शित नहीं होता है। कोई विचार क्या मैं गलत कर रहा हूँ? (संदर्भ प्रस्तुत करना ही ठीक से सेट है मान लें और जीएल समारोह संकेत दिए गए सभी सही ढंग से लोड नहीं हुआ।)

उत्तर

6

glDrawArrays(GL_QUADS, 0, 1);

लग रहा है आप एक ही शिखर के साथ एक ट्रैक्टर आकर्षित करने के लिए कोशिश कर रहे हैं। आप तीन और की जरूरत है:

glDrawArrays(GL_QUADS, 0, 4); 

या स्विच अंक:

glDrawArrays(GL_POINTS, 0, 1); 
+0

ओह, यह कोने की गिनती की आवश्यकता है? मेरी गलती; मैंने सोचा कि इसे ** तत्व ** की गिनती की आवश्यकता है, इसलिए मैं 1 क्वाड खींचने की कोशिश कर रहा था। यह अब काम करता है! –

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