OpenGL / SDL2:模板缓冲区位在 PC 上始终为 0
Posted
技术标签:
【中文标题】OpenGL / SDL2:模板缓冲区位在 PC 上始终为 0【英文标题】:OpenGL / SDL2 : stencil buffer bits always 0 on PC 【发布时间】:2015-08-16 12:53:00 【问题描述】:我正在使用 SDL2 / OpenGL 编写应用程序,并进行一些模板操作。
在 Mac 上一切正常,但在 PC 上,模板无法正常工作。
经过仔细检查,我意识到以下代码在我的 Mac 和 PC 上提供了不同的结果:
SDL_Init(SDL_INIT_VIDEO);
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
SDL_CreateWindow( ... );
SDL_CreateRenderer( ... )
...做事...
当我在 Mac 上打印出模板位 (SDL_GL_STENCIL_SIZE) 时,我得到 8。当我在 PC 上执行相同操作时,我得到 0。
无论我是在实际 PC 上还是在 Mac 上的 PC 模拟器上运行它,都会发生同样的情况。
我错过了什么?如何强制 SDL2 使用模板缓冲区请求上下文?
在我看来,Mac 的 OpenGL 实现与 PC 的默认值不同,所以我可能忘记做某事来专门请求模板缓冲区,但我在网上找不到任何好的信息......
帮助^_^' ?
【问题讨论】:
所以即使opengl可用并且我在创建窗口时使用了SDL_WINDOW_OPENGL,PC上的SDL2也默认为direct3d。是否有其他方法可以强制 SDL 使用 OpenGL? 【参考方案1】:没关系,我找到了答案:
在 PC 上,SDL2 默认为 Direct3D(我想这可以解释为什么我的 opengl 模板缓冲区不存在 ^_^')。
要强制 SDL2 使用特定的驱动程序,可以使用 SDL_CreateRenderer 中的第二个参数。
问题解决了:D
***,最大的橡皮鸭... ^-^'
【讨论】:
以上是关于OpenGL / SDL2:模板缓冲区位在 PC 上始终为 0的主要内容,如果未能解决你的问题,请参考以下文章