如何查看自己電腦支持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\n", version);  /// log是我封裝的一個輸出函數
//printf("OpenGL version : %s\n", 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相關的信息,譬如:上面的版本,顯卡名稱等等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM