OpenGL GAO訪問衝突(glBindVertexArray)

    最近剛到SIAT實習,可能要做VR or 3D的播放器開發,具體還不知道是做PC端還是移動端,所以在還沒有明確方向的時候,先開始學習OpenGL。

    關於多媒體技術,組裏用的是十多年的老框架,windows的DirectShow,現在好像已經被Media Foundation取代了,集成在windows SDK裏面。這幾天配環境也因爲是老框架,吃了不少苦,網上資料也不多。

    關於多媒體播放器開發,如果有相關經驗的,歡迎指導。剛上手,特別迷茫,老的不想用,新的不知道有什麼,在知乎上看了不少經驗,現在勉強先上路。

    今天開始研究學習OpenGL,使用的是opengl-tutorial的教程。

    參照流程,進行到第二章,繪製頂點三角形的時候,出現報錯。

	GLuint VertexArrayID;
	glGenVertexArrays(1, &VertexArrayID);
	glBindVertexArray(VertexArrayID);

    0xC0000005: 執行位置 0x0000000000000000 時發生訪問衝突。

    算是比較常見的異常,可能原因:1.空指針或引用 2.內存未釋放

    檢查代碼後,嘗試加入判斷語句

	GLuint VertexArrayID;
	glGenVertexArrays(1, &VertexArrayID);
	if (VertexArrayID != NULL)
	{
		glBindVertexArray(VertexArrayID);
	}
    仍然報錯

    但教程給出的範例代碼卻沒有問題。

    經過對比檢查後,發現關鍵是在創建GAO對象前,沒有等待GLEW初始化完畢,因此造成了訪問衝突。

    解決方式是在 glewInit() 前加入 glewExperimental = GL_TRUE;


發佈了30 篇原創文章 · 獲贊 27 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章