gpt4 book ai didi

opengl - 如何在GLSL程序中识别intel显卡?

转载 作者:行者123 更新时间:2023-12-01 12:45:57 27 4
gpt4 key购买 nike

在 Nvidia 卡上,如果要启用裁剪平面,则必须在 glsl 程序中分配 gl_ClipVertex。但是在 Ati 卡上,如果分配了 gl_ClipVertex 就会出现问题。

为了兼容Nvidia/Ati,我们这样写代码:

// fix the clipping bug for both Nvidia and Ati   
#ifdef __GLSL_CG_DATA_TYPES
gl_ClipVertex = gl_ModelViewMatrix*gl_Vertex;
#endif

你可以查看这个link获取更多信息。

有问题。在英特尔显卡(例如 HD Graphics 3000)上,也必须分配 gl_GlipVertex。如果不是,则裁剪平面无用。但正如我们所知,__GLSL_CG_DATA_TYPES 仅在 Nvidia 系统上定义。所以 gl_ClipVertex 行在英特尔上被跳过。现在似乎很难在 Nvidia/Ati/Intel 卡上编写兼容的 glsl 程序。

在GLSL程序中有没有像__GLSL_CG_DATA_TYPES这样的东西可以识别intel显卡?

最佳答案

我假设您在谈论错误解决方法。好吧,解决这个问题的唯一真正方法是 #define __GLSL_CG_DATA_TYPES 自己从 着色器(即:将字符串插入着色器).更好的是,在 #version 声明之后创建您自己的 #define 并将其插入到着色器字符串中。

如何将字符串插入着色器由您决定。您可以对 GLSL 进行一些简单的解析,找到 #version 指令之后的第一个非注释行并在那里进行插入。

从着色器外部,您必须使用 GL_RENDERERGL_VENDOR 字符串来检测您是否应该提供 #define 或不是。

关于opengl - 如何在GLSL程序中识别intel显卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15964337/

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