У меня есть приложение, которое использует расширение GLX texture_from_pixmap
, для которого требуется буфер цвета, созданный с использованием FBConfig с GLX_BIND_TO_TEXTURE_RGB_EXT или GLX_BIND_TO_TEXTURE_RGBA_EXT, согласно спецификации.
Только цветовой буфер изПиксельное изображение GLX, созданное с использованием FBConfig с атрибутом GLX_BIND_TO_TEXTURE_RGB_EXT или GLX_BIND_TO_TEXTURE_RGBA_EXT, установленное в значение TRUE, может быть связано как текстура.
https://www.khronos.org/registry/OpenGL/extensions/EXT/GLX_EXT_texture_from_pixmap.txt
Мое приложение работает и отлично работает с Mes идрайвер Intel i965, но не с проприетарным драйвером Nvidia.
При использовании glXChooseFBConfig с драйвером Nvidia не возвращаются соответствующие FBConfigs, и я не могу понять, почему.
Я сделал минимальный пример кода, который воспроизводит эту проблему.
#include <stdio.h>
#include <X11/Xlib.h>
#include <GL/glx.h>
int main()
{
Display *display = XOpenDisplay(NULL);
if (!display) {
printf("Unable to connect to display.\n");
return 1;
}
int pixmap_config[] = {
GLX_BIND_TO_TEXTURE_RGB_EXT, True,
GLX_NONE
};
int c = 0;
GLXFBConfig *configs = glXChooseFBConfig(display, 0, pixmap_config, &c);
if (!configs) {
printf("No appropriate GLX FBConfig available!\n");
} else {
printf("Number of matching configs: %i\n", c);
}
return 0;
}
На любой видеокарте Nvidia, которую я тестирую с использованием проприетарного драйвера, я получаю:
Нет соответствующего GLX FBConfigдоступны!
Используя Intel Graphics с Mesa, я получаю:
Числосоответствующих конфигов: 82
Что я тут не так делаю?