瀏覽代碼

gpu: fix OS X port (bad framebuffer image creation flags).

legacy
Sam Hocevar 5 年之前
父節點
當前提交
83e48e8820
共有 1 個文件被更改,包括 16 次插入89 次删除
  1. +16
    -89
      src/gpu/framebuffer.cpp

+ 16
- 89
src/gpu/framebuffer.cpp 查看文件

@@ -50,70 +50,6 @@ uint32_t FramebufferFormat::GetFormat()
case RGBA_8:
case RGBA_8_I:
case RGBA_8_UI: return GL_RGBA;
#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:
# if defined GL_BGRA
case RGBA_32_F: return (m_invert_rgb)?(GL_BGRA):(GL_RGBA);
# else
case RGBA_32_F: return GL_RGBA;
# endif
#else
case R_8: return GL_R8;
case R_8_I: return GL_R8I;
@@ -142,30 +78,42 @@ uint32_t FramebufferFormat::GetFormat()
case RG_32_F: return GL_RG32F;

case RGB_8: return GL_RGB8;
#ifdef GL_RGB8I
case RGB_8_I: return GL_RGB8I;
case RGB_8_UI: return GL_RGB8UI;
#endif

case RGB_16: return GL_RGB16;
#ifdef GL_RGB16I
case RGB_16_I: return GL_RGB16I;
case RGB_16_UI: return GL_RGB16UI;
case RGB_16_F: return GL_RGB16F;
#endif

#ifdef GL_RGB32I
case RGB_32_I: return GL_RGB32I;
case RGB_32_UI: return GL_RGB32UI;
case RGB_32_F: return GL_RGB32F;
#endif

case RGBA_8: return GL_RGBA8;
#ifdef GL_RGBA8I
case RGBA_8_I: return GL_RGBA8I;
case RGBA_8_UI: return GL_RGBA8UI;
#endif

case RGBA_16: return GL_RGBA16;
#ifdef GL_RGBA16I
case RGBA_16_I: return GL_RGBA16I;
case RGBA_16_UI: return GL_RGBA16UI;
case RGBA_16_F: return GL_RGBA16F;
#endif

#ifdef GL_RGBA32I
case RGBA_32_I: return GL_RGBA32I;
case RGBA_32_UI: return GL_RGBA32UI;
case RGBA_32_F: return GL_RGBA32F;
#endif
#endif
default:
ASSERT(false, "unknown framebuffer format %d", m_format);
@@ -184,29 +132,6 @@ uint32_t FramebufferFormat::GetFormatOrder()
return GL_BYTE;
case R_8_UI: case RG_8_UI: case RGB_8_UI: case RGBA_8_UI:
return GL_UNSIGNED_BYTE;
#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, "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;
#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:
@@ -226,7 +151,7 @@ uint32_t FramebufferFormat::GetFormatOrder()
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:
# if defined GL_BGRA
# if defined GL_BGRA && !defined __APPLE__
return (m_invert_rgb)?(GL_BGRA):(GL_RGBA);
# else
return GL_RGBA;
@@ -280,8 +205,10 @@ Framebuffer::Framebuffer(ivec2 size, FramebufferFormat fbo_format)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapmode);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filtering);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filtering);
msg::warn("lol intfmt %04x fmt %04x\n", internal_format, format);
glTexImage2D(GL_TEXTURE_2D, 0, internal_format, size.x, size.y, 0,
format, GL_UNSIGNED_BYTE, nullptr);
LOL_CHECK_GLERROR();

#if GL_VERSION_1_1 || GL_ES_VERSION_2_0
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
@@ -293,7 +220,7 @@ Framebuffer::Framebuffer(ivec2 size, FramebufferFormat fbo_format)

m_data->m_depth = GL_INVALID_ENUM;
#if GL_VERSION_1_1 || GL_ES_VERSION_2_0
if (depth != GL_INVALID_ENUM)
if (0)//depth != GL_INVALID_ENUM)
{
/* XXX: might not work on GL ES, see
* http://stackoverflow.com/q/4041682/111461


Loading…
取消
儲存