<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 프래그먼트 쉐이더가 정점 위치를 얻습니다.
하지만 항상 내가 얻는 것은 이것입니다. http://puu.sh/6rbzM.jpg
은 (내가 triangleStrip를 사용했습니다.)
이러한 이미지는 vVertexPosition.xy - gl_FragCoord.xy = 0
그래서 vVertexPosition.xy == gl_FragCoord.xy
을 보여줍니다.
왜 이런 일이 발생합니까?
현재 Vertex Position에서 현재 FragCoord로 거리를 얻는 방법은 무엇입니까?
감사합니다. 그러나 'flat varying vec3 vVertexPosition;'을 사용하면 "예약어를 잘못 사용했습니다"라는 오류 메시지가 나타납니다. WebGL을 사용하고 있습니다. glsl 버전은 100입니다. – bmyu