QOpenGL:颜色索引模式
QOpenGL: Color Index mode
我正在使用QT在Unix中工作,我正在尝试创建一个位图(QGLWidget或QGLPixelBuffer类(以使用OpenGL渲染。我需要使用颜色索引模式,所以当我创建位图时,我声明了这个 qglformat:
qglformat.setDirectRendering(true);
qglformat.setRgba(false); // COLOR INDEX MODE
qglformat.setDepth(true);
qglformat.setOverlay(false);
qglformat.setDepthBufferSize(16);
然后我创建位图:
QGLWidget:
m_qglwiget = new QGLWidget(qglformat);
m_qglwiget->setGeometry(0,0,m_iW,m_iH);
QGLPixelBuffer:
m_pB = new QGLPixelBuffer(m_iW,m_iH,qglformat);
在第一种情况下,小部件被创建,但如果我看到它是否有效,函数 isValid(( 返回"false"。并且执行中止并出现该错误:QGLContext::makeCurrent((:无法使无效上下文当前。因为上下文也是无效的。
否则,在第二种情况下,PixelBuffer 创建正确,但它已自动将索引颜色模式更改为 RGB 模式。
使用Windows在同一台计算机上运行相同的程序,因此不是图形卡的问题。
你能告诉我如何正确定义位图以便能够在颜色索引模式下渲染吗?
我需要使用颜色索引模式
为什么?老实说为什么?
颜色索引模式使用起来很糟糕,NO(!1998 年之后构建的 GPU 实际上支持它!此外,颜色索引模式已从OpenGL的现代版本中删除。
只。不要。用。它!
对于OpenGL-1.4及更早版本,只需假装它不存在。
如果要创建颜色索引像素映射,请以 RGB 格式渲染它,然后将其转换为索引模式。
他使用Windows在同一台计算机上运行相同的程序,因此这不是显卡的问题。
原因不是GPU,而是自1996年以来随Windows一起发布的软件仿真也实现了颜色索引模式。如果 GPU 不支持请求的像素格式,但软件仿真支持,它将静默进入软件仿真模式。
PixelBuffer 已正确创建,但它已自动将索引颜色模式更改为 RGB 模式。
大多数(今天所有(GPU都支持PBuffers,但Windows的软件仿真不支持。因此,通过请求PBuffer,唯一可以满足此请求的像素格式将是RGB。
- 数组索引的值没有增加
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 为什么在保护模式下继承升级不起作用
- 如何在全屏模式下(在OpenGL中)使背景透明
- 查找最接近的大于当前数字的数字的索引
- 在C++中调整向量中的索引
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- 重载元组索引运算符-C++
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 此模式的C++RegEx
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 为std::string的某个索引赋值
- 并行用于C++17中数组索引范围内的循环
- avrogencpp能为模式中的每种类型生成单独的头文件吗
- 使用可变模板的Broadcaster/Listener模式
- c++方法参数只能在linux的发布模式下自行更改
- 跟随整数索引列表的自定义类迭代器
- 在匹配另一个模式的字符串中找到最短子字符串的开始和结尾索引
- QOpenGL:颜色索引模式