我正在使用AMD Radeon HD 6000 series
它支持Open GL 4.1
。使用下面的代码我在GPU上分配内存以加快处理速度:
glGenBuffersARB(1, &Id[0]);
enm = glGetError();
glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, Id[0]);
enm = glGetError();
glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, 1920*1080*3, NULL, GL_STREAM_DRAW_ARB);
enm = glGetError();
guibuffer[loop] = (UINT8*)glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, GL_WRITE_ONLY_ARB);
enm = glGetError();
稍后在guibuffer
缓冲区上执行YUV到RGB转换并使用opengl渲染它。
渲染非常适合上述显卡。但是,当我在NVidia GEFORCE 310 GT218
上尝试相同的代码时,我会在渲染窗口中看到白色屏幕。支持此显卡的开放GL版本为openGL 3.2
。
任何人都可以提出导致问题的原因吗?是不是两个显卡支持的opengl版本不同,或者内存分配方法对于不同版本是不同的。