OpenGLRenderer: Use glTexStorage2D instead of glTexImage2D
This commit is contained in:
parent
f7442982a4
commit
3ef74d6e1d
|
|
@ -31,6 +31,7 @@ namespace Nz::GL
|
||||||
|
|
||||||
inline void TexImage2D(GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type);
|
inline void TexImage2D(GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type);
|
||||||
inline void TexImage2D(GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* data);
|
inline void TexImage2D(GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* data);
|
||||||
|
inline void TexStorage2D(GLint levels, GLint internalFormat, GLsizei width, GLsizei height);
|
||||||
inline void TexSubImage2D(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* data);
|
inline void TexSubImage2D(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* data);
|
||||||
|
|
||||||
Texture& operator=(const Texture&) = delete;
|
Texture& operator=(const Texture&) = delete;
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,15 @@ namespace Nz::GL
|
||||||
context.glTexImage2D(ToOpenGL(m_target), level, internalFormat, width, height, border, format, type, data);
|
context.glTexImage2D(ToOpenGL(m_target), level, internalFormat, width, height, border, format, type, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void Texture::TexStorage2D(GLint levels, GLint internalFormat, GLsizei width, GLsizei height)
|
||||||
|
{
|
||||||
|
m_target = TextureTarget::Target2D;
|
||||||
|
|
||||||
|
const Context& context = EnsureDeviceContext();
|
||||||
|
context.BindTexture(m_target, m_objectId);
|
||||||
|
context.glTexStorage2D(ToOpenGL(m_target), levels, internalFormat, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
inline void Texture::TexSubImage2D(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* data)
|
inline void Texture::TexSubImage2D(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* data)
|
||||||
{
|
{
|
||||||
const Context& context = EnsureDeviceContext();
|
const Context& context = EnsureDeviceContext();
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,7 @@ namespace Nz
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ImageType_2D:
|
case ImageType_2D:
|
||||||
for (unsigned int level = 0; level < m_params.mipmapLevel; ++level)
|
m_texture.TexStorage2D(params.mipmapLevel, format->internalFormat, params.width, params.height);
|
||||||
m_texture.TexImage2D(0, format->internalFormat, GetLevelSize(params.width, level), GetLevelSize(params.height, level), 0, format->format, format->type);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ImageType_2D_Array:
|
case ImageType_2D_Array:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue