我有一个使用150兼容性GLSL版本的旧顶点着色器:
#version 150 compatibility
out vertexData
{
vec3 v;
vec3 n;
} vertex;
void main()
{
vertex.v = gl_Vertex.xyz;
vertex.n = normalize(gl_NormalMatrix * gl_Normal);
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
但是我想在OSX上使用它。如何访问gl_ModelViewProjectionMatrix
等内置变量以及out
制服等语法?
如果我不使用glutInitDisplayMode(GLUT_3_2_CORE_PROFILE)
,那么我会得到一个使用GLSL版本120的旧版OpenGL,它使用所有旧的varying
语法,并且不支持几何着色器显然,如果我使用3.2核心配置文件,那么我必须自己管理所有矩阵,坦率地说,我可能不愿意做一堆以前不需要完成的样板代码。
答案 0 :(得分:2)
但是我想在OSX上使用它。我怎样才能访问这两个 内置了
gl_ModelViewProjectionMatrix
等变量以及语法 比如out
制服?
你根本做不到。您可以使用旧版GL,这将限制您在该平台上的GL2.1 / GLSL 1.20,或者您使用核心配置文件,其中没有这些内置存在。
如果我确实使用3.2核心配置文件,那么我必须自己管理所有矩阵,坦率地说,我不会费心去做一堆以前不需要做的样板代码。
你可能不喜欢它,但这正是你必须要做的。根据规范要求实现的唯一配置文件是核心配置文件,因此不能依赖于找到旧的传统GL和几何着色器等现代功能可能混合的实现。