Re: [問題] openGL獲得frame buffer資料
前文恕刪
: GLuint my_fbo = 2; //新增一個我想要在背景做事的framebuffer
: GLuint my_shader = 0; //新增一個我想要在背景運算的shader
: unsigned char my_buffer[800*480*4]; //背景運算完後想存的地方
: void custom_framebuffer_init()
: {
: //新增一個render buffer
: glGenRenderbuffers(1, &my_shader);
: glBindRenderbuffer(GL_RENDERBUFFER, my_shader);
: glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA, 800, 480);
: glBindRenderbuffer(GL_RENDERBUFFER, 0);
上面這個 colorbuffer 跟下面的功能重複,可以刪掉只留 texture。
: //設定要綁定的材質
: glGenTextures(1, &texture);
: glBindTexture(GL_TEXTURE_2D, texture);
: glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 800, 480, 0, GL_RGBA,
: GL_UNSIGNED_BYTE, NULL);
這三行會建立用來當 colorbuffer 的 texture,你畫的東西都會在這裡。
: ////新增一個frame buffer
: glGenFramebuffers(1, &my_fbo);
: glBindFramebuffer(GL_FRAMEBUFFER, my_fbo);
: glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
: GL_RENDERBUFFER, my_shader);
上面這個是多的 renderbuffer,而且跟下面的 GL_COLOR_ATTACHMENT0 重複。
: glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
: GL_TEXTURE_2D, texture, 0);
: //設定運算後要存的buffer初始值
: memset(my_buffer, 0, sizeof(my_buffer));
: //確認framebuffer設定是否有誤
: if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE)
: {
: printf("!!!!!!!!!!!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!!!!!!!!!!!\n");
: }
: else
: {
: printf("!!!!!!!!!!!!!!!!!!!!!!! SUCCESS !!!!!!!!!!!!!!!!!!!!!!!\n");
: }
: }
: void get_custom_fb_data()
: {
: //想要利用以下的API來得到背景運算的資料
: glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
: GL_RENDERBUFFER, my_shader);
: glBufferData(GL_ARRAY_BUFFER, 800*480*4, my_buffer, GL_DYNAMIC_DRAW);
: }
這個 function 請砍掉。你畫完東西以後直接用 glBindTexture &
glGetTexImage 將 texture 從 video ram 抓到 system ram。
: 問題來了
: 當我把custom_framebuffer_init()放在原本的init()裡最後面
: 編譯並執行
: 沒有錯誤,執行時Framebuffer似乎也有被成功設定 (有顯示!!SUCCESS !!!)
: 但結果原本應該要出現的圖反而就消失了 O_O
: 我甚至沒有呼叫 get_custom_fb_data
: (原本想在data_from_other裡呼叫,但發現即使沒呼叫圖也跑不出來)
: 花很多時間查資料好像也沒看到解決的方法
: 倒是看到不少人也有類似的問題
: 甚至我看到有人說 shader language只能顯示,不能直接對shader獲取運算後的資料
: 但是又看到這些相關的API好像可以用
: 現在整個很混亂 囧
: 能否請教一下是我哪裡搞錯了或是想法根本就錯了呢?
: 若有講的不完整的也請再跟我說一下 @@
: 在此也先謝謝各位的熱心回答囉
--
My Blog
http://rueiyuanlu.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.236.197
推
03/21 21:22, , 1F
03/21 21:22, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章