2011-10-24 46 views
5

Tôi đang cố gắng tìm ra cách làm việc với VBO, sử dụng ngữ cảnh kết xuất OpenGL 2.0. Tôi đã thiết lập bối cảnh dựng hình 2D (ortho) và tôi có thể vẽ một hình chữ nhật đơn giản như sau:Điều gì có thể khiến glDrawArrays với một VBO không vẽ được gì?

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

Nhưng khi tôi cố gắng thực hiện với VBO thì không thành công. Tôi lập VBO như thế này, với cùng một dữ liệu như trước đây:

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; 

và tôi cố gắng rút ra như thế này:

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; 

Từ tất cả những gì tôi đã đọc, mà nên làm việc. Tôi chạy nó thông qua gDEBugger và không có lỗi GL, và các dữ liệu trong VBO là nhận được nạp một cách chính xác, nhưng không có gì thực sự xuất hiện khi tôi trao đổi các bộ đệm. Thay đổi dữ liệu trong mảng đỉnh để sử dụng tọa độ chuẩn hóa (từ 0..1.0) cũng kết thúc không hiển thị gì cả. Bất kỳ ý tưởng những gì tôi đang làm sai? (Giả bối cảnh render chính nó được thiết lập một cách chính xác và các con trỏ chức năng GL đều được tải một cách chính xác.)

Trả lời

6

glDrawArrays(GL_QUADS, 0, 1);

Dường như bạn đang cố gắng để vẽ một quad với một đỉnh duy nhất. Bạn cần ba hơn:

glDrawArrays(GL_QUADS, 0, 4); 

Hoặc chuyển sang điểm:

glDrawArrays(GL_POINTS, 0, 1); 
+0

Ồ, nó cần một số các đỉnh? Lỗi của tôi; Tôi nghĩ rằng nó cần một số ** yếu tố, vì vậy tôi đã cố gắng để vẽ 1 quad. Nó hoạt dộng bây giờ! –

Các vấn đề liên quan