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

使用OpenGL核心配置文件与Mesa 10和GLFW3

顾高翰
2023-03-14

我运行ArchLinux与梅萨10在惠普笔记本电脑与英特尔高清3000 GPU。(还有一个ATI卡,但我在开机时关闭了它。)我试图用核心配置文件运行OpenGL代码。根据glxinfo,应该支持OpenGL 3.1和GLSL 1.4:

-> % glxinfo | grep version
OpenGL core profile version string: 3.1 (Core Profile) Mesa 10.0.1
OpenGL core profile shading language version string: 1.40
OpenGL version string: 3.0 Mesa 10.0.1
OpenGL shading language version string: 1.3

但是,当我编译GLFW程序时,请尝试强制核心配置文件,并要求使用OpenGL版本,如下所示:

#include <GL/glew.h>
#include <GLFW/glfw3.h>

int main(void)
{
    // Use OpenGL 3.1 core profile
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1);
    glfwWindowHint(GLFW_CONTEXT_REVISION, 0);

    // Create opengl context
    int window_width = 1024;
    int window_height = 768;
    GLFWwindow* window = initialize_glfw(window_width, window_height);
    if (!window)
    {
        glfwTerminate();
        std::exit(EXIT_FAILURE);
    }

    // Display OpenGL version
    int major, minor, rev, client, forward, profile;
    glfwGetVersion(&major, &minor, &rev);
    std::cout << "OpenGL - " << major << "." << minor << "." << rev << std::endl;
}

以及使用GLSL#版本140编译着色器,这是打印输出:

-> % ./main
OpenGL - 3.0.3
Shader compilation failed with this message:
0:1(10): error: GLSL 1.40 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES

所以,似乎OpenGL 3.1和GLSL 1.4应该得到支持,但我的GLFW程序中没有使用它们。谁能告诉我可能出了什么问题?

共有2个答案

邓阳伯
2023-03-14

在调用其他函数之前,您需要初始化GLFW。在对OpenGL上下文调用函数之前,您还需要使其成为当前上下文。

佟寒
2023-03-14

重读留档后,似乎出现了两个问题。正如elmindreda所指出的,其一是在创建窗口提示后调用init会将窗口提示设置回默认值,因此必须首先调用init。

其次,我正在使用OpenGL 3.1,GLFW文档说“如果请求低于3.2的OpenGL版本,必须使用GLFW_OPENGL_ANY_PROFILE。”我想用GLFW_OPENGL_CORE_PROFILE。

 类似资料:
  • 我试图用OpenGL3.3核心配置文件渲染一个简单的测试着色器。但我得到的一切都是一扇黑窗。 init opengl核心上下文和窗口 着色器编译没有错误,apitrace找不到任何opengl错误

  • Hibernate 的常用配置文件主要分为 2 种:核心配置文件(hibernate.cfg.xml)和映射文件(Xxx.hbm.xml),它们主要用于配置数据库连接、事务管理、Hibernate 本身的配置信息以及 Hibernate 映射文件信息。 本节我们只讲解 Hibernate 核心配置文件,也即 hibernate.cfg.xml,后续将在《 Hibernate 映射文件》一节中继续讲

  • 本文向大家介绍spring boot 核心配置文件是什么?相关面试题,主要包含被问及spring boot 核心配置文件是什么?时的应答技巧和注意事项,需要的朋友参考一下 配置文件有 . properties 格式和 . yml 格式,它们主要的区别是书法风格不同。 properties 配置如下: spring. RabbitMQ. port=5672 yml 配置如下: spring: Rab

  • 关于中文分词的详细配置实例和分词词典的自定义设置,可以访问Coreseek网站中文分词核心配置查看。 核心配置: charset_dictpath = /usr/local/mmseg3/etc/ charset_type = zh_cn.utf-8 #charset_table = .................... #需将原有的该配置注释掉 ngram_le

  • .NET核心和ASP.NET核心到底有什么区别?

  • 19.2 核心与核心模块 谈完了整个开机的流程,您应该会知道,在整个开机的过程当中,是否能够成功的驱动我们主机的硬件配备, 是核心 (kernel) 的工作!而核心一般都是压缩文件,因此在使用核心之前,就得要将他解压缩后,才能载入内存当中。 另外,为了应付日新月异的硬件,目前的核心都是具有“可读取模块化驱动程序”的功能, 亦即是所谓的“ modules (模块化)”的功能啦!所谓的模块化可以将他想