我正在尝试通过动态计算顶点位置来创建点网格,这是基于它们在发送到着色器的顶点数组中的索引.是否有我可以在着色器中调用的gl_VertexID变量的等效变量?或者另一种访问阵列中位置的方法,而不必向GPU发送更多数据?谢谢,乔希.
这是我的顶点着色器:
attribute vec4 vertexPosition;
uniform mat4 modelViewProjectionMatrix;
vec4 temp;
uniform float width;
void main()
{
temp = vertexPosition;
// Calculate x and y values based on index:
temp.y = floor(gl_VertexID/width);
temp.x = gl_VertexID - width*temp.y;
gl_Position = modelViewProjectionMatrix * temp;
}
Run Code Online (Sandbox Code Playgroud) 我在思考如何最好地构建我的(非常简单的)Firestore 应用程序时遇到了一些麻烦。我有一组这样的用户:
users: {
'A123': {
'name':'Adam'
},
'B234': {
'name':'Bella'
},
'C345': {
'name':'Charlie'
}
}
Run Code Online (Sandbox Code Playgroud)
...并且每个用户都可以“喜欢”或“不喜欢”任意数量的其他用户(例如 Tinder)。
我想构建一个“喜欢”表(或 Firestore 等效表),以便我可以列出我还没有喜欢或不喜欢的人。我最初的想法是在用户表中创建一个“喜欢”对象,其布尔值如下所示:
users: {
'A123': {
'name':'Adam',
'likedBy': {
'B234':true,
},
'disLikedBy': {
'C345':true
}
},
'B234': {
'name':'Bella'
},
'C345': {
'name':'Charlie'
}
}
Run Code Online (Sandbox Code Playgroud)
这样,如果我是 Charlie 并且我知道我的 ID,我可以列出我还没有喜欢或不喜欢的用户:
var usersRef = firebase.firestore().collection('users')
.where('likedBy.C345','==',false)
.where('dislikedBy.C345','==',false)
Run Code Online (Sandbox Code Playgroud)
这不起作用(每个人都被列出)所以我怀疑我的方法是错误的,尤其是“==false”部分。有人可以指出我如何构建这个的正确方向吗?作为一个额外的问题,如果有人改变了他们的名字会发生什么?我是否需要更改所有嵌入的“likedBy”数据?或者我可以使用云功能来实现这一点吗?
谢谢!