当前位置: 首页 > 知识库问答 >
问题:

OpenGL 3.3在Ubuntu 14.04(LinuxMint 17.1)英特尔显卡LWJGL

西门庆
2023-03-14

我试图运行用LWJGL和GLSL 3.3构建的OpenGL软件,但在Linux Mint 17.1和Intel Ivy Bridge(HD4000)Mesa 10.6.0-devel下运行时遇到了问题。

据我所知,Mesa 10.1应该支持Sandry Bridge和更新的Intel CPU的OpenGL和GLSL 3.3。

glxinfo | grep OpenGL返回:

OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Mobile x86/MMX/SSE2
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.6.0-devel (git-4348046 2015-05-02 trusty-oibaf-ppa)
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 10.6.0-devel (git-4348046 2015-05-02 trusty-oibaf-ppa)
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.6.0-devel (git-4348046 2015-05-02 trusty-oibaf-ppa)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:

(我猜我需要OpenGL着色语言版本字符串:3.30,而不仅仅是核心配置文件3.3?)

调用Display时。create()(LWJGL)没有参数,我得到以下错误:

> 0:1(10): error: GLSL 3.30 is not supported. Supported versions are:
> 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES

和glGetString(GL_版本)返回:

> 3.0 Mesa 10.6.0-devel (git-4348046 2015-05-02 trusty-oibaf-ppa)

如果我尝试调用Display。create(),核心配置文件为true,如下所示:

Display.create(new PixelFormat(), new ContextAttribs(3,3).withProfileCore(true));

我收到以下错误:

0:11(6): error: operands of `==' must have the same type

GL_版本为:

3.3 (Core Profile) Mesa 10.6.0-devel (git-4348046 2015-05-02 trusty-oibaf-ppa)

我不知道这意味着什么,或者我应该做什么才能在英特尔集成图形上运行OpenGL 3.3。我肯定这段代码在nVidia(4.4支持)上也能正常工作。

对此事的任何帮助将不胜感激,谢谢!

编辑:导致问题的着色器:

#version 330

in vec2 texCoord0;

uniform vec3 color;
uniform sampler2D sampler;

void main() {
    vec4 textureColor = texture2D(sampler, texCoord0.xy);

    if (textureColor == 0)
        gl_FragColor = vec4(color, 1);
    else
        gl_FragColor = textureColor * vec4(color, 1);
}

比较textureColor==vec4(0,0,0,0)确实有效,抱歉。

我现在可以运行它了。但是我没有看到任何纹理。我会试着找到问题,在我的着色器中有什么明显的原因吗?

共有1个答案

朱保赫
2023-03-14

这一点很明显,不是吗?

vec4 textureColor = ...
[...]
if (textureColor == 0)

不能将vec4与标量进行比较。如果(textureColor==vec4(0)),则可以使用类似的内容。

但是,在大多数情况下,比较浮点值是否相等是一个坏主意。我真的建议您使用不同的方法,例如测试长度(texture Color)

 类似资料:
  • 本人背景算法工程师,cv方向论文两篇,nlp实习经历。 一轮 25min 自我介绍 询问项目论文 问题:resnet架构、c++程序执行过程 反问 二轮 40min 自我介绍 询问项目论文(论文很细致,结构、损失、数据集、实验结果、创新点) 问题:Transformer架构、核心公式以及采用什么的正则化、BN和LN的区别。其实大部分是根据论文内容发散 反问 三轮HR面 25min 没有自我介绍 问

  • 问题内容: 每次与Hotspot一起使用时,都不得不烦恼我,不得不阅读可怕的AT&T语法。 有没有办法告诉它使用英特尔语法? 问题答案: 您所需要做的就是将一些选项解析到dis-asm.h和binutils代码上 对于Intel Asm(我也更喜欢),只需添加以下内容 如果您需要组合选项,请像这样用逗号分隔 任何未被识别为hsdis选项的内容都将被提供给反汇编程序,这些选项与您从中看到的选项相同

  • 问题内容: 从我读到的内容来看,它用于修复CPU中的错误,而无需修改BIOS。根据我对汇编的基本知识,我知道汇编指令在内部由CPU分解为微代码,并相应地执行。但是intel以某种方式可以在系统启动和运行时进行一些更新。 有人有更多信息吗?是否有关于微码可以做什么以及如何使用的文档? 编辑:我读过维基百科的文章:没弄清楚我怎么能自己写一些,以及它有什么用。 问题答案: 在较早的时期,微代码在CPU中

  • 如何使用Java中的Intel AVX矢量指令集?这是一个简单的问题,但答案似乎很难找到。

  • 我已经成功地设置了我的英特尔伽利略板(第2代)与最新的Windows IoT映像(2/12/2014)。我可以引导图像没有任何问题,telnet到它和运行'眨眼'应用程序罚款。 我试着运行“卡萨布兰卡”样本,并按照http://ms-iot.github.io/content/Casablanca.htm.当我远程登录Galileo板并尝试运行控制台应用程序时,我根本没有得到任何输出。尝试从Vis

  • 我想安装英特尔 HAXM(使 Android 模拟器更快),但安装程序显示我的计算机“不支持虚拟化技术 (VT-x)”。 在BIOS中,我看到我启用了虚拟化技术,并且我还有运行良好的Windows Phone模拟器(需要这项技术)。 我下载了Intel Identification Utility,它说我的Processor不支持这项技术(尽管上面的事实和互联网上的搜索表明我的i5确实支持这项科技