[問題] OpenGL VBO 加速問題

看板C_and_CPP (C/C++)作者 (Andy_Yao)時間12年前 (2013/11/15 14:51), 編輯推噓0(006)
留言6則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC 2013 C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenGL 問題(Question): VBO是否能在加速? 餵入的資料(Input): x=696,y=800,z=520 程式碼(Code):(請善用置底文網頁, 記得排版) VBO 共有9個,12個 DrawElement動態繪製,畫的點為Trangle_srtip, 每三個點畫一個三角形,當滑鼠座標改變時,才會更改DrawElement繪製的點數, EX : 繪製迴圈(共有9個VBO 在迴圈內,下面為其中一個) const GLsizeiptr vertex_top_size = (samples_x * lines_y) * 2 * 3 * sizeof(GLfloat); glBufferData(GL_ARRAY_BUFFER, vertex_top_size, &vtx_cube_top[0], GL_DYNAMIC_DRAW); int total_top = samples_x * lines_y; glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_COLOR_ARRAY); glVertexPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(0)); glColorPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(sizeof(GLfloat)* total_top * 3)); int draw_total_top = (samples_x + 1)*(J)* 2; glDrawElements(GL_TRIANGLE_STRIP, draw_total_top, GL_UNSIGNED_INT, &vtx_cube_top_point[0]); int draw_total_top_2 = (I + 1)*(lines_y - J - 1) * 2; glDrawElements(GL_TRIANGLE_STRIP, draw_total_top_2, GL_UNSIGNED_INT, &vtx_cube_top_point_2[0]); 補充說明(Supplement): 以我貼上的XYZ 的SIZE 我的電腦大約每秒為39FPS,請問還有別的方法嗎可以提升嗎? 顯卡為 intel HD4000 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.164.124

11/15 19:00, , 1F
是滑鼠一移動,就把buffer的資料撈出來換嗎?
11/15 19:00, 1F

11/15 19:36, , 2F
點擊就換資料喔~~39FPS 是沒更換的時候
11/15 19:36, 2F

11/16 01:30, , 3F
39fps有點低,不用每次都glBufferData
11/16 01:30, 3F

11/16 01:31, , 4F
or 你的vertex太多
11/16 01:31, 4F

11/16 21:20, , 5F
如果沒有每次glBufferData 會沒辦法畫
11/16 21:20, 5F

11/17 12:25, , 6F
這種時候應該要請shader幫忙了
11/17 12:25, 6F
文章代碼(AID): #1IXSHb0X (C_and_CPP)
文章代碼(AID): #1IXSHb0X (C_and_CPP)