Я хочу сделать шейдер для точечных спрайтов - пока что все работает на iOS.Но не в Mac OS X. Мой вершинный шейдер:
attribute vec4 position;
attribute vec4 color;
attribute vec2 texcoord;
varying vec4 colorVarying;
uniform mat4 modelViewProjectionMatrix;
uniform float pointSize;
void main()
{
gl_Position = modelViewProjectionMatrix * position;
colorVarying = color;
gl_PointSize = pointSize;
}
Мой фрагментный шейдер:
varying lowp vec4 colorVarying;
uniform lowp float textureFlag;
uniform sampler2D texture;
void main()
{
gl_FragColor = textureFlag * texture2D(texture, gl_PointCoord) * colorVarying +
(1.0 - textureFlag) * colorVarying;
}
Фрагментный шейдер не компилируется на Mac из-за "gl_PointCoord".На Mac я добавил «#define lowp» в качестве препроцессора в шейдер.
Если я добавлю «#version 120 \ n» поверх шейдера, он отлично компилируется на Mac, но неничего не показывать (однако на iOS это не сработает, если я использую тег #version поверх шейдера - возможно, потому что версия 1.2 пропустит "lowp").
Итак, в чем может быть причина?Мой Mac говорит, что он использует GLSL 1.2 (я думаю, что был добавлен gl_PointCoord).Есть идеи?!?