<script id="shader-triangle-fs" type="x-shader/x-fragment">
precision mediump float;
uniform vec4 colorVec;
uniform sampler2D uSampler;
varying highp vec2 vTextureCoord;
varying vec3 vVertexPosition;
void main(void) {
float dist = length(vVertexPosition.xy - gl_FragCoord.xy);
float att = 100.0/dist;
vec4 color = vec4(att,att,att, 1);
vec4 texture = texture2D(uSampler, vec2(vTextureCoord.s, vTextureCoord.t));
gl_FragColor = color;
}
</script>
<script id="shader-triangle-vs" type="x-shader/x-vertex">
attribute vec3 aVertexPosition;
attribute vec2 aTextureCoord;
uniform mat4 uMVMatrix;
uniform mat4 uPMatrix;
varying highp vec2 vTextureCoord;
varying vec3 vVertexPosition;
void main(void) {
gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
vTextureCoord = aTextureCoord;
vVertexPosition = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
}
</script>
В float dist = length(vVertexPosition.xy - gl_FragCoord.xy);
, что я хочу, чтобы это расстояние от текущей вершины координат фрагментировать координаты.GLSL шейдер Фрагмент получить Vertex Поместите
Но всегда я получаю это.
http://puu.sh/6rbva.jpg
http://puu.sh/6rbzM.jpg
(я использовал triangleStrip.)
Эти изображения показывают vVertexPosition.xy - gl_FragCoord.xy = 0
так vVertexPosition.xy == gl_FragCoord.xy
.
Почему это происходит?
И как получить расстояние от текущей позиции вершины до текущего FragCoord?
Спасибо. Но при использовании 'flat variableing vec3 vVertexPosition;', я получаю сообщение об ошибке «Незаконное использование зарезервированного слова». Я использую WebGL, версия glsl - 100 – bmyu