[英]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.