pbo

    0熱度

    1回答

    我需要繪製N遍,對於每次遍歷,我從fbo讀取一個像素,並且我發現它太慢而無法讀取每遍一個像素。然後,我使用另一個紋理(矩形:N * 1)來緩存像素,這意味着對於每次通過,我都會將一個像素複製到結果紋理。 N遍後,我讀取結果紋理一次。 但是,它也太慢。例如,要讀取結果紋理(200 * 1),它的成本爲13毫秒。 我想知道是否有另一種方法來解決這個問題。 我也解決了關於像素緩衝區對象的一些帖子,它以異

    -1熱度

    1回答

    有沒有人有一個PBO的(像素緩衝區對象)+ SDL2.0(簡單DirectMedia層)+ OpenGL的工作示例? 原因是獲得異步GPU - > CPU與GLGetPixels下載,從而獲得性能提升。 這是我的嘗試。使用use_pbo = false或true時完全沒有測量差異。我之前在同一臺機器上使用過GLUT的PBO,所以我知道我的硬件支持它。 我看了很多在http://www.songho

    0熱度

    1回答

    glMapBuffer的 一個常見用法是 previousPBO.render(); bindNextPBO(); GLubyte* src = (GLubyte*)glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY); if(src) { doSomeWork(src); glUnmapBuffer(GL_PIXEL_PACK_

    0熱度

    1回答

    我們正在開發用於幻燈片創建和使用OpenGL的軟件。 我們使用FBO + PBO用於快速數據從VGA讀取到RAM,但在從ATI一些顯卡,我們面臨以下問題: 交換RGB分量 像素移動 有如果我們不使用PBO,沒有問題。 我們也注意到,PBO/FBO(4:3)的長寬比解決了像素偏移問題。 任何想法或建議? 以下是詳細信息: 的ATI Radeon HD 3650 PBO代碼: public bool

    1熱度

    1回答

    我想使用openGL渲染RGB幀。當在CPU上分配內存時,代碼工作正常。但是,當我使用像素緩衝區對象的概念在GPU上分配內存時,渲染幀時出現問題。 問題是,顯示窗口是完全白色的。當其他圖形卡上運行相同的代碼時,代碼工作正常。但是,當我在任何有nVidia圖形卡的系統上運行它時,面對這個白色屏幕問題。 下面是我的代碼: #include <stdio.h> #include <stdlib.h>

    2熱度

    1回答

    我有一個多線程的OpenGL應用程序使用PBO在cpu和gpu之間進行數據傳輸。 我已經合併了PBO的分配,但是,當這些池爲空時,我的非opengl線程必須暫時阻塞一段時間,直到OpenGL線程達到它可以分配緩衝區的位置(即完成渲染當前幀)。這種等待在某些我想避免的情況下會造成一些滯後峯值。 是否有可能在另一個線程上分配PBO,然後由「主」OpenGL線程使用?

    4熱度

    1回答

    我認爲應該可以使用像素緩衝區對象直接在GPU內存中傳輸像素數據。我不明白的是,如果PBO在OpenGL ES 2.0中得到支持。我發現了不連貫的信息。 PBO是否支持OpenGL ES 2.0? 如果沒有,OpenGL ES 2.0有沒有其他方法將數據(RGBA32)直接放置到紋理中?

    2熱度

    1回答

    在使用PyOpenGL一段時間後,我現在很嚴重卡住了。我正在研究一個Python軟件包,該軟件包允許我使用GLSL着色器和OpenCL程序進行圖像處理,使用紋理作爲標準化方式將數據導入和導出GLSL着色器和OpenCL程序。 一切正常,但我無法成功將紋理複製到pbo(像素緩衝區對象)中。 我使用pbo來獲取我的紋理數據進/出OpenCL,並且在PyOpenCL中工作得很好而且快速:我可以將我的Op

    8熱度

    2回答

    我想用兩個PBO以另一種方式讀取像素。我認爲PBO方式會更快,因爲glReadPixels使用PBO時,和很多的時間可以重疊立即返回。 奇怪的是,似乎沒有太大的好處。考慮到一些這樣的代碼: glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0); Timer t; t.start(); glReadPixels(0,0,1024,1024,GL

    0熱度

    1回答

    我在C#中有一個小遊戲,主要使用固定的精靈(從磁盤加載的位圖)和一些視頻。 現在我們目前的做法是 加載: texture.ID = GL.GenTexture(); GL.BindTexture(TextureTarget.Texture2D, texture.ID); GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat