Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: [OpenGL]Lỗi truy cập bộ nhớ khi vẽ 1 phần VBO

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    54

    Mặc định [OpenGL]Lỗi truy cập bộ nhớ khi vẽ 1 phần VBO

    Để đẩy dữ liệu (vertice, normal, texcoordinate) xuống card màn hình, mình tạo ra 1 VBO cho toàn bộ các Objects như sau:
    C++ Code:
    1.     glGenBuffersARB(1, &vboId);
    2.     glBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId);
    3.     glBufferDataARB(GL_ARRAY_BUFFER_ARB, totalSize, NULL, GL_STATIC_DRAW_ARB);

    Sau đó, mình sử dụng glBufferSubDataARB() để cập nhật dữ liệu cho từng object:
    C++ Code:
    1. unsigned int offset = 0;
    2. for(int i = 0; i < numOfObjects;i++)
    3. {
    4.      vboOffset[i] = offset;
    5.      glBufferSubDataARB(GL_ARRAY_BUFFER_ARB, offset, sizeOfObjects , &objPointer);
    6.      offset += sizeOfObjects;
    7. }

    Sau khi quá trình Build VBO hoàn thành, khi mình vẽ Object 0, thì chuơng trình chạy bình thường (vẽ được object 0). Nhưng mà khi vẽ object 1, 2, ... thì vẽ lại bị lỗi truy cập vùng nhớ. Ai biết giúp mình với.

    Code vẽ Object i:
    C++ Code:
    1. glDrawArrays( GL_TRIANGLES,vboOffset[i], numOfTriangle);

  2. #2
    Ngày gia nhập
    04 2010
    Nơi ở
    Thâm sơn cùng cốc
    Bài viết
    825

    Bạn đổi GL_STATIC_DRAW_ARB thành GL_DYNAMIC_DRAW_ARB
    Lý dó khi bạn khởi tạo VBO bằng GL_STATIC_DRAW thì nó chỉ cho phép bạn ghi dữ liệu 1 lần duy nhât vào vùng nhớ đó, chính vì thế mà bạn có thể vẽ được Object đầu tiên. Lần vẽ tiếp theo phát sinh lỗi.

    Nguồn
    http://www.songho.ca/opengl/gl_vbo.html

Các đề tài tương tự

  1. Làm sao để vẽ hình chữ nhật với hình nền cho trước bằng OpenGL ?
    Gửi bởi conganhbn91 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 0
    Bài viết cuối: 27-10-2012, 12:36 AM
  2. Kỹ thuật C++ Hỏi về OpenGL. Làm sao để chương trình vẽ hình có thể chạy từng bước một??
    Gửi bởi nlhuykhang trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 10-05-2012, 02:01 AM
  3. Đồ họa trên C++ Hàm vẽ điểm glVertex3f vẽ sai trong openGL?
    Gửi bởi kazat trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 26-03-2012, 08:21 PM
  4. Trả lời: 2
    Bài viết cuối: 24-05-2011, 12:29 AM
  5. vẽ ngôi sao trong openGL
    Gửi bởi dangwru trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 21-04-2010, 02:02 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn