Fixed texture formats for iOS.

This commit is contained in:
Branimir Karadžić 2014-04-12 21:25:38 -07:00
parent 398b4d6535
commit f1a1212efc
3 changed files with 30 additions and 21 deletions

View file

@ -478,7 +478,7 @@ int _main_(int /*_argc*/, char** /*_argv*/)
bgfx::FrameBufferHandle fbh; bgfx::FrameBufferHandle fbh;
bgfx::TextureHandle fbtextures[] = bgfx::TextureHandle fbtextures[] =
{ {
bgfx::createTexture2D(width, height, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT), bgfx::createTexture2D(width, height, 1, bgfx::TextureFormat::BGRA8, BGFX_TEXTURE_RT|BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP),
bgfx::createTexture2D(width, height, 1, bgfx::TextureFormat::D16, BGFX_TEXTURE_RT_BUFFER_ONLY), bgfx::createTexture2D(width, height, 1, bgfx::TextureFormat::D16, BGFX_TEXTURE_RT_BUFFER_ONLY),
}; };
fbh = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); fbh = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true);
@ -539,12 +539,12 @@ int _main_(int /*_argc*/, char** /*_argv*/)
bgfx::destroyFrameBuffer(bright); bgfx::destroyFrameBuffer(bright);
bgfx::destroyFrameBuffer(blur); bgfx::destroyFrameBuffer(blur);
fbtextures[0] = bgfx::createTexture2D(width, height, 1, bgfx::TextureFormat::BGRA8, ( (msaa+1)<<BGFX_TEXTURE_RT_MSAA_SHIFT) ); fbtextures[0] = bgfx::createTexture2D(width, height, 1, bgfx::TextureFormat::BGRA8, ( (msaa+1)<<BGFX_TEXTURE_RT_MSAA_SHIFT)|BGFX_TEXTURE_U_CLAMP|BGFX_TEXTURE_V_CLAMP);
fbtextures[1] = bgfx::createTexture2D(width, height, 1, bgfx::TextureFormat::D16, BGFX_TEXTURE_RT_BUFFER_ONLY|( (msaa+1)<<BGFX_TEXTURE_RT_MSAA_SHIFT) ); fbtextures[1] = bgfx::createTexture2D(width, height, 1, bgfx::TextureFormat::D16, BGFX_TEXTURE_RT_BUFFER_ONLY|( (msaa+1)<<BGFX_TEXTURE_RT_MSAA_SHIFT) );
fbh = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true); fbh = bgfx::createFrameBuffer(BX_COUNTOF(fbtextures), fbtextures, true);
bright = bgfx::createFrameBuffer(width/2, height/2, bgfx::TextureFormat::BGRA8); bright = bgfx::createFrameBuffer(width/2, height/2, bgfx::TextureFormat::BGRA8);
blur = bgfx::createFrameBuffer(width/8, height/8, bgfx::TextureFormat::BGRA8); blur = bgfx::createFrameBuffer(width/8, height/8, bgfx::TextureFormat::BGRA8);
} }
imguiBeginFrame(mouseState.m_mx imguiBeginFrame(mouseState.m_mx

View file

@ -621,31 +621,31 @@ namespace bgfx
// | ^ ^ ^ ^ ^| // | ^ ^ ^ ^ ^|
// | | | | | || // | | | | | ||
uint64_t tmp0 = m_depth; const uint64_t tmp0 = m_depth;
uint64_t tmp1 = uint64_t(m_program)<<0x18; const uint64_t tmp1 = uint64_t(m_program)<<0x18;
uint64_t tmp2 = uint64_t(m_trans)<<0x21; const uint64_t tmp2 = uint64_t(m_trans )<<0x21;
uint64_t tmp3 = uint64_t(m_seq)<<0x23; const uint64_t tmp3 = uint64_t(m_seq )<<0x23;
uint64_t tmp4 = uint64_t(m_view)<<0x2e; const uint64_t tmp4 = uint64_t(m_view )<<0x2e;
uint64_t key = tmp0|tmp1|tmp2|tmp3|tmp4; const uint64_t key = tmp0|tmp1|tmp2|tmp3|tmp4;
return key; return key;
} }
void decode(uint64_t _key) void decode(uint64_t _key)
{ {
m_depth = _key&0xffffffff; m_depth = _key & 0xffffffff;
m_program = (_key>>0x18)&(BGFX_CONFIG_MAX_PROGRAMS-1); m_program = (_key>>0x18)&(BGFX_CONFIG_MAX_PROGRAMS-1);
m_trans = (_key>>0x21)&0x3; m_trans = (_key>>0x21)& 0x3;
m_seq = (_key>>0x23)&0x7ff; m_seq = (_key>>0x23)& 0x7ff;
m_view = (_key>>0x2e)&(BGFX_CONFIG_MAX_VIEWS-1); m_view = (_key>>0x2e)&(BGFX_CONFIG_MAX_VIEWS-1);
} }
void reset() void reset()
{ {
m_depth = 0; m_depth = 0;
m_program = 0; m_program = 0;
m_seq = 0; m_seq = 0;
m_view = 0; m_view = 0;
m_trans = 0; m_trans = 0;
} }
int32_t m_depth; int32_t m_depth;

View file

@ -1242,11 +1242,20 @@ namespace bgfx
s_textureFormat[TextureFormat::PTC22].m_supported |= ptc2Supported; s_textureFormat[TextureFormat::PTC22].m_supported |= ptc2Supported;
s_textureFormat[TextureFormat::PTC24].m_supported |= ptc2Supported; s_textureFormat[TextureFormat::PTC24].m_supported |= ptc2Supported;
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES) if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES) )
&& BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) )
{ {
setTextureFormat(TextureFormat::R16, GL_R16UI, GL_RED_INTEGER, GL_UNSIGNED_SHORT); setTextureFormat(TextureFormat::RGBA16F, GL_RGBA, GL_RGBA, GL_HALF_FLOAT);
setTextureFormat(TextureFormat::RGBA16, GL_RGBA16UI, GL_RGBA_INTEGER, GL_UNSIGNED_SHORT);
if (BX_ENABLED(BGFX_CONFIG_RENDERER_OPENGLES >= 30) )
{
setTextureFormat(TextureFormat::R16, GL_R16UI, GL_RED_INTEGER, GL_UNSIGNED_SHORT);
setTextureFormat(TextureFormat::RGBA16, GL_RGBA16UI, GL_RGBA_INTEGER, GL_UNSIGNED_SHORT);
}
else if (BX_ENABLED(BX_PLATFORM_IOS) )
{
setTextureFormat(TextureFormat::D16, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT);
setTextureFormat(TextureFormat::D24S8, GL_DEPTH_STENCIL, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8);
}
} }
if (s_extension[Extension::EXT_texture_format_BGRA8888].m_supported if (s_extension[Extension::EXT_texture_format_BGRA8888].m_supported