GL/Texture: Add internal format as parameter
This commit is contained in:
parent
990147b7e9
commit
4a4c3d5e3b
|
@ -21,14 +21,15 @@ Texture::~Texture()
|
||||||
Destroy();
|
Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Texture::Create(u32 width, u32 height, GLenum format, GLenum type, const void* data, bool linear_filter)
|
bool Texture::Create(u32 width, u32 height, GLenum internal_format, GLenum format, GLenum type, const void* data,
|
||||||
|
bool linear_filter)
|
||||||
{
|
{
|
||||||
glGetError();
|
glGetError();
|
||||||
|
|
||||||
GLuint id;
|
GLuint id;
|
||||||
glGenTextures(1, &id);
|
glGenTextures(1, &id);
|
||||||
glBindTexture(GL_TEXTURE_2D, id);
|
glBindTexture(GL_TEXTURE_2D, id);
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, format, width, height, 0, format, type, data);
|
glTexImage2D(GL_TEXTURE_2D, 0, internal_format, width, height, 0, format, type, data);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, linear_filter ? GL_LINEAR : GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, linear_filter ? GL_LINEAR : GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, linear_filter ? GL_LINEAR : GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, linear_filter ? GL_LINEAR : GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1);
|
||||||
|
|
|
@ -10,7 +10,7 @@ public:
|
||||||
Texture(Texture&& moved);
|
Texture(Texture&& moved);
|
||||||
~Texture();
|
~Texture();
|
||||||
|
|
||||||
bool Create(u32 width, u32 height, GLenum format, GLenum type, const void* data = nullptr,
|
bool Create(u32 width, u32 height, GLenum internal_format, GLenum format, GLenum type, const void* data = nullptr,
|
||||||
bool linear_filter = false);
|
bool linear_filter = false);
|
||||||
bool CreateFramebuffer();
|
bool CreateFramebuffer();
|
||||||
|
|
||||||
|
|
|
@ -211,7 +211,7 @@ bool GPU_HW_OpenGL::CreateFramebuffer()
|
||||||
const u32 texture_width = VRAM_WIDTH * m_resolution_scale;
|
const u32 texture_width = VRAM_WIDTH * m_resolution_scale;
|
||||||
const u32 texture_height = VRAM_HEIGHT * m_resolution_scale;
|
const u32 texture_height = VRAM_HEIGHT * m_resolution_scale;
|
||||||
|
|
||||||
if (!m_vram_texture.Create(texture_width, texture_height, GL_RGBA, GL_UNSIGNED_BYTE, nullptr, false) ||
|
if (!m_vram_texture.Create(texture_width, texture_height, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, nullptr, false) ||
|
||||||
!m_vram_texture.CreateFramebuffer())
|
!m_vram_texture.CreateFramebuffer())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -233,11 +233,11 @@ bool GPU_HW_OpenGL::CreateFramebuffer()
|
||||||
old_vram_texture.Destroy();
|
old_vram_texture.Destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_vram_read_texture.Create(texture_width, texture_height, GL_RGBA, GL_UNSIGNED_BYTE, nullptr, false) ||
|
if (!m_vram_read_texture.Create(texture_width, texture_height, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, nullptr, false) ||
|
||||||
!m_vram_read_texture.CreateFramebuffer() ||
|
!m_vram_read_texture.CreateFramebuffer() ||
|
||||||
!m_vram_encoding_texture.Create(VRAM_WIDTH, VRAM_HEIGHT, GL_RGBA, GL_UNSIGNED_BYTE, nullptr, false) ||
|
!m_vram_encoding_texture.Create(VRAM_WIDTH, VRAM_HEIGHT, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, nullptr, false) ||
|
||||||
!m_vram_encoding_texture.CreateFramebuffer() ||
|
!m_vram_encoding_texture.CreateFramebuffer() ||
|
||||||
!m_display_texture.Create(texture_width, texture_height, GL_RGBA, GL_UNSIGNED_BYTE, nullptr, false) ||
|
!m_display_texture.Create(texture_width, texture_height, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, nullptr, false) ||
|
||||||
!m_display_texture.CreateFramebuffer())
|
!m_display_texture.CreateFramebuffer())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue