【发布时间】:2012-07-30 04:48:23
【问题描述】:
两个问题:
我正在使用不同着色器的大型 VBO 中渲染元素。在 GLSL 1.2 中,如果我是正确的,我必须使用它,因为它是 OSX 上的最新版本不支持统一位置,我认为这意味着你的属性的位置是编译器决定的任何位置。有没有办法解决?例如,当我的 VBO 使用交错 (x,y,z,nx,ny,nz,texU,texV) 时,我需要多个着色器才能每次都在同一个地方访问这些属性。但是,我发现编译器为它们提供了不同的位置,导致该位置成为法线,依此类推。我需要它们的位置与我的 VBO 属性位置一致。
-
我刚刚完成了我的第一个 GLSL 渲染,看起来就像我忘记启用深度测试一样,各种多边形相互叠加。我启用了深度测试:
glEnable(GL_DEPTH_TEST);问题仍然存在。是否有不同的方法可以使用着色器启用它们?我以为深度缓冲区可以解决这个问题?
问题 2 已解决。结果是一个 SFML 问题,我需要在创建窗口时指定 OpenGL 设置。
【问题讨论】:
-
“不支持统一位置” 这些是属性位置,而不是统一位置。请更改您的问题以使用正确的术语。
-
您在第 1 点上错了,OSX 10.7 和 10.8 都支持 GLSL 1.50 和 ARB_explicit_attrib_location。 (根据我的测试,它们似乎都支持带有显式属性位置的 GLSL 3.30,但这没有记录)