问题描述
我尝试将顶点的z更改为不同的数字,但看起来与它具有0时相同。我是一个视觉学习者,因此任何示例或视觉解释都将不胜感激。
不变:
const vertices2 = [0,.4,-.6,.0,.6,0];
let dmColor2 =[1,1,.5,.9,0];
//creates object2
dmVAO2 = gl.createVertexArray();
gl.bindVertexArray(dmVAO2);
dmVBO2 = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER,dmVBO2);
gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(vertices2),gl.STATIC_DRAW);
gl.vertexAttribPointer(0,3,gl.FLOAT,false,0);
gl.enabLevertexAttribArray(0);
//creates color 2
dmColorBuffer2 = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER,dmColorBuffer2);
gl.bufferData(gl.ARRAY_BUFFER,new Float32Array(dmColor2),gl.STATIC_DRAW);
gl.vertexAttribPointer(1,0);
gl.enabLevertexAttribArray(1);
gl.bindVertexArray(dmVAO2);
gl.vertexAttrib1f(3,1.0);
indices = [0,2];
gl.vertexAttrib3f(2,-1,-1);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,new Uint16Array(indices),gl.DYNAMIC_DRAW);
gl.drawElements(gl.TRIANGLES,indices.length,gl.UNSIGNED_SHORT,0);
和 进行更改:
const vertices2 = [0,.8,.8];
let dmColor2 =[1,0);
我做错了什么还是错过了什么,我真的不明白为什么它不起作用。看起来像是2d的蓝色三角形。
解决方法
您需要显示着色器。 WebGL本身不会绘制3D。它所做的就是在GPU上执行2个功能,一个是顶点着色器,以计算剪辑空间顶点,然后绘制2D点,直线和三角形。在绘制这些2D点,线和三角形时,它调用另一个2D片段着色器,以决定制作像素的颜色。除非您编写将3D转换为2D三角形的着色器,否则在点上添加Z坐标将不会提供3d。
在这里a whole set of articles上有几张图。确保阅读先决条件文章。这不是一个小话题。