summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/FramebufferManager.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2015-12-22 18:06:05 -0500
committerLioncash <mathew1800@gmail.com>2015-12-22 18:06:05 -0500
commite422af9cce63307fb441fefd1a450f275c6f15a5 (patch)
treebfc22773961c16c191c704e8873621ec175d7082 /Source/Core/VideoBackends/OGL/FramebufferManager.cpp
parent1b69743ba14ebca7c51862b7df8da6751eb213f0 (diff)
FramebufferManager: Get rid of raw new and delete
Diffstat (limited to 'Source/Core/VideoBackends/OGL/FramebufferManager.cpp')
-rw-r--r--Source/Core/VideoBackends/OGL/FramebufferManager.cpp25
1 files changed, 13 insertions, 12 deletions
diff --git a/Source/Core/VideoBackends/OGL/FramebufferManager.cpp b/Source/Core/VideoBackends/OGL/FramebufferManager.cpp
index e59af17e25..6d886f881f 100644
--- a/Source/Core/VideoBackends/OGL/FramebufferManager.cpp
+++ b/Source/Core/VideoBackends/OGL/FramebufferManager.cpp
@@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include <memory>
+#include <vector>
#include "Common/Common.h"
#include "Common/CommonFuncs.h"
@@ -26,14 +27,14 @@ int FramebufferManager::m_targetHeight;
int FramebufferManager::m_msaaSamples;
GLenum FramebufferManager::m_textureType;
-GLuint* FramebufferManager::m_efbFramebuffer;
+std::vector<GLuint> FramebufferManager::m_efbFramebuffer;
GLuint FramebufferManager::m_xfbFramebuffer;
GLuint FramebufferManager::m_efbColor;
GLuint FramebufferManager::m_efbDepth;
GLuint FramebufferManager::m_efbColorSwap; // for hot swap when reinterpreting EFB pixel formats
// Only used in MSAA mode.
-GLuint* FramebufferManager::m_resolvedFramebuffer;
+std::vector<GLuint> FramebufferManager::m_resolvedFramebuffer;
GLuint FramebufferManager::m_resolvedColorTexture;
GLuint FramebufferManager::m_resolvedDepthTexture;
@@ -79,8 +80,8 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms
m_efbColorSwap = glObj[2];
m_EFBLayers = (g_ActiveConfig.iStereoMode > 0) ? 2 : 1;
- m_efbFramebuffer = new GLuint[m_EFBLayers]();
- m_resolvedFramebuffer = new GLuint[m_EFBLayers]();
+ m_efbFramebuffer.resize(m_EFBLayers);
+ m_resolvedFramebuffer.resize(m_EFBLayers);
// OpenGL MSAA textures are a different kind of texture type and must be allocated
// with a different function, so we create them separately.
@@ -183,7 +184,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms
glTexImage3D(resolvedType, 0, GL_DEPTH_COMPONENT32F, m_targetWidth, m_targetHeight, m_EFBLayers, 0, GL_DEPTH_COMPONENT, GL_FLOAT, nullptr);
// Bind resolved textures to resolved framebuffer.
- glGenFramebuffers(m_EFBLayers, m_resolvedFramebuffer);
+ glGenFramebuffers(m_EFBLayers, m_resolvedFramebuffer.data());
glBindFramebuffer(GL_FRAMEBUFFER, m_resolvedFramebuffer[0]);
FramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, resolvedType, m_resolvedColorTexture, 0);
FramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, resolvedType, m_resolvedDepthTexture, 0);
@@ -201,7 +202,7 @@ FramebufferManager::FramebufferManager(int targetWidth, int targetHeight, int ms
glGenFramebuffers(1, &m_xfbFramebuffer);
// Bind target textures to EFB framebuffer.
- glGenFramebuffers(m_EFBLayers, m_efbFramebuffer);
+ glGenFramebuffers(m_EFBLayers, m_efbFramebuffer.data());
glBindFramebuffer(GL_FRAMEBUFFER, m_efbFramebuffer[0]);
FramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, m_textureType, m_efbColor, 0);
FramebufferTexture(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, m_textureType, m_efbDepth, 0);
@@ -414,12 +415,12 @@ FramebufferManager::~FramebufferManager()
// Note: OpenGL deletion functions silently ignore parameters of "0".
- glDeleteFramebuffers(m_EFBLayers, m_efbFramebuffer);
- glDeleteFramebuffers(m_EFBLayers, m_resolvedFramebuffer);
- delete [] m_efbFramebuffer;
- delete [] m_resolvedFramebuffer;
- m_efbFramebuffer = nullptr;
- m_resolvedFramebuffer = nullptr;
+ glDeleteFramebuffers(m_EFBLayers, m_efbFramebuffer.data());
+ glDeleteFramebuffers(m_EFBLayers, m_resolvedFramebuffer.data());
+
+ // Required, as these are static class members
+ m_efbFramebuffer.clear();
+ m_resolvedFramebuffer.clear();
glDeleteFramebuffers(1, &m_xfbFramebuffer);
m_xfbFramebuffer = 0;