vector变换之前的片段着色器操作

我觉得我误解了如何使用vector/片段着色器。 我的vector着色器如下所示:

uniform mat4 uVMatrix; // view (camera transformations) uniform mat4 uMMatrix; // model (object transformations) uniform mat4 uPMatrix; // projection attribute vec4 aVertexPosition; // passed in attribute vec4 aVertexColor; varying vec4 vColor; void main() { gl_Position = uPMatrix * uVMatrix * uMMatrix * aVertexPosition; vColor = aVertexColor; // pass the vertex's color to the fragment shader } 

很简单。 现在我只有一个简单的方块,我正在3D空间和绘图中转换。 我想在suqare中间看一个圆圈,如下所示:

对象绘制

这个正方形有4个顶点,我在vector着色器中转换。 这是我的片段着色器:

 precision mediump float; // how precise to be with floats varying vec4 vColor; // interpolated from the vertices void main() { gl_FragColor = vColor; } 

现在,我已经看到我可以访问gl_FragCoord,但是这个坐标毕竟是vector变换,对吗? 在所有的投影变换之前,我怎样操纵正方形中的像素? 我不认为我可以在vector着色器中做,因为只有4个vector

一个简单的方法是将紫外线分配给你的四边形网格物体,然后你可以在你的片段着色器中利用这个UV来做这样的工作(伪代码):

 color = uv.magnitude > 0.5f ? invisible : visible 

这将工作,因为紫外线插值在多边形上。