mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
Remove FrameBufferExt functions usage.
This commit is contained in:
parent
a3d740ff23
commit
2708b2abeb
|
@ -30,7 +30,7 @@ void DepthBuffer_RemoveBottom()
|
|||
depthBuffer.top = NULL;
|
||||
|
||||
if (depthBuffer.bottom->renderbuf != 0)
|
||||
ogl_glDeleteRenderbuffers(1, &depthBuffer.bottom->renderbuf);
|
||||
glDeleteRenderbuffers(1, &depthBuffer.bottom->renderbuf);
|
||||
if (depthBuffer.bottom->depth_texture != NULL)
|
||||
TextureCache_Remove( depthBuffer.bottom->depth_texture );
|
||||
free( depthBuffer.bottom );
|
||||
|
@ -72,9 +72,9 @@ void DepthBuffer_Remove( DepthBuffer *buffer )
|
|||
}
|
||||
|
||||
if (buffer->renderbuf != 0)
|
||||
ogl_glDeleteRenderbuffers(1, &buffer->renderbuf);
|
||||
glDeleteRenderbuffers(1, &buffer->renderbuf);
|
||||
if (buffer->fbo != 0)
|
||||
ogl_glDeleteFramebuffers(1, &buffer->fbo);
|
||||
glDeleteFramebuffers(1, &buffer->fbo);
|
||||
if (buffer->depth_texture != NULL)
|
||||
TextureCache_Remove( buffer->depth_texture );
|
||||
free( buffer );
|
||||
|
@ -180,12 +180,12 @@ void DepthBuffer_SetBuffer( u32 address )
|
|||
current->width = pFrameBuffer != NULL ? pFrameBuffer->width : VI.width;
|
||||
current->depth_texture = NULL;
|
||||
if (OGL.frameBufferTextures) {
|
||||
ogl_glGenRenderbuffers(1, ¤t->renderbuf);
|
||||
ogl_glBindRenderbuffer(GL_RENDERBUFFER, current->renderbuf);
|
||||
glGenRenderbuffers(1, ¤t->renderbuf);
|
||||
glBindRenderbuffer(GL_RENDERBUFFER, current->renderbuf);
|
||||
if (pFrameBuffer != NULL)
|
||||
ogl_glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, pFrameBuffer->texture->realWidth, pFrameBuffer->texture->realHeight);
|
||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, pFrameBuffer->texture->realWidth, pFrameBuffer->texture->realHeight);
|
||||
else
|
||||
ogl_glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, (u32)pow2(OGL.width), (u32)pow2(OGL.height));
|
||||
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, (u32)pow2(OGL.width), (u32)pow2(OGL.height));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -224,8 +224,8 @@ void DepthBuffer_ClearBuffer() {
|
|||
return;
|
||||
float color[4] = {1.0f, 1.0f, 0.0f, 0.0f};
|
||||
glBindImageTexture(depthImageUnit, 0, 0, GL_FALSE, 0, GL_READ_WRITE, GL_RGBA32F);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
OGL_DrawRect(0,0,VI.width, VI.height, color);
|
||||
glBindImageTexture(depthImageUnit, current->depth_texture->glName, 0, GL_FALSE, 0, GL_READ_WRITE, GL_RGBA32F);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
}
|
||||
|
|
126
FrameBuffer.cpp
126
FrameBuffer.cpp
|
@ -143,7 +143,7 @@ void FrameBuffer_RemoveBottom()
|
|||
|
||||
TextureCache_Remove( frameBuffer.bottom->texture );
|
||||
if (frameBuffer.bottom->fbo != 0)
|
||||
ogl_glDeleteFramebuffers(1, &frameBuffer.bottom->fbo);
|
||||
glDeleteFramebuffers(1, &frameBuffer.bottom->fbo);
|
||||
|
||||
if (frameBuffer.bottom == frameBuffer.top)
|
||||
frameBuffer.top = NULL;
|
||||
|
@ -189,7 +189,7 @@ void FrameBuffer_Remove( FrameBuffer *buffer )
|
|||
if (buffer->texture != NULL)
|
||||
TextureCache_Remove( buffer->texture );
|
||||
if (buffer->fbo != 0)
|
||||
ogl_glDeleteFramebuffers(1, &buffer->fbo);
|
||||
glDeleteFramebuffers(1, &buffer->fbo);
|
||||
|
||||
free( buffer );
|
||||
|
||||
|
@ -295,7 +295,7 @@ void FrameBuffer_SaveBuffer( u32 address, u16 format, u16 size, u16 width, u16 h
|
|||
current = NULL;
|
||||
} else {
|
||||
FrameBuffer_MoveToTop( current );
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
if (current->size != size) {
|
||||
f32 fillColor[4];
|
||||
gDPGetFillColor(fillColor);
|
||||
|
@ -346,10 +346,10 @@ void FrameBuffer_SaveBuffer( u32 address, u16 format, u16 size, u16 width, u16 h
|
|||
glTexImage2D(GL_TEXTURE_2D, 0, monohromeInternalformat, current->texture->realWidth, current->texture->realHeight, 0, monohromeformat, GL_UNSIGNED_BYTE, NULL);
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
ogl_glGenFramebuffers(1, ¤t->fbo);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
ogl_glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, current->texture->glName, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glGenFramebuffers(1, ¤t->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, current->texture->glName, 0);
|
||||
}
|
||||
|
||||
FrameBuffer_AttachDepthBuffer();
|
||||
|
@ -399,12 +399,12 @@ void _initDepthTexture()
|
|||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||
glBindTexture( GL_TEXTURE_2D, 0);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
ogl_glGenFramebuffers(1, &depthBuffer.top->fbo);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, depthBuffer.top->fbo);
|
||||
ogl_glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, depthBuffer.top->depth_texture->glName, 0);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glGenFramebuffers(1, &depthBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, depthBuffer.top->fbo);
|
||||
glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, depthBuffer.top->depth_texture->glName, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
frameBuffer.top->pDepthBuffer = depthBuffer.top;
|
||||
DepthBuffer_ClearBuffer();
|
||||
#endif // GLES2
|
||||
|
@ -416,15 +416,15 @@ void FrameBuffer_AttachDepthBuffer()
|
|||
if (depthBuffer.top->depth_texture == NULL)
|
||||
_initDepthTexture();
|
||||
frameBuffer.top->pDepthBuffer = depthBuffer.top;
|
||||
ogl_glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer.top->renderbuf);
|
||||
glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer.top->renderbuf);
|
||||
GLuint attachments[2] = { GL_COLOR_ATTACHMENT0, GL_DEPTH_ATTACHMENT };
|
||||
ogl_glDrawBuffers(2, attachments, frameBuffer.top->texture->glName);
|
||||
glDrawBuffers(2, attachments);
|
||||
glBindImageTexture(depthImageUnit, depthBuffer.top->depth_texture->glName, 0, GL_FALSE, 0, GL_READ_WRITE, GL_RGBA32F);
|
||||
assert(checkFBO());
|
||||
} else if (frameBuffer.top != NULL) {
|
||||
frameBuffer.top->pDepthBuffer = 0;
|
||||
GLuint attachments[1] = { GL_COLOR_ATTACHMENT0 };
|
||||
ogl_glDrawBuffers(1, attachments, frameBuffer.top->texture->glName);
|
||||
glDrawBuffers(1, attachments);
|
||||
assert(checkFBO());
|
||||
}
|
||||
Combiner_UpdateCombineDepthInfo();
|
||||
|
@ -456,12 +456,12 @@ void FrameBuffer_RenderBuffer( u32 address )
|
|||
dstY1 -= partHeight;
|
||||
}
|
||||
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, current->fbo);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, current->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
//glDrawBuffer( GL_BACK );
|
||||
float clearColor[4] = {0.0f, 0.0f, 0.0f, 0.0f};
|
||||
OGL_ClearColorBuffer(clearColor);
|
||||
ogl_glBlitFramebuffer(
|
||||
glBlitFramebuffer(
|
||||
0, (GLint)(srcY0*OGL.scaleY), OGL.width, (GLint)(srcY1*OGL.scaleY),
|
||||
0, OGL.heightOffset + (GLint)(dstY0*viScaleY), OGL.width, OGL.heightOffset + (GLint)(dstY1*viScaleY),
|
||||
GL_COLOR_BUFFER_BIT, GL_LINEAR
|
||||
|
@ -474,16 +474,16 @@ void FrameBuffer_RenderBuffer( u32 address )
|
|||
srcY1 = partHeight;
|
||||
dstY0 = dstY1;
|
||||
dstY1 = dstY0 + partHeight;
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, current->fbo);
|
||||
ogl_glBlitFramebuffer(
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, current->fbo);
|
||||
glBlitFramebuffer(
|
||||
0, (GLint)(srcY0*OGL.scaleY), OGL.width, (GLint)(srcY1*OGL.scaleY),
|
||||
0, OGL.heightOffset + (GLint)(dstY0*viScaleY), OGL.width, OGL.heightOffset + (GLint)(dstY1*viScaleY),
|
||||
GL_COLOR_BUFFER_BIT, GL_LINEAR
|
||||
);
|
||||
}
|
||||
}
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
OGL_SwapBuffers();
|
||||
}
|
||||
#else
|
||||
|
@ -499,15 +499,15 @@ void FrameBuffer_RenderBuffer( u32 address )
|
|||
{
|
||||
/*
|
||||
float fill_color[4] = {1.0f, 0.0f, 0.0f, 1.0f};
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
ogl_glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer.top->renderbuf);
|
||||
ogl_glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer.top->renderbuf);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
glBindRenderbuffer(GL_RENDERBUFFER, depthBuffer.top->renderbuf);
|
||||
glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer.top->renderbuf);
|
||||
GLuint attachments[2] = { GL_COLOR_ATTACHMENT0, GL_DEPTH_ATTACHMENT };
|
||||
ogl_glDrawBuffers(2, attachments, current->texture->glName);
|
||||
glDrawBuffers(2, attachments, current->texture->glName);
|
||||
assert(checkFBO());
|
||||
OGL_ClearDepthBuffer();
|
||||
OGL_ClearColorBuffer(fill_color);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
*/
|
||||
|
||||
glPushAttrib( GL_ENABLE_BIT | GL_VIEWPORT_BIT );
|
||||
|
@ -535,7 +535,7 @@ void FrameBuffer_RenderBuffer( u32 address )
|
|||
u1 = (float)current->texture->width / (float)current->texture->realWidth;
|
||||
v1 = (float)current->texture->height / (float)current->texture->realHeight;
|
||||
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glDrawBuffer( GL_FRONT );
|
||||
glBegin(GL_QUADS);
|
||||
glTexCoord2f( 0.0f, 0.0f );
|
||||
|
@ -551,7 +551,7 @@ void FrameBuffer_RenderBuffer( u32 address )
|
|||
glVertex2f( current->texture->width, (GLfloat)(OGL.height - current->texture->height) );
|
||||
glEnd();
|
||||
glDrawBuffer( GL_BACK );
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
#ifdef DEBUG
|
||||
DebugMsg( DEBUG_HIGH | DEBUG_HANDLED, "FrameBuffer_RenderBuffer( 0x%08X ); \n", address);
|
||||
#endif
|
||||
|
@ -642,9 +642,9 @@ void FrameBuffer_ActivateBufferTextureBG( s16 t, FrameBuffer *buffer )
|
|||
void FrameBufferToRDRAM::Init()
|
||||
{
|
||||
// generate a framebuffer
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
ogl_glGenFramebuffers(1, &m_FBO);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glGenFramebuffers(1, &m_FBO);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO);
|
||||
|
||||
m_pTexture = TextureCache_AddTop();
|
||||
m_pTexture->format = G_IM_FMT_RGBA;
|
||||
|
@ -665,10 +665,10 @@ void FrameBufferToRDRAM::Init()
|
|||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
ogl_glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, m_pTexture->glName, 0);
|
||||
glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, m_pTexture->glName, 0);
|
||||
// check if everything is OK
|
||||
assert(checkFBO());
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
|
||||
#ifndef GLES2
|
||||
// Generate and initialize Pixel Buffer Objects
|
||||
|
@ -682,8 +682,8 @@ void FrameBufferToRDRAM::Init()
|
|||
}
|
||||
|
||||
void FrameBufferToRDRAM::Destroy() {
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
ogl_glDeleteFramebuffers(1, &m_FBO);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glDeleteFramebuffers(1, &m_FBO);
|
||||
m_FBO = 0;
|
||||
TextureCache_Remove( m_pTexture );
|
||||
m_pTexture = NULL;
|
||||
|
@ -699,19 +699,19 @@ void FrameBufferToRDRAM::CopyToRDRAM( u32 address, bool bSync ) {
|
|||
return;
|
||||
|
||||
address = current->startAddress;
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, current->fbo);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, current->fbo);
|
||||
glReadBuffer(GL_COLOR_ATTACHMENT0);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO);
|
||||
GLuint attachment = GL_COLOR_ATTACHMENT0;
|
||||
glDrawBuffers(1, &attachment);
|
||||
ogl_glBlitFramebuffer(
|
||||
glBlitFramebuffer(
|
||||
0, 0, OGL.width, OGL.height,
|
||||
0, 0, current->width, current->height,
|
||||
GL_COLOR_BUFFER_BIT, GL_LINEAR
|
||||
);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, m_FBO);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, m_FBO);
|
||||
glReadBuffer(GL_COLOR_ATTACHMENT0);
|
||||
#ifndef GLES2
|
||||
// If Sync, read pixels from the buffer, copy them to RDRAM.
|
||||
|
@ -765,7 +765,7 @@ void FrameBufferToRDRAM::CopyToRDRAM( u32 address, bool bSync ) {
|
|||
#else
|
||||
free(pixelData);
|
||||
#endif
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
}
|
||||
|
||||
void FrameBuffer_CopyToRDRAM( u32 address, bool bSync )
|
||||
|
@ -777,9 +777,9 @@ void FrameBuffer_CopyToRDRAM( u32 address, bool bSync )
|
|||
void DepthBufferToRDRAM::Init()
|
||||
{
|
||||
// generate a framebuffer
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
ogl_glGenFramebuffers(1, &m_FBO);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glGenFramebuffers(1, &m_FBO);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO);
|
||||
|
||||
m_pTexture = TextureCache_AddTop();
|
||||
m_pTexture->format = G_IM_FMT_IA;
|
||||
|
@ -800,10 +800,10 @@ void DepthBufferToRDRAM::Init()
|
|||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
ogl_glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, m_pTexture->glName, 0);
|
||||
glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, m_pTexture->glName, 0);
|
||||
// check if everything is OK
|
||||
assert(checkFBO());
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
|
||||
// Generate and initialize Pixel Buffer Objects
|
||||
glGenBuffers(2, m_aPBO);
|
||||
|
@ -815,8 +815,8 @@ void DepthBufferToRDRAM::Init()
|
|||
}
|
||||
|
||||
void DepthBufferToRDRAM::Destroy() {
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
ogl_glDeleteFramebuffers(1, &m_FBO);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glDeleteFramebuffers(1, &m_FBO);
|
||||
m_FBO = 0;
|
||||
TextureCache_Remove( m_pTexture );
|
||||
m_pTexture = NULL;
|
||||
|
@ -831,23 +831,23 @@ void DepthBufferToRDRAM::CopyToRDRAM( u32 address) {
|
|||
|
||||
DepthBuffer * pDepthBuffer = current->pDepthBuffer;
|
||||
address = pDepthBuffer->address;
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, pDepthBuffer->fbo);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, pDepthBuffer->fbo);
|
||||
glReadBuffer(GL_COLOR_ATTACHMENT0);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO);
|
||||
GLuint attachment = GL_COLOR_ATTACHMENT0;
|
||||
glDrawBuffers(1, &attachment);
|
||||
ogl_glBlitFramebuffer(
|
||||
glBlitFramebuffer(
|
||||
0, 0, OGL.width, OGL.height,
|
||||
0, 0, current->width, current->height,
|
||||
GL_COLOR_BUFFER_BIT, GL_LINEAR
|
||||
);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
|
||||
m_curIndex = (m_curIndex + 1) % 2;
|
||||
const u32 nextIndex = m_aAddress[m_curIndex] == 0 ? m_curIndex : (m_curIndex + 1) % 2;
|
||||
m_aAddress[m_curIndex] = address;
|
||||
glBindBuffer(GL_PIXEL_PACK_BUFFER, m_aPBO[m_curIndex]);
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, m_FBO);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, m_FBO);
|
||||
glReadBuffer(GL_COLOR_ATTACHMENT0);
|
||||
glReadPixels( 0, 0, VI.width, VI.height, GL_RED, GL_UNSIGNED_SHORT, 0 );
|
||||
|
||||
|
@ -871,7 +871,7 @@ void DepthBufferToRDRAM::CopyToRDRAM( u32 address) {
|
|||
|
||||
glUnmapBuffer(GL_PIXEL_PACK_BUFFER);
|
||||
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
}
|
||||
#endif // GLES2
|
||||
|
||||
|
@ -1004,18 +1004,18 @@ void RDRAMtoFrameBuffer::CopyFromRDRAM( u32 _address, bool _bUseAlpha)
|
|||
#if 0
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, m_FBO);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, m_FBO);
|
||||
const GLuint attachment = GL_COLOR_ATTACHMENT0;
|
||||
glReadBuffer(attachment);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
glDrawBuffers(1, &attachment);
|
||||
ogl_glBlitFramebuffer(
|
||||
glBlitFramebuffer(
|
||||
0, 0, width, height,
|
||||
0, 0, OGL.width, OGL.height,
|
||||
GL_COLOR_BUFFER_BIT, GL_LINEAR
|
||||
);
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
#else
|
||||
GLfloat u1, v1, x1, y1;
|
||||
u1 = (GLfloat)width / (GLfloat)m_pTexture->realWidth;
|
||||
|
@ -1050,7 +1050,7 @@ void RDRAMtoFrameBuffer::CopyFromRDRAM( u32 _address, bool _bUseAlpha)
|
|||
glViewport( 0, 0, x1, y1 );
|
||||
glDisable( GL_SCISSOR_TEST );
|
||||
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, current->fbo);
|
||||
const GLuint attachment = GL_COLOR_ATTACHMENT0;
|
||||
glDrawBuffers(1, &attachment);
|
||||
glBegin(GL_QUADS);
|
||||
|
@ -1066,7 +1066,7 @@ void RDRAMtoFrameBuffer::CopyFromRDRAM( u32 _address, bool _bUseAlpha)
|
|||
glTexCoord2f( u1, 0.0f );
|
||||
glVertex2f( x1, 0.0f );
|
||||
glEnd();
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
|
||||
glLoadIdentity();
|
||||
|
|
|
@ -207,7 +207,7 @@ void InitGLSLCombiner()
|
|||
}
|
||||
|
||||
void DestroyGLSLCombiner() {
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
DestroyZlutTexture();
|
||||
DestroyShadowMapShader();
|
||||
}
|
||||
|
@ -692,17 +692,17 @@ void GLSL_RenderDepth() {
|
|||
if (!OGL.bImageTexture)
|
||||
return;
|
||||
#if 0
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, g_zbuf_fbo);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, g_zbuf_fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glDrawBuffer( GL_FRONT );
|
||||
ogl_glBlitFramebuffer(
|
||||
glBlitFramebuffer(
|
||||
0, 0, OGL.width, OGL.height,
|
||||
0, OGL.heightOffset, OGL.width, OGL.heightOffset + OGL.height,
|
||||
GL_COLOR_BUFFER_BIT, GL_LINEAR
|
||||
);
|
||||
glDrawBuffer( GL_BACK );
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top != NULL ? frameBuffer.top->fbo : 0);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top != NULL ? frameBuffer.top->fbo : 0);
|
||||
#else
|
||||
if (frameBuffer.top == NULL || frameBuffer.top->pDepthBuffer == NULL)
|
||||
return;
|
||||
|
@ -733,7 +733,7 @@ void GLSL_RenderDepth() {
|
|||
u1 = 1.0;
|
||||
v1 = 1.0;
|
||||
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
|
||||
#ifdef _WINDOWS
|
||||
glDrawBuffer( GL_FRONT );
|
||||
#else
|
||||
|
@ -757,7 +757,7 @@ void GLSL_RenderDepth() {
|
|||
#else
|
||||
OGL_SwapBuffers();
|
||||
#endif
|
||||
ogl_glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, frameBuffer.top->fbo);
|
||||
glBindImageTexture(depthImageUnit, frameBuffer.top->pDepthBuffer->depth_texture->glName, 0, GL_FALSE, 0, GL_READ_WRITE, GL_RGBA32F);
|
||||
|
||||
|
||||
|
|
250
OpenGL.cpp
250
OpenGL.cpp
|
@ -76,18 +76,6 @@ PFNGLDELETEBUFFERSPROC glDeleteBuffers;
|
|||
PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
|
||||
PFNGLMEMORYBARRIERPROC glMemoryBarrier;
|
||||
|
||||
|
||||
PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT;
|
||||
PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT;
|
||||
PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT;
|
||||
PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT;
|
||||
PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT;
|
||||
PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT;
|
||||
PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT;
|
||||
PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT;
|
||||
PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT;
|
||||
PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT;
|
||||
PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT;
|
||||
#endif // _WINDOWS
|
||||
|
||||
BOOL isExtensionSupported( const char *extension )
|
||||
|
@ -182,24 +170,10 @@ void OGL_InitExtensions()
|
|||
glBindImageTexture = (PFNGLBINDIMAGETEXTUREPROC)wglGetProcAddress( "glBindImageTexture" );
|
||||
glMemoryBarrier = (PFNGLMEMORYBARRIERPROC)wglGetProcAddress( "glMemoryBarrier" );
|
||||
|
||||
glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)wglGetProcAddress("glBindFramebufferEXT");
|
||||
glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)wglGetProcAddress("glFramebufferTexture2DEXT");
|
||||
glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)wglGetProcAddress("glGenFramebuffersEXT");
|
||||
glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)wglGetProcAddress("glCheckFramebufferStatusEXT");
|
||||
glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC)wglGetProcAddress("glDeleteFramebuffersEXT");
|
||||
|
||||
glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)wglGetProcAddress("glBindRenderbufferEXT");
|
||||
glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC)wglGetProcAddress("glDeleteRenderbuffersEXT");
|
||||
glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)wglGetProcAddress("glGenRenderbuffersEXT");
|
||||
glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)wglGetProcAddress("glRenderbufferStorageEXT");
|
||||
glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)wglGetProcAddress("glFramebufferRenderbufferEXT");
|
||||
glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)wglGetProcAddress("glBlitFramebufferEXT");
|
||||
#endif // _WINDOWS
|
||||
|
||||
if (glGenFramebuffers != NULL)
|
||||
OGL.framebufferMode = GLInfo::fbFBO;
|
||||
else if (glBindFramebufferEXT != NULL)
|
||||
OGL.framebufferMode = GLInfo::fbFBOEXT;
|
||||
else
|
||||
OGL.framebufferMode = GLInfo::fbNone;
|
||||
|
||||
|
@ -1119,7 +1093,7 @@ void OGL_SaveScreenshot()
|
|||
|
||||
GLint oldMode;
|
||||
glGetIntegerv( GL_READ_BUFFER, &oldMode );
|
||||
ogl_glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||
glReadBuffer( GL_FRONT );
|
||||
glReadPixels( 0, OGL.heightOffset, OGL.width, OGL.height, GL_BGR_EXT, GL_UNSIGNED_BYTE, pixelData );
|
||||
glReadBuffer( oldMode );
|
||||
|
@ -1214,217 +1188,8 @@ void OGL_SwapBuffers()
|
|||
#endif // _WINDOWS
|
||||
}
|
||||
|
||||
void ogl_glGenFramebuffers (GLsizei n, GLuint *framebuffers) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glGenFramebuffers(n, framebuffers);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
glGenFramebuffersEXT(n, framebuffers);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ogl_glBindFramebuffer (GLenum target, GLuint framebuffer) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glBindFramebuffer(target, framebuffer);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
switch (target) {
|
||||
case GL_DRAW_FRAMEBUFFER:
|
||||
target = GL_FRAMEBUFFER_EXT;
|
||||
break;
|
||||
case GL_READ_FRAMEBUFFER:
|
||||
target = GL_READ_FRAMEBUFFER_EXT;
|
||||
break;
|
||||
}
|
||||
glBindFramebufferEXT(target, framebuffer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ogl_glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glDeleteFramebuffers(n, framebuffers);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
glDeleteFramebuffersEXT(n, framebuffers);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ogl_glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glFramebufferTexture(target, attachment, texture, level);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
switch (target) {
|
||||
case GL_DRAW_FRAMEBUFFER:
|
||||
target = GL_FRAMEBUFFER_EXT;
|
||||
break;
|
||||
}
|
||||
switch (attachment) {
|
||||
case GL_COLOR_ATTACHMENT0:
|
||||
attachment = GL_COLOR_ATTACHMENT0_EXT;
|
||||
break;
|
||||
case GL_COLOR_ATTACHMENT1:
|
||||
attachment = GL_COLOR_ATTACHMENT1_EXT;
|
||||
break;
|
||||
case GL_COLOR_ATTACHMENT2:
|
||||
attachment = GL_COLOR_ATTACHMENT2_EXT;
|
||||
break;
|
||||
case GL_COLOR_ATTACHMENT3:
|
||||
attachment = GL_COLOR_ATTACHMENT3_EXT;
|
||||
break;
|
||||
}
|
||||
glFramebufferTexture2DEXT(target, attachment, GL_TEXTURE_2D, texture, level);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ogl_glGenRenderbuffers (GLsizei n, GLuint *renderbuffers) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glGenRenderbuffers(n, renderbuffers);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
glGenRenderbuffersEXT(n, renderbuffers);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ogl_glBindRenderbuffer (GLenum target, GLuint renderbuffer) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glBindRenderbuffer(target, renderbuffer);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
switch (target) {
|
||||
case GL_RENDERBUFFER:
|
||||
target = GL_RENDERBUFFER_EXT;
|
||||
break;
|
||||
}
|
||||
glBindRenderbufferEXT(target, renderbuffer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ogl_glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glRenderbufferStorage(target, internalformat, width, height);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
switch (target) {
|
||||
case GL_RENDERBUFFER:
|
||||
target = GL_RENDERBUFFER_EXT;
|
||||
break;
|
||||
}
|
||||
glRenderbufferStorageEXT(target, internalformat, width, height);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ogl_glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glDeleteRenderbuffers(n, renderbuffers);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
glDeleteRenderbuffersEXT(n, renderbuffers);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ogl_glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glFramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
switch (target) {
|
||||
case GL_DRAW_FRAMEBUFFER:
|
||||
target = GL_FRAMEBUFFER_EXT;
|
||||
break;
|
||||
}
|
||||
switch (attachment) {
|
||||
case GL_COLOR_ATTACHMENT0:
|
||||
attachment = GL_COLOR_ATTACHMENT0_EXT;
|
||||
break;
|
||||
case GL_COLOR_ATTACHMENT1:
|
||||
attachment = GL_COLOR_ATTACHMENT1_EXT;
|
||||
break;
|
||||
case GL_COLOR_ATTACHMENT2:
|
||||
attachment = GL_COLOR_ATTACHMENT2_EXT;
|
||||
break;
|
||||
case GL_COLOR_ATTACHMENT3:
|
||||
attachment = GL_COLOR_ATTACHMENT3_EXT;
|
||||
break;
|
||||
case GL_DEPTH_ATTACHMENT:
|
||||
attachment = GL_DEPTH_ATTACHMENT_EXT;
|
||||
break;
|
||||
}
|
||||
switch (renderbuffertarget) {
|
||||
case GL_RENDERBUFFER:
|
||||
target = GL_RENDERBUFFER_EXT;
|
||||
break;
|
||||
}
|
||||
glFramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ogl_glDrawBuffers (GLsizei n, const GLenum *bufs, GLuint texture) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glDrawBuffers(n, bufs);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texture, 0);
|
||||
break;
|
||||
}
|
||||
assert(checkFBO());
|
||||
}
|
||||
|
||||
GLenum ogl_glCheckFramebufferStatus (GLenum target) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
return glCheckFramebufferStatus(target);
|
||||
case GLInfo::fbFBOEXT:
|
||||
switch (target) {
|
||||
case GL_DRAW_FRAMEBUFFER:
|
||||
target = GL_FRAMEBUFFER_EXT;
|
||||
break;
|
||||
}
|
||||
switch (glCheckFramebufferStatusEXT(target)) {
|
||||
case GL_FRAMEBUFFER_COMPLETE_EXT:
|
||||
return GL_FRAMEBUFFER_COMPLETE;
|
||||
case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
|
||||
return GL_FRAMEBUFFER_UNSUPPORTED;
|
||||
case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:
|
||||
return GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT;
|
||||
case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:
|
||||
return GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT;
|
||||
case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:
|
||||
return GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT;
|
||||
case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT:
|
||||
return GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT;
|
||||
case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT:
|
||||
return GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER;
|
||||
case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT:
|
||||
return GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER;
|
||||
case GL_FRAMEBUFFER_BINDING_EXT:
|
||||
return GL_FRAMEBUFFER_BINDING;
|
||||
}
|
||||
}
|
||||
return GL_FRAMEBUFFER_UNSUPPORTED;
|
||||
}
|
||||
|
||||
bool checkFBO() {
|
||||
GLenum e = ogl_glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER);
|
||||
GLenum e = glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER);
|
||||
switch (e) {
|
||||
case GL_FRAMEBUFFER_UNDEFINED:
|
||||
printf("FBO Undefined\n");
|
||||
|
@ -1455,14 +1220,3 @@ bool checkFBO() {
|
|||
}
|
||||
return e == GL_FRAMEBUFFER_COMPLETE;
|
||||
}
|
||||
|
||||
void ogl_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
|
||||
switch (OGL.framebufferMode) {
|
||||
case GLInfo::fbFBO:
|
||||
glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
break;
|
||||
case GLInfo::fbFBOEXT:
|
||||
glBlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
26
OpenGL.h
26
OpenGL.h
|
@ -76,8 +76,7 @@ struct GLInfo
|
|||
BYTE combiner;
|
||||
enum {
|
||||
fbNone,
|
||||
fbFBO,
|
||||
fbFBOEXT
|
||||
fbFBO
|
||||
} framebufferMode;
|
||||
enum {
|
||||
rsNone = 0,
|
||||
|
@ -116,18 +115,6 @@ void OGL_SaveScreenshot();
|
|||
void OGL_SwapBuffers();
|
||||
void OGL_ReadScreen( void **dest, long *width, long *height );
|
||||
|
||||
void ogl_glGenFramebuffers (GLsizei n, GLuint *framebuffers);
|
||||
void ogl_glBindFramebuffer (GLenum target, GLuint framebuffer);
|
||||
void ogl_glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
|
||||
void ogl_glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
|
||||
void ogl_glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
|
||||
void ogl_glBindRenderbuffer (GLenum target, GLuint renderbuffer);
|
||||
void ogl_glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
|
||||
void ogl_glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
|
||||
void ogl_glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
|
||||
void ogl_glDrawBuffers (GLsizei n, const GLenum *bufs, GLuint texture);
|
||||
GLenum ogl_glCheckFramebufferStatus (GLenum target);
|
||||
void ogl_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
|
||||
bool checkFBO();
|
||||
|
||||
#ifdef _WINDOWS
|
||||
|
@ -182,16 +169,5 @@ extern PFNGLDELETEBUFFERSPROC glDeleteBuffers;
|
|||
extern PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
|
||||
extern PFNGLMEMORYBARRIERPROC glMemoryBarrier;
|
||||
|
||||
extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT;
|
||||
extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT;
|
||||
extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT;
|
||||
extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT;
|
||||
extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT;
|
||||
extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT;
|
||||
extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT;
|
||||
extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT;
|
||||
extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT;
|
||||
extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT;
|
||||
extern PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT;
|
||||
#endif // !_WINDOWS
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue
Block a user