Webgl 使用pointSize触发片段着色器以绘制像素

Webgl 使用pointSize触发片段着色器以绘制像素,webgl,webgl2,Webgl,Webgl2,我查询pointSize range gl.getParameter(gl.ALIASED_POINT_SIZE_range)并得到[11024]这意味着,使用该点覆盖纹理(因此它触发片段着色器以绘制pointSize 使用此方法最多只能渲染大于1024x1024的图像 我想我必须将2个三角形(6个点)绑定到片段着色器,使其覆盖所有clipspace,然后是gl.viewport(x、y、宽度、高度);是否将整个区域映射到输出纹理(帧缓冲区对象或画布) 除了在片段着色器中使用属性之外,还有其他方

我查询pointSize range gl.getParameter(gl.ALIASED_POINT_SIZE_range)并得到[11024]这意味着,使用该点覆盖纹理(因此它触发片段着色器以绘制
pointSize

使用此方法最多只能渲染大于1024x1024的图像

我想我必须将2个三角形(6个点)绑定到片段着色器,使其覆盖所有clipspace,然后是gl.viewport(x、y、宽度、高度);是否将整个区域映射到输出纹理(帧缓冲区对象或画布)


除了在片段着色器中使用属性之外,还有其他方法(可能是webgl2中的新方法吗?

正确,可以使用单个点渲染的最大大小区域是由
gl.getParameter(gl.ALIASED\u point\u size\u RANGE)返回的任何值。

规范不要求任何大于1的大小。GPU/驱动程序/浏览器返回1024并不意味着用户的计算机也将返回1024

注意:根据您的问题历史记录进行回答

在WebGL中,所有情况下99%的正常操作都是提交顶点。要绘制四边形,请提交4个顶点和6个索引或6个顶点。要绘制三角形,请提交3个顶点。要绘制圆,请提交圆的顶点。要绘制汽车,请提交汽车的顶点,或者更可能提交车轮的顶点,请绘制使用这些顶点的4个轮子,提交汽车其他部分的顶点,绘制汽车的每个部分

你可以移动、缩放、旋转并将它们投影到或空间中。所有你喜欢的游戏都可以这样做。canvas 2D api通过OpenGL ES在内部执行此操作。Chrome本身执行此操作以呈现此网页的所有部分。这是标准。任何其他操作都是例外,可能会导致限制

为了好玩,在WebGL2中,你还可以做一些其他的事情。它们不是正常的事情,不推荐它们来实际解决现实世界中的问题。它们可以很有趣,尽管只是为了挑战

在WebGL2中,顶点着色器中有一个名为
gl\u VertexID
的全局变量,该变量是当前正在处理的顶点的计数。您可以将其与Smart math一起使用,在顶点着色器中生成顶点,而无需其他数据

下面是一些绘制覆盖画布的四边形的代码

函数main(){
const gl=document.querySelector('canvas').getContext('webgl2');
const vs=`#版本300 es
void main(){
int x=gl_VertexID%2;
int y=(gl_VertexID/2+gl_VertexID/3)%2;
gl_位置=vec4(ivec2(x,y)*2-1,0,1);
}
`;
常数fs=`#版本300 es
精密中泵浮子;
外显vec4外显色;
void main(){
outColor=vec4(1,0,0,1);
}
`;
//编译着色器,链接程序
常量prg=twgl.createProgram(gl[vs,fs]);
德国劳埃德船级社使用计划(prg);
常数计数=6;
总图数组(总图三角形,0,计数);
}
main();