Added a lot more texture formats
Former-commit-id: b3a553ea39a174d84c5cd6fcca853ee83c1e6670
This commit is contained in:
@@ -1340,6 +1340,7 @@ void NzOpenGL::SetViewport(const NzRecti& viewport)
|
||||
|
||||
bool NzOpenGL::TranslateFormat(nzPixelFormat pixelFormat, Format* format, FormatType type)
|
||||
{
|
||||
///FIXME: Vérifier certains dataType
|
||||
switch (pixelFormat)
|
||||
{
|
||||
case nzPixelFormat_BGR8:
|
||||
@@ -1376,6 +1377,126 @@ bool NzOpenGL::TranslateFormat(nzPixelFormat pixelFormat, Format* format, Format
|
||||
case nzPixelFormat_LA8:
|
||||
return false;
|
||||
|
||||
case nzPixelFormat_R8:
|
||||
format->dataFormat = GL_RED;
|
||||
format->dataType = GL_UNSIGNED_BYTE;
|
||||
format->internalFormat = GL_R8;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_R8I:
|
||||
format->dataFormat = GL_RED;
|
||||
format->dataType = GL_BYTE;
|
||||
format->internalFormat = GL_R8I;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_R8UI:
|
||||
format->dataFormat = GL_RED;
|
||||
format->dataType = GL_UNSIGNED_BYTE;
|
||||
format->internalFormat = GL_R8UI;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_R16:
|
||||
format->dataFormat = GL_RED;
|
||||
format->dataType = GL_UNSIGNED_SHORT;
|
||||
format->internalFormat = GL_R16;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_R16F:
|
||||
format->dataFormat = GL_RED;
|
||||
format->dataType = GL_HALF_FLOAT; ///FIXME: Correct ?
|
||||
format->internalFormat = GL_R16F;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_R16I:
|
||||
format->dataFormat = GL_RED;
|
||||
format->dataType = GL_SHORT;
|
||||
format->internalFormat = GL_R16I;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_R16UI:
|
||||
format->dataFormat = GL_RED;
|
||||
format->dataType = GL_UNSIGNED_SHORT;
|
||||
format->internalFormat = GL_R16UI;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_R32F:
|
||||
format->dataFormat = GL_RED;
|
||||
format->dataType = GL_FLOAT;
|
||||
format->internalFormat = GL_R32F;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_R32I:
|
||||
format->dataFormat = GL_RED;
|
||||
format->dataType = GL_INT;
|
||||
format->internalFormat = GL_R32I;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_R32UI:
|
||||
format->dataFormat = GL_RED;
|
||||
format->dataType = GL_UNSIGNED_INT;
|
||||
format->internalFormat = GL_R32UI;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RG8:
|
||||
format->dataFormat = GL_RG;
|
||||
format->dataType = GL_UNSIGNED_BYTE;
|
||||
format->internalFormat = GL_RG8;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RG8I:
|
||||
format->dataFormat = GL_RG;
|
||||
format->dataType = GL_BYTE;
|
||||
format->internalFormat = GL_RG8I;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RG8UI:
|
||||
format->dataFormat = GL_RG;
|
||||
format->dataType = GL_UNSIGNED_BYTE;
|
||||
format->internalFormat = GL_RG8UI;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RG16:
|
||||
format->dataFormat = GL_RG;
|
||||
format->dataType = GL_UNSIGNED_SHORT;
|
||||
format->internalFormat = GL_RG16;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RG16F:
|
||||
format->dataFormat = GL_RG;
|
||||
format->dataType = GL_HALF_FLOAT; ///FIXME: Correct ?
|
||||
format->internalFormat = GL_RG16F;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RG16I:
|
||||
format->dataFormat = GL_RG;
|
||||
format->dataType = GL_SHORT;
|
||||
format->internalFormat = GL_RG16I;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RG16UI:
|
||||
format->dataFormat = GL_RG;
|
||||
format->dataType = GL_UNSIGNED_SHORT;
|
||||
format->internalFormat = GL_RG16UI;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RG32F:
|
||||
format->dataFormat = GL_RG;
|
||||
format->dataType = GL_FLOAT;
|
||||
format->internalFormat = GL_RG32F;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RG32I:
|
||||
format->dataFormat = GL_RG;
|
||||
format->dataType = GL_INT;
|
||||
format->internalFormat = GL_RG32I;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RG32UI:
|
||||
format->dataFormat = GL_RG;
|
||||
format->dataType = GL_UNSIGNED_INT;
|
||||
format->internalFormat = GL_RG32UI;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RGB5A1:
|
||||
format->dataFormat = GL_RGBA;
|
||||
format->dataType = GL_UNSIGNED_SHORT_5_5_5_1;
|
||||
@@ -1390,16 +1511,22 @@ bool NzOpenGL::TranslateFormat(nzPixelFormat pixelFormat, Format* format, Format
|
||||
|
||||
case nzPixelFormat_RGB16F:
|
||||
format->dataFormat = GL_RGB;
|
||||
format->dataType = GL_FLOAT;
|
||||
format->dataType = GL_HALF_FLOAT; ///FIXME: Correct ?
|
||||
format->internalFormat = GL_RGB16F;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RGB16I:
|
||||
format->dataFormat = GL_RGB;
|
||||
format->dataType = GL_INT;
|
||||
format->dataType = GL_SHORT;
|
||||
format->internalFormat = GL_RGB16I;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RGB16UI:
|
||||
format->dataFormat = GL_RGB;
|
||||
format->dataType = GL_UNSIGNED_SHORT;
|
||||
format->internalFormat = GL_RGB16UI;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RGB32F:
|
||||
format->dataFormat = GL_RGB;
|
||||
format->dataType = GL_FLOAT;
|
||||
@@ -1412,6 +1539,12 @@ bool NzOpenGL::TranslateFormat(nzPixelFormat pixelFormat, Format* format, Format
|
||||
format->internalFormat = GL_RGB32I;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RGB32UI:
|
||||
format->dataFormat = GL_RGB;
|
||||
format->dataType = GL_UNSIGNED_INT;
|
||||
format->internalFormat = GL_RGB32UI;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RGBA4:
|
||||
format->dataFormat = GL_RGBA;
|
||||
format->dataType = GL_UNSIGNED_SHORT_4_4_4_4;
|
||||
@@ -1426,14 +1559,20 @@ bool NzOpenGL::TranslateFormat(nzPixelFormat pixelFormat, Format* format, Format
|
||||
|
||||
case nzPixelFormat_RGBA16F:
|
||||
format->dataFormat = GL_RGBA;
|
||||
format->dataType = GL_FLOAT;
|
||||
format->dataType = GL_HALF_FLOAT; ///FIXME: Correct ?
|
||||
format->internalFormat = GL_RGBA16F;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RGBA16I:
|
||||
format->dataFormat = GL_RGBA;
|
||||
format->dataType = GL_SHORT;
|
||||
format->internalFormat = GL_RGBA16I;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RGBA16UI:
|
||||
format->dataFormat = GL_RGBA;
|
||||
format->dataType = GL_INT;
|
||||
format->internalFormat = GL_RGBA32I;
|
||||
format->internalFormat = GL_RGBA16UI;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RGBA32F:
|
||||
@@ -1448,21 +1587,27 @@ bool NzOpenGL::TranslateFormat(nzPixelFormat pixelFormat, Format* format, Format
|
||||
format->internalFormat = GL_RGB32I;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_RGBA32UI:
|
||||
format->dataFormat = GL_RGB;
|
||||
format->dataType = GL_UNSIGNED_INT;
|
||||
format->internalFormat = GL_RGB32UI;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_Depth16:
|
||||
format->dataFormat = GL_DEPTH_COMPONENT;
|
||||
format->dataType = GL_UNSIGNED_BYTE;
|
||||
format->dataType = GL_UNSIGNED_SHORT;
|
||||
format->internalFormat = GL_DEPTH_COMPONENT16;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_Depth24:
|
||||
format->dataFormat = GL_DEPTH_COMPONENT;
|
||||
format->dataType = GL_UNSIGNED_BYTE;
|
||||
format->dataType = GL_UNSIGNED_INT;
|
||||
format->internalFormat = GL_DEPTH_COMPONENT24;
|
||||
return true;
|
||||
|
||||
case nzPixelFormat_Depth24Stencil8:
|
||||
format->dataFormat = GL_DEPTH_STENCIL;
|
||||
format->dataType = GL_UNSIGNED_BYTE;
|
||||
format->dataType = GL_UNSIGNED_INT_24_8;
|
||||
format->internalFormat = GL_DEPTH24_STENCIL8;
|
||||
return true;
|
||||
|
||||
|
||||
@@ -1307,14 +1307,38 @@ bool NzTexture::IsFormatSupported(nzPixelFormat format)
|
||||
return true;
|
||||
|
||||
// Formats supportés depuis OpenGL 3
|
||||
case nzPixelFormat_R8:
|
||||
case nzPixelFormat_R8I:
|
||||
case nzPixelFormat_R8UI:
|
||||
case nzPixelFormat_R16:
|
||||
case nzPixelFormat_R16F:
|
||||
case nzPixelFormat_R16I:
|
||||
case nzPixelFormat_R16UI:
|
||||
case nzPixelFormat_R32F:
|
||||
case nzPixelFormat_R32I:
|
||||
case nzPixelFormat_R32UI:
|
||||
case nzPixelFormat_RG8:
|
||||
case nzPixelFormat_RG8I:
|
||||
case nzPixelFormat_RG8UI:
|
||||
case nzPixelFormat_RG16:
|
||||
case nzPixelFormat_RG16F:
|
||||
case nzPixelFormat_RG16I:
|
||||
case nzPixelFormat_RG16UI:
|
||||
case nzPixelFormat_RG32F:
|
||||
case nzPixelFormat_RG32I:
|
||||
case nzPixelFormat_RG32UI:
|
||||
case nzPixelFormat_RGB16F:
|
||||
case nzPixelFormat_RGB16I:
|
||||
case nzPixelFormat_RGB16UI:
|
||||
case nzPixelFormat_RGB32F:
|
||||
case nzPixelFormat_RGB32I:
|
||||
case nzPixelFormat_RGB32UI:
|
||||
case nzPixelFormat_RGBA16F:
|
||||
case nzPixelFormat_RGBA16I:
|
||||
case nzPixelFormat_RGBA16UI:
|
||||
case nzPixelFormat_RGBA32F:
|
||||
case nzPixelFormat_RGBA32I:
|
||||
case nzPixelFormat_RGBA32UI:
|
||||
return NzOpenGL::GetVersion() >= 300;
|
||||
|
||||
// Formats de profondeur (Supportés avec les FBOs)
|
||||
|
||||
Reference in New Issue
Block a user