我希望通过不分配我不使用的东西来节省一些视频卡内存。我远没有耗尽内存,但对我来说它会感觉“更干净”。
我真的想不出在默认帧缓冲区中有一个 alpha 值的理由,因为我的窗口无论如何都不会与我的桌面进行 alpha 混合。我想知道是否可以通过删除其 alpha 来节省几个字节或获得更多的颜色深度。
同样,我正在做一些延迟照明,我所有的深度计算都发生在一个不是默认的帧缓冲区中。然后,我只需将一个四边形(两个 tris)渲染到默认帧缓冲区,其中包含我渲染场景的纹理以及一些 GUI 元素,这些元素都不需要深度测试。我glDisable(GL_DEPTH_TEST)
在渲染默认帧缓冲区时调用,但我不介意根本没有深度缓冲区而不是我不使用的深度缓冲区。
我可以在 OpenGL 中做到这一点吗?或者在我创建 OpenGL 上下文的 SDL 中?
我尝试使用以下 SDL 属性创建我的 OpenGl 上下文
sdl.GL_SetAttribute(sdl.GL_DOUBLEBUFFER, 1)
sdl.GL_SetAttribute(sdl.GL_DEPTH_SIZE, 0)
sdl.GL_SetAttribute(sdl.GL_ALPHA_SIZE, 0)
info := sdl.GetVideoInfo()
bpp := int(info.Vfmt.BitsPerPixel)
if screen := sdl.SetVideoMode(640, 480, bpp, sdl.OPENGL); screen == nil {
panic("Could not open SDL window: " + sdl.GetError())
}
if err := gl.Init(); err != nil {
panic(err)
}
不幸的是,SDL 对 GoLang 的绑定缺少sdl_gl_GetAttribute
允许我检查我的愿望是否被授予的功能。
正如我所说,没有紧急情况。我主要是好奇。