我正在制作一个非常基本的示例,它使用p5.js和一个带有WEBGL的画布
function setup(){
createCanvas(100, 100, WEBGL);
}
function draw(){
beginShape(POINTS);
vertex(0,0);
endShape();
}
这是完整的节目。当我运行这个程序时,我会得到以下错误
p5.js:31516 WebGL: INVALID_VALUE: enableVertexAttribArray: index out of rangep5.RendererGL._bindImmediat
我一直在使用WebGL,但似乎我不能再显示纹理了。片段着色器的输出始终为黑色(轮廓可见)。
我知道这个问题可能发生在纹理不是2的幂的情况下。不幸的是,我的是(256x256)。此外,我以前确实让它们工作过(但我做了太多更改,无法回溯问题)。
编辑:我已经大大简化了我的程序,并按照gman的建议使用了WebGL检查器(顺便说一下,这是一个很棒的技巧)。纹理在WebGL检查器中看起来很好。我正要发布整个代码的时候,我注意到
var textureUniformLocation = gl.getUniformLocation(shaderProgram, "uSampler");
c
我是WebGL的新手,我想知道如何改变不同物体的颜色。
我在一个数组中有一个圆和一个字段的数据。我想用绿色显示字段,在字段上以蓝色显示圆圈。
我得到了vColor属性的错误(它不显示我的圆圈,只显示字段):
[.Offscreen-For-WebGL-05A18588]GL ERROR :GL_INVALID_OPERATION : glDrawArrays: attempt to access out of range vertices in attribute 1,
但是,当我删除设置vColor属性的代码时,我可以看到圆圈,但是字段和圆圈都以黑色显示。知道我哪里出问题了吗?
着色代码:
我正在用WebGL渲染多面体,我想知道是否有一种更有效、更不容易出错的方法来生成顶点位置和法线。
理想情况下,我会向GPU发送一个只包含索引的缓冲区,并在顶点着色器中计算每个顶点的位置和法线。顶点着色器的外观如下所示:
uniform mat4 transform;
uniform ??? polyhedra; // some kind of representation of the polyhedra type
attribute int index;
varying vec4 normal;
varying vec2 uv;
vec3 calculatePosition(
我试图在WebGL纹理中存储一个顶点数组,但是我不知道如何正确地完成它。这样做的目的是将顶点传递到我的片段着色器,并处理它们以进行光线跟踪。
我的JavaScript代码目前如下所示:
var a = new ArrayBuffer();
// Model.VerticeMap is an array holding all vertices [x1, y1, z1, x2, y2, z2, ...]
a = Model.VerticeMap; // array length: 36864
var dataArray = new Float32Array(a);
var vMapTextur