簡體   English   中英

OpenGL,如何設置GLSL版本?

[英]OpenGL, how to set up GLSL version?

我的系統使用 freeglut 的 OpenGL 和 GLSL 的默認版本是 4.1,同樣使用 glew,它的初始化、着色器編譯和鏈接以及執行都沒有問題。

當我沒有指定 glutInitContextVersion、glutInitContextFlags 或 glutInitContextProfile 時,會發生這個默認版本,然后我的着色器工作正常。

不管我是否支持這個版本,我都想提供一個 3.3 的替代方案。 當我使用指定 3.3 版本的 glut 上下文時,應用程序啟動時沒有錯誤,glew 不會抱怨。 我的着色器假設使用 GLSL 3.3 版本,然后我設置了行

#version 330

但是當我的着色器被編譯時,OpenGL 會抱怨一個無效的枚舉消息。 我嘗試刪除此行或將其設置為另一個版本,但仍然出現相同的錯誤。 在所有初始化都正確完成后,我要求使用 OpenGL 版本,我得到了正確的 3.3,但對於 GLSL 版本,我仍然得到默認的 4.1。

glGetString(GL_SHADING_LANGUAGE_VERSION);

如果我是對的,請糾正我,我猜這個版本被着色器代碼中的版本行覆蓋了。 我想知道是否也有機會初始化指定 GLSL 版本的上下文?

我終於解決了。 如果我將核心配置文件與兼容模式一起設置

glutInitContextProfile(GLUT_CORE_PROFILE | GLUT_COMPATIBILITY_PROFILE);

無法識別 2.1 版本的 OpenGL 命令。 這與教程中提供的信息背道而馳。 無論如何,只需設置 GLUT_COMPATIBILITY_PROFILE 即可使用 3.3 或更高版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM