OpenGL版本和颜色深度

时间:2015-03-11 15:04:30

标签: opengl

我制作了一个程序,可以改变分辨率,颜色深度......然后在屏幕上渲染简单的纹理。在我切换到8b颜色深度之前,这一切都没有任何问题。然后出现调用不存在的函数(函数指向0x00)的问题,如glCreateShader。这让我很奇怪,我有了想法,这被证明是正确的。创建的上下文版本非常低。

在调用glGetString(GL_VERSION)之后,我收到了上下文版本为1.1.0。颜色深度越高,返回4.4

是否有任何理由减少版本?我查看了google和一些opengl.org页面,但我没有发现任何关于弃用8b颜色深度的内容。即使Windows CAN切换到这种颜色深度,也没有理由说OpenGL不能处理这个问题。

当然,我可以通过减少颜色数来模仿它,记忆不是我所关心的。我只是想知道为什么会这样。程序是实验室实验的原型,因此我需要尽可能多的选项,这只是减少了三分之一。

我要补充的最后一件事是该程序是用C / C ++编写的,带有Winapi和一些WGL函数,但我认为这并不重要。

1 个答案:

答案 0 :(得分:1)

您的图形驱动程序正在回退到软件实现,因为找不到符合您条件的硬件加速像素格式。

如果您请求RGB [ A ](WGL_TYPE_RGBA_ARB)颜色,大多数驱动程序都不会为您提供硬件加速的8位/像素格式,尤其模式。

  

当然,我可以通过减少颜色数来模仿它,记忆不是我所关心的。我只是想知道为什么会这样。

要获得8位格式,必须使用索引颜色模式(WGL_TYPE_COLORINDEX_ARB);调色板渲染。我怀疑现代驱动程序甚至不支持那种东西,除非它们提供兼容性配置文件(排除OS X之类的平台)。

您应该实际尝试的最小RGB颜色深度是RGB555或RGB565。现代硬件支持15/16位颜色。另一方面,索引颜色模式真的会推动你的运气。