|
|
@@ -64,163 +64,152 @@ uint32_t FramebufferFormat::GetFormat() |
|
|
|
switch (m_format) |
|
|
|
{ |
|
|
|
#if defined USE_D3D9 || defined _XBOX |
|
|
|
case R_16_F: return D3DFMT_R16F; |
|
|
|
case R_32_F: return D3DFMT_R32F; |
|
|
|
case RG_16: |
|
|
|
case RG_16_I: |
|
|
|
case RG_16_UI: return D3DFMT_G16R16; |
|
|
|
case RG_16_F: return D3DFMT_G16R16F; |
|
|
|
case RG_32_F: return D3DFMT_G32R32F; |
|
|
|
case RGB_8: |
|
|
|
case RGB_8_I: |
|
|
|
case RGB_8_UI: return D3DFMT_R8G8B8; |
|
|
|
case RGBA_8: |
|
|
|
case RGBA_8_I: |
|
|
|
case RGBA_8_UI: return D3DFMT_A8R8G8B8; |
|
|
|
case RGBA_16: |
|
|
|
case RGBA_16_I: |
|
|
|
case RGBA_16_UI: return D3DFMT_A16B16G16R16; |
|
|
|
case RGBA_16_F: return D3DFMT_A16B16G16R16F; |
|
|
|
case RGBA_32_F: return D3DFMT_A32B32G32R32F; |
|
|
|
|
|
|
|
default: ASSERT(false, "not supported by DirectX"); |
|
|
|
return 0; |
|
|
|
case R_16_F: return D3DFMT_R16F; |
|
|
|
case R_32_F: return D3DFMT_R32F; |
|
|
|
case RG_16: |
|
|
|
case RG_16_I: |
|
|
|
case RG_16_UI: return D3DFMT_G16R16; |
|
|
|
case RG_16_F: return D3DFMT_G16R16F; |
|
|
|
case RG_32_F: return D3DFMT_G32R32F; |
|
|
|
case RGB_8: |
|
|
|
case RGB_8_I: |
|
|
|
case RGB_8_UI: return D3DFMT_R8G8B8; |
|
|
|
case RGBA_8: |
|
|
|
case RGBA_8_I: |
|
|
|
case RGBA_8_UI: return D3DFMT_A8R8G8B8; |
|
|
|
case RGBA_16: |
|
|
|
case RGBA_16_I: |
|
|
|
case RGBA_16_UI: return D3DFMT_A16B16G16R16; |
|
|
|
case RGBA_16_F: return D3DFMT_A16B16G16R16F; |
|
|
|
case RGBA_32_F: return D3DFMT_A32B32G32R32F; |
|
|
|
#elif defined __CELLOS_LV2__ |
|
|
|
/* Supported drawable formats on the PS3: GL_ARGB_SCE, GL_RGB16F_ARB, |
|
|
|
* GL_RGBA16F_ARB, GL_RGB32F_ARB, GL_RGBA32F_ARB, GL_LUMINANCE32F_ARB. */ |
|
|
|
case RGB_16_F: return GL_RGB16F_ARB; |
|
|
|
case RGB_32_F: return GL_RGB32F_ARB; |
|
|
|
case RGBA_8: return GL_ARGB_SCE; |
|
|
|
case RGBA_16_F: return GL_RGBA16F_ARB; |
|
|
|
case RGBA_32_F: return GL_RGBA32F_ARB; |
|
|
|
|
|
|
|
default: ASSERT(false, "not supported by the PS3"); |
|
|
|
return 0; |
|
|
|
case RGB_16_F: return GL_RGB16F_ARB; |
|
|
|
case RGB_32_F: return GL_RGB32F_ARB; |
|
|
|
case RGBA_8: return GL_ARGB_SCE; |
|
|
|
case RGBA_16_F: return GL_RGBA16F_ARB; |
|
|
|
case RGBA_32_F: return GL_RGBA32F_ARB; |
|
|
|
#elif defined HAVE_GLES_2X |
|
|
|
/* FIXME: not implemented at all */ |
|
|
|
/* FIXME: not implemented at all */ |
|
|
|
|
|
|
|
default: ASSERT(false, "not implemented"); |
|
|
|
return 0; |
|
|
|
#elif defined __APPLE__ && defined __MACH__ |
|
|
|
case R_8: |
|
|
|
case R_8_I: |
|
|
|
case R_8_UI: |
|
|
|
case R_8_F: |
|
|
|
|
|
|
|
case R_16: |
|
|
|
case R_16_I: |
|
|
|
case R_16_UI: |
|
|
|
case R_16_F: |
|
|
|
|
|
|
|
case R_32_I: |
|
|
|
case R_32: |
|
|
|
case R_32_UI: |
|
|
|
case R_32_F: return GL_RED; |
|
|
|
|
|
|
|
case RG_8: |
|
|
|
case RG_8_I: |
|
|
|
case RG_8_UI: |
|
|
|
case RG_8_F: |
|
|
|
|
|
|
|
case RG_16: |
|
|
|
case RG_16_I: |
|
|
|
case RG_16_UI: |
|
|
|
case RG_16_F: |
|
|
|
|
|
|
|
case RG_32: |
|
|
|
case RG_32_I: |
|
|
|
case RG_32_UI: |
|
|
|
case RG_32_F: return GL_RG; |
|
|
|
|
|
|
|
case RGB_8: |
|
|
|
case RGB_8_I: |
|
|
|
case RGB_8_UI: |
|
|
|
case RGB_8_F: |
|
|
|
|
|
|
|
case RGB_16: |
|
|
|
case RGB_16_I: |
|
|
|
case RGB_16_UI: |
|
|
|
case RGB_16_F: |
|
|
|
|
|
|
|
case RGB_32: |
|
|
|
case RGB_32_I: |
|
|
|
case RGB_32_UI: |
|
|
|
case RGB_32_F: return (m_invert_rgb)?(GL_BGR):(GL_RGB); |
|
|
|
|
|
|
|
case RGBA_8: |
|
|
|
case RGBA_8_I: |
|
|
|
case RGBA_8_UI: |
|
|
|
case RGBA_8_F: |
|
|
|
|
|
|
|
case RGBA_16: |
|
|
|
case RGBA_16_I: |
|
|
|
case RGBA_16_UI: |
|
|
|
case RGBA_16_F: |
|
|
|
|
|
|
|
case RGBA_32: |
|
|
|
case RGBA_32_I: |
|
|
|
case RGBA_32_UI: |
|
|
|
case RGBA_32_F: return (m_invert_rgb)?(GL_BGRA):(GL_RGBA); |
|
|
|
case R_8: |
|
|
|
case R_8_I: |
|
|
|
case R_8_UI: |
|
|
|
case R_8_F: |
|
|
|
|
|
|
|
case R_16: |
|
|
|
case R_16_I: |
|
|
|
case R_16_UI: |
|
|
|
case R_16_F: |
|
|
|
|
|
|
|
case R_32_I: |
|
|
|
case R_32: |
|
|
|
case R_32_UI: |
|
|
|
case R_32_F: return GL_RED; |
|
|
|
|
|
|
|
case RG_8: |
|
|
|
case RG_8_I: |
|
|
|
case RG_8_UI: |
|
|
|
case RG_8_F: |
|
|
|
|
|
|
|
case RG_16: |
|
|
|
case RG_16_I: |
|
|
|
case RG_16_UI: |
|
|
|
case RG_16_F: |
|
|
|
|
|
|
|
case RG_32: |
|
|
|
case RG_32_I: |
|
|
|
case RG_32_UI: |
|
|
|
case RG_32_F: return GL_RG; |
|
|
|
|
|
|
|
case RGB_8: |
|
|
|
case RGB_8_I: |
|
|
|
case RGB_8_UI: |
|
|
|
case RGB_8_F: |
|
|
|
|
|
|
|
case RGB_16: |
|
|
|
case RGB_16_I: |
|
|
|
case RGB_16_UI: |
|
|
|
case RGB_16_F: |
|
|
|
|
|
|
|
case RGB_32: |
|
|
|
case RGB_32_I: |
|
|
|
case RGB_32_UI: |
|
|
|
case RGB_32_F: return (m_invert_rgb)?(GL_BGR):(GL_RGB); |
|
|
|
|
|
|
|
case RGBA_8: |
|
|
|
case RGBA_8_I: |
|
|
|
case RGBA_8_UI: |
|
|
|
case RGBA_8_F: |
|
|
|
|
|
|
|
case RGBA_16: |
|
|
|
case RGBA_16_I: |
|
|
|
case RGBA_16_UI: |
|
|
|
case RGBA_16_F: |
|
|
|
|
|
|
|
case RGBA_32: |
|
|
|
case RGBA_32_I: |
|
|
|
case RGBA_32_UI: |
|
|
|
case RGBA_32_F: return (m_invert_rgb)?(GL_BGRA):(GL_RGBA); |
|
|
|
#else |
|
|
|
case R_8: return GL_R8; |
|
|
|
case R_8_I: return GL_R8I; |
|
|
|
case R_8_UI: return GL_R8UI; |
|
|
|
|
|
|
|
case R_16: return GL_R16; |
|
|
|
case R_16_I: return GL_R16I; |
|
|
|
case R_16_UI: return GL_R16UI; |
|
|
|
case R_16_F: return GL_R16F; |
|
|
|
|
|
|
|
case R_32_I: return GL_R32I; |
|
|
|
case R_32_UI: return GL_R32UI; |
|
|
|
case R_32_F: return GL_R32F; |
|
|
|
|
|
|
|
case RG_8: return GL_RG8; |
|
|
|
case RG_8_I: return GL_RG8I; |
|
|
|
case RG_8_UI: return GL_RG8UI; |
|
|
|
|
|
|
|
case RG_16: return GL_RG16; |
|
|
|
case RG_16_I: return GL_RG16I; |
|
|
|
case RG_16_UI: return GL_RG16UI; |
|
|
|
case RG_16_F: return GL_RG16F; |
|
|
|
|
|
|
|
case RG_32_I: return GL_RG32I; |
|
|
|
case RG_32_UI: return GL_RG32UI; |
|
|
|
case RG_32_F: return GL_RG32F; |
|
|
|
|
|
|
|
case RGB_8: return GL_RGB8; |
|
|
|
case RGB_8_I: return GL_RGB8I; |
|
|
|
case RGB_8_UI: return GL_RGB8UI; |
|
|
|
|
|
|
|
case RGB_16: return GL_RGB16; |
|
|
|
case RGB_16_I: return GL_RGB16I; |
|
|
|
case RGB_16_UI: return GL_RGB16UI; |
|
|
|
case RGB_16_F: return GL_RGB16F; |
|
|
|
|
|
|
|
case RGB_32_I: return GL_RGB32I; |
|
|
|
case RGB_32_UI: return GL_RGB32UI; |
|
|
|
case RGB_32_F: return GL_RGB32F; |
|
|
|
|
|
|
|
case RGBA_8: return GL_RGBA8; |
|
|
|
case RGBA_8_I: return GL_RGBA8I; |
|
|
|
case RGBA_8_UI: return GL_RGBA8UI; |
|
|
|
|
|
|
|
case RGBA_16: return GL_RGBA16; |
|
|
|
case RGBA_16_I: return GL_RGBA16I; |
|
|
|
case RGBA_16_UI: return GL_RGBA16UI; |
|
|
|
case RGBA_16_F: return GL_RGBA16F; |
|
|
|
|
|
|
|
case RGBA_32_I: return GL_RGBA32I; |
|
|
|
case RGBA_32_UI: return GL_RGBA32UI; |
|
|
|
case RGBA_32_F: return GL_RGBA32F; |
|
|
|
|
|
|
|
default: ASSERT(false, "not supported by OpenGL"); |
|
|
|
return 0; |
|
|
|
case R_8: return GL_R8; |
|
|
|
case R_8_I: return GL_R8I; |
|
|
|
case R_8_UI: return GL_R8UI; |
|
|
|
|
|
|
|
case R_16: return GL_R16; |
|
|
|
case R_16_I: return GL_R16I; |
|
|
|
case R_16_UI: return GL_R16UI; |
|
|
|
case R_16_F: return GL_R16F; |
|
|
|
|
|
|
|
case R_32_I: return GL_R32I; |
|
|
|
case R_32_UI: return GL_R32UI; |
|
|
|
case R_32_F: return GL_R32F; |
|
|
|
|
|
|
|
case RG_8: return GL_RG8; |
|
|
|
case RG_8_I: return GL_RG8I; |
|
|
|
case RG_8_UI: return GL_RG8UI; |
|
|
|
|
|
|
|
case RG_16: return GL_RG16; |
|
|
|
case RG_16_I: return GL_RG16I; |
|
|
|
case RG_16_UI: return GL_RG16UI; |
|
|
|
case RG_16_F: return GL_RG16F; |
|
|
|
|
|
|
|
case RG_32_I: return GL_RG32I; |
|
|
|
case RG_32_UI: return GL_RG32UI; |
|
|
|
case RG_32_F: return GL_RG32F; |
|
|
|
|
|
|
|
case RGB_8: return GL_RGB8; |
|
|
|
case RGB_8_I: return GL_RGB8I; |
|
|
|
case RGB_8_UI: return GL_RGB8UI; |
|
|
|
|
|
|
|
case RGB_16: return GL_RGB16; |
|
|
|
case RGB_16_I: return GL_RGB16I; |
|
|
|
case RGB_16_UI: return GL_RGB16UI; |
|
|
|
case RGB_16_F: return GL_RGB16F; |
|
|
|
|
|
|
|
case RGB_32_I: return GL_RGB32I; |
|
|
|
case RGB_32_UI: return GL_RGB32UI; |
|
|
|
case RGB_32_F: return GL_RGB32F; |
|
|
|
|
|
|
|
case RGBA_8: return GL_RGBA8; |
|
|
|
case RGBA_8_I: return GL_RGBA8I; |
|
|
|
case RGBA_8_UI: return GL_RGBA8UI; |
|
|
|
|
|
|
|
case RGBA_16: return GL_RGBA16; |
|
|
|
case RGBA_16_I: return GL_RGBA16I; |
|
|
|
case RGBA_16_UI: return GL_RGBA16UI; |
|
|
|
case RGBA_16_F: return GL_RGBA16F; |
|
|
|
|
|
|
|
case RGBA_32_I: return GL_RGBA32I; |
|
|
|
case RGBA_32_UI: return GL_RGBA32UI; |
|
|
|
case RGBA_32_F: return GL_RGBA32F; |
|
|
|
#endif |
|
|
|
}; |
|
|
|
|
|
|
|
ASSERT(false, "not implemented"); |
|
|
|
return 0; |
|
|
|
default: |
|
|
|
ASSERT(false, "unknown framebuffer format %d", m_format); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
uint32_t FramebufferFormat::GetFormatOrder() |
|
|
@@ -228,129 +217,63 @@ uint32_t FramebufferFormat::GetFormatOrder() |
|
|
|
switch (m_format) |
|
|
|
{ |
|
|
|
#if defined USE_D3D9 || defined _XBOX |
|
|
|
/* FIXME: not implemented at all */ |
|
|
|
default: ASSERT(false, "not implemented"); |
|
|
|
return 0; |
|
|
|
/* FIXME: not implemented at all */ |
|
|
|
#elif defined __CELLOS_LV2__ |
|
|
|
/* FIXME: not implemented at all */ |
|
|
|
default: ASSERT(false, "not implemented"); |
|
|
|
return 0; |
|
|
|
/* FIXME: not implemented at all */ |
|
|
|
#elif defined HAVE_GLES_2X |
|
|
|
/* FIXME: not implemented at all */ |
|
|
|
default: ASSERT(false, "not implemented"); |
|
|
|
return 0; |
|
|
|
/* FIXME: not implemented at all */ |
|
|
|
#elif defined __APPLE__ && defined __MACH__ |
|
|
|
case R_8: |
|
|
|
case RG_8: |
|
|
|
case RGB_8: |
|
|
|
case RGBA_8: |
|
|
|
case R_8_I: |
|
|
|
case RG_8_I: |
|
|
|
case RGB_8_I: |
|
|
|
case RGBA_8_I: return GL_BYTE; |
|
|
|
case R_8_UI: |
|
|
|
case RG_8_UI: |
|
|
|
case RGB_8_UI: |
|
|
|
case RGBA_8_UI: return GL_UNSIGNED_BYTE; |
|
|
|
|
|
|
|
case R_16: |
|
|
|
case RG_16: |
|
|
|
case RGB_16: |
|
|
|
case RGBA_16: |
|
|
|
case R_16_I: |
|
|
|
case RG_16_I: |
|
|
|
case RGB_16_I: |
|
|
|
case RGBA_16_I: return GL_SHORT; |
|
|
|
case R_16_UI: |
|
|
|
case RG_16_UI: |
|
|
|
case RGB_16_UI: |
|
|
|
case RGBA_16_UI: return GL_UNSIGNED_SHORT; |
|
|
|
case R_16_F: |
|
|
|
case RG_16_F: |
|
|
|
case RGB_16_F: |
|
|
|
case RGBA_16_F: ASSERT(false, "not supported by IOS:OGL:ES"); |
|
|
|
return 0; |
|
|
|
|
|
|
|
case R_32_I: |
|
|
|
case RG_32_I: |
|
|
|
case RGB_32_I: |
|
|
|
case RGBA_32_I: return GL_INT; |
|
|
|
case R_32_UI: |
|
|
|
case RG_32_UI: |
|
|
|
case RGB_32_UI: |
|
|
|
case RGBA_32_UI: return GL_UNSIGNED_INT; |
|
|
|
case R_32_F: |
|
|
|
case RG_32_F: |
|
|
|
case RGB_32_F: |
|
|
|
case RGBA_32_F: return GL_FLOAT; |
|
|
|
|
|
|
|
default: ASSERT(false, "not supported by IOS:OGL:ES"); |
|
|
|
return 0; |
|
|
|
case R_8: case RG_8: case RGB_8: case RGBA_8: |
|
|
|
case R_8_I: case RG_8_I: case RGB_8_I: case RGBA_8_I: |
|
|
|
return GL_BYTE; |
|
|
|
case R_8_UI: case RG_8_UI: case RGB_8_UI: case RGBA_8_UI: |
|
|
|
return GL_UNSIGNED_BYTE; |
|
|
|
|
|
|
|
case R_16: case RG_16: case RGB_16: case RGBA_16: |
|
|
|
case R_16_I: case RG_16_I: case RGB_16_I: case RGBA_16_I: |
|
|
|
return GL_SHORT; |
|
|
|
case R_16_UI: case RG_16_UI: case RGB_16_UI: case RGBA_16_UI: |
|
|
|
return GL_UNSIGNED_SHORT; |
|
|
|
|
|
|
|
case R_16_F: case RG_16_F: case RGB_16_F: case RGBA_16_F: |
|
|
|
ASSERT(false, "unsupported framebuffer format order %d", m_format); |
|
|
|
return 0; |
|
|
|
|
|
|
|
case R_32_I: case RG_32_I: case RGB_32_I: case RGBA_32_I: |
|
|
|
return GL_INT; |
|
|
|
case R_32_UI: case RG_32_UI: case RGB_32_UI: case RGBA_32_UI: |
|
|
|
return GL_UNSIGNED_INT; |
|
|
|
case R_32_F: case RG_32_F: case RGB_32_F: case RGBA_32_F: |
|
|
|
return GL_FLOAT; |
|
|
|
|
|
|
|
default: |
|
|
|
ASSERT(false, "unsupported framebuffer format order %d", m_format); |
|
|
|
return 0; |
|
|
|
#else |
|
|
|
case R_8: |
|
|
|
case R_8_I: |
|
|
|
case R_8_UI: |
|
|
|
case R_8_F: |
|
|
|
|
|
|
|
case R_16: |
|
|
|
case R_16_I: |
|
|
|
case R_16_UI: |
|
|
|
case R_16_F: |
|
|
|
|
|
|
|
case R_32_I: |
|
|
|
case R_32: |
|
|
|
case R_32_UI: |
|
|
|
case R_32_F: return GL_RED; |
|
|
|
|
|
|
|
case RG_8: |
|
|
|
case RG_8_I: |
|
|
|
case RG_8_UI: |
|
|
|
case RG_8_F: |
|
|
|
|
|
|
|
case RG_16: |
|
|
|
case RG_16_I: |
|
|
|
case RG_16_UI: |
|
|
|
case RG_16_F: |
|
|
|
|
|
|
|
case RG_32: |
|
|
|
case RG_32_I: |
|
|
|
case RG_32_UI: |
|
|
|
case RG_32_F: return GL_RG; |
|
|
|
|
|
|
|
case RGB_8: |
|
|
|
case RGB_8_I: |
|
|
|
case RGB_8_UI: |
|
|
|
case RGB_8_F: |
|
|
|
|
|
|
|
case RGB_16: |
|
|
|
case RGB_16_I: |
|
|
|
case RGB_16_UI: |
|
|
|
case RGB_16_F: |
|
|
|
|
|
|
|
case RGB_32: |
|
|
|
case RGB_32_I: |
|
|
|
case RGB_32_UI: |
|
|
|
case RGB_32_F: return (m_invert_rgb)?(GL_BGR):(GL_RGB); |
|
|
|
|
|
|
|
case RGBA_8: |
|
|
|
case RGBA_8_I: |
|
|
|
case RGBA_8_UI: |
|
|
|
case RGBA_8_F: |
|
|
|
|
|
|
|
case RGBA_16: |
|
|
|
case RGBA_16_I: |
|
|
|
case RGBA_16_UI: |
|
|
|
case RGBA_16_F: |
|
|
|
|
|
|
|
case RGBA_32: |
|
|
|
case RGBA_32_I: |
|
|
|
case RGBA_32_UI: |
|
|
|
case RGBA_32_F: return (m_invert_rgb)?(GL_BGRA):(GL_RGBA); |
|
|
|
case R_8: case R_8_I: case R_8_UI: case R_8_F: |
|
|
|
case R_16: case R_16_I: case R_16_UI: case R_16_F: |
|
|
|
case R_32: case R_32_I: case R_32_UI: case R_32_F: |
|
|
|
return GL_RED; |
|
|
|
|
|
|
|
case RG_8: case RG_8_I: case RG_8_UI: case RG_8_F: |
|
|
|
case RG_16: case RG_16_I: case RG_16_UI: case RG_16_F: |
|
|
|
case RG_32: case RG_32_I: case RG_32_UI: case RG_32_F: |
|
|
|
return GL_RG; |
|
|
|
|
|
|
|
case RGB_8: case RGB_8_I: case RGB_8_UI: case RGB_8_F: |
|
|
|
case RGB_16: case RGB_16_I: case RGB_16_UI: case RGB_16_F: |
|
|
|
case RGB_32: case RGB_32_I: case RGB_32_UI: case RGB_32_F: |
|
|
|
return m_invert_rgb ? GL_BGR : GL_RGB; |
|
|
|
|
|
|
|
case RGBA_8: case RGBA_8_I: case RGBA_8_UI: case RGBA_8_F: |
|
|
|
case RGBA_16: case RGBA_16_I: case RGBA_16_UI: case RGBA_16_F: |
|
|
|
case RGBA_32: case RGBA_32_I: case RGBA_32_UI: case RGBA_32_F: |
|
|
|
return (m_invert_rgb)?(GL_BGRA):(GL_RGBA); |
|
|
|
#endif |
|
|
|
default: |
|
|
|
ASSERT(false, "unknown framebuffer format order %d", m_format); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
ASSERT(false, "unknown pixel format"); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
// |
|
|
|