gpt4 book ai didi

c - glXChooseFBConfig w/GLX_BIND_TO_TEXTURE_*_EXT 在 Nvidia 驱动程序上不返回 FBConfig

转载 作者:行者123 更新时间:2023-11-30 16:22:55 26 4
gpt4 key购买 nike

我有一个使用 GLX 扩展 texture_from_pixmap 的应用程序,它需要根据规范使用带有 GLX_BIND_TO_TEXTURE_RGB_EXT 或 GLX_BIND_TO_TEXTURE_RGBA_EXT 的 FBConfig 创建颜色缓冲区。

Only a color buffer of a GLX pixmap created using an FBConfig with attribute GLX_BIND_TO_TEXTURE_RGB_EXT or GLX_BIND_TO_TEXTURE_RGBA_EXT set to TRUE can be bound as a texture.

https://www.khronos.org/registry/OpenGL/extensions/EXT/GLX_EXT_texture_from_pixmap.txt

我的应用程序执行此操作,并且可以与 Mesa 和 Intel i965 驱动程序一起正常工作,但不能与专有的 Nvidia 驱动程序一起工作。

当将 glXChooseFBConfig 与 Nvidia 驱动程序一起使用时,没有返回匹配的 FBConfig,我似乎不明白为什么。

我制作了一个最小的代码示例来重现此问题。

#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 显卡上,我得到:

No appropriate GLX FBConfig available!

将英特尔显卡与 Mesa 结合使用,我得到:

Number of matching configs: 82

我在这里做错了什么?

最佳答案

我认为问题来自传递给 glXChooseFBConfig (您的 pixmap_config[])的属性列表。

我猜某些驱动程序可能会用默认值填充必填字段,然后将其内部配置与请求的配置进行比较。

问题是EXT_texture_from_pixmap仅适用于像素图,不适用于Windows。
因此,您应该使用包含 GLX_PIXMAP_BIT 的掩码设置 GLX_DRAWABLE_TYPE 字段,而不是默认的 GLX_WINDOW_BIT

关于c - glXChooseFBConfig w/GLX_BIND_TO_TEXTURE_*_EXT 在 Nvidia 驱动程序上不返回 FBConfig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54208703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com