opengl - SDL 可以创建 sRGB OpenGL 上下文吗?

标签 opengl sdl srgb

SDL 的文档似乎没有过多提及色彩空间。我没有看到 SDL_SetVideoMode 的任何 SRGB 标志/参数或 SDL_GL_SetAttribute .在 FrameBuffer 0 上写入时,SDL 是否有可能要求 OpenGL 执行颜色校正? GLUT seems to be able to provide that functionality .

如果 SDL 无法做到,通常的解决方法是什么?我正在考虑使用 GL_FRAMEBUFFER_SRGB 渲染到 sRGB 纹理启用,然后使用 FRAMEBUFFER_SRGB 将其渲染到 FrameBuffer 0禁用。有什么更好的主意吗?

最佳答案

很抱歉在这里重提一个老问题,但我想指出,SDL 2.0.1 将明确让您请求 sRGB 上下文:

SDL_GL_SetAttribute(SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, 1);
// etc.
SDL_Window *win = SDL_CreateWindow(...);
SDL_GL_CreateContext(win);

这适用于 Windows 和 X11(Mac OS X 等,目前不提供此功能)。值得注意的是,在 SDL 2.0.1 提供此功能之前,现代硬件上的大多数 GL 上下文默认情况下已经支持 sRGB。但是你去了。

关于opengl - SDL 可以创建 sRGB OpenGL 上下文吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16357091/

相关文章:

opengl - 什么是正确的 Gamma 校正函数?

java - 设置 GL_RGBA16F 纹理格式时获取不完整的 FBO

c++ - SDL_GL_CreateContext() 不工作

c - 使用 GLUT 和 C 的闪烁 2D 纹理

c++ - 使用 tmx-parser 和 SDL 的 2d tile 渲染

android - iccp :Not recognizing known sRGB profile that has been edited

javascript - THREE.js:使用 renderer.OutputEncoding = sRGBEncoding 使纹理变灰

c++ - 我们如何获得窗口的边框大小?

c++ - 一起使用 SDL、OpenGL 和 Qt

c - 如何从 VRAM 获取视频输出或帧