1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-04 10:03:36 +00:00

Use PBOBinder in FrameBufferToRDRAM::CopyToRDRAM and FrameBufferToRDRAM::CopyToRDRAM

This commit is contained in:
Sergey Lipskiy 2015-03-24 20:10:19 +06:00
parent 778d1e38d5
commit cf7d29a507

View File

@ -800,13 +800,11 @@ void FrameBufferToRDRAM::CopyToRDRAM(u32 _address) {
glBindFramebuffer(GL_READ_FRAMEBUFFER, m_FBO);
glReadBuffer(GL_COLOR_ATTACHMENT0);
#ifndef GLES2
glBindBuffer(GL_PIXEL_PACK_BUFFER, m_PBO);
glReadPixels( 0, 0, VI.width, VI.height, GL_RGBA, GL_UNSIGNED_BYTE, 0 );
PBOBinder binder(GL_PIXEL_PACK_BUFFER, m_PBO);
glReadPixels(0, 0, VI.width, VI.height, GL_RGBA, GL_UNSIGNED_BYTE, 0);
GLubyte* pixelData = (GLubyte*)glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY);
if(pixelData == NULL) {
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
if(pixelData == NULL)
return;
}
#else
m_curIndex = 0;
const u32 nextIndex = 0;
@ -839,7 +837,6 @@ void FrameBufferToRDRAM::CopyToRDRAM(u32 _address) {
pBuffer->m_cleared = false;
#ifndef GLES2
glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
#else
free(pixelData);
#endif
@ -960,16 +957,13 @@ bool DepthBufferToRDRAM::CopyToRDRAM( u32 _address) {
);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBufferList().getCurrent()->m_FBO);
glBindBuffer(GL_PIXEL_PACK_BUFFER, m_PBO);
PBOBinder binder(GL_PIXEL_PACK_BUFFER, m_PBO);
glBindFramebuffer(GL_READ_FRAMEBUFFER, m_FBO);
glReadPixels(0, 0, VI.width, VI.height, GL_DEPTH_COMPONENT, GL_FLOAT, 0);
glBindBuffer(GL_PIXEL_PACK_BUFFER, m_PBO);
GLubyte* pixelData = (GLubyte*)glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY);
if(pixelData == NULL) {
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
if(pixelData == NULL)
return false;
}
f32 * ptr_src = (f32*)pixelData;
u16 *ptr_dst = (u16*)(RDRAM + address);
@ -993,7 +987,6 @@ bool DepthBufferToRDRAM::CopyToRDRAM( u32 _address) {
pBuffer->m_cleared = false;
glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
glEnable(GL_SCISSOR_TEST);
return true;