• 如何查看自己电脑支持OpenGL core版本


    1. 起因:

    红宝书上的例子在电脑上运行后没有效果,但是怎么也找不到原因,反复对看了书上的源码和代码发现没有任何问题,但是就是没有树上写的效果

    2. 思路:查看函数的说明,这里推荐使用docs.gl,这个网站会列出函数在OpenGL中哪些版本中有效.

    查看后发现函数是OpenGL 4以后才有效,结合自己电脑比较老,所有想到了是不是自己电脑的OpenGL core版本比较低,不支持这个函数

    3. 通过OpenGL函数glGetString来获取我电脑的OpenGL core版本

    const char * version = (const char *)glGetString(GL_VERSION);
    log("OpenGL version : %s
    ", version);  /// log是我封装的一个输出函数
    //printf("OpenGL version : %s
    ", version);
    

    输出结果:OpenGL version : 3.3.12618 Core Profile Context 13.251.9001.1001,看到这个我认为应该是我电脑OpenGL 版本不支持这个函数,目前不知道怎么解决如何才能使用到新版OpenGL版本的函数,留待以后思考(注:我有猜测是不是可以通过升级显卡驱动,但是今天没试),

    4. 今天发现了一个新的查看方法判断自己电脑OpenGL是否支持我们写的版本(前提使用GLFW库)

    /// 错误日志接收函数
    static void error_callback(int error, const char *description)
    {
    	log("%s", description);  // 输出错误
    }
    
    glfwSetErrorCallback(error_callback); /// 关联上面的函数
    

    一旦OpenGL操作函数发生错误,就会自动回调这个函数,让我们知道发生了什么错误

    glfwWindowHint(GLFW_SAMPLES, 4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 4);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    
    window = glfwCreateWindow(512, 512, "Hello World", NULL, NULL);
    

    上述例子会输出如下错误:"WGL: Failed to create OpenGL context"

    • 后记:我们可以通过OpenGL的函数glGetString的不同参数来获取很多OpenGL相关的信息,譬如:上面的版本,显卡名称等等
  • 相关阅读:
    Cookie-Session
    Chrome浏览器的Timing分析
    K-means: 多次random initialization来避免bad局部最优
    K-means: optimization objective(最小化cost function来求相应的参数)
    unsupervised learning: K-means 算法
    unsupervised learning: clustering介绍
    SVM: 实际中使用SVM的一些问题
    SVM: 使用kernels(核函数)的整个SVM算法过程
    SVM: 用kernels(核函数)来定义新的features,避免使用多项式,高斯kernel
    SVM:从数学上分析为什么优化cost function会产生大距离(margin)分类器
  • 原文地址:https://www.cnblogs.com/zjzyh/p/4915567.html
Copyright © 2020-2023  润新知