Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebGL仅渲染顶点,而不使用gl.drawerElements()渲染三角形_Javascript_Rendering_Webgl_Webgl2 - Fatal编程技术网

Javascript WebGL仅渲染顶点,而不使用gl.drawerElements()渲染三角形

Javascript WebGL仅渲染顶点,而不使用gl.drawerElements()渲染三角形,javascript,rendering,webgl,webgl2,Javascript,Rendering,Webgl,Webgl2,我试图渲染一个索引立方体(使用重复的顶点来实现平面着色)。我设置了一个位置缓冲区,一个索引缓冲区,设置着色器输入并使用gl.drawerelements(gl.TRIANGLES,…)绘制它: 但是,在屏幕上,我只看到顶点,但没有渲染三角形 我在每次gl调用后都使用gl.getError()打印,但都返回0(无错误)。以下是实时演示(立方体可以通过在画布上单击和拖动进行旋转): 函数打印错误(gl、msg) { console.log(msg+“”+gl.getError()); } 让点击=

我试图渲染一个索引立方体(使用重复的顶点来实现平面着色)。我设置了一个位置缓冲区,一个索引缓冲区,设置着色器输入并使用
gl.drawerelements(gl.TRIANGLES,…)
绘制它:

但是,在屏幕上,我只看到顶点,但没有渲染三角形

我在每次gl调用后都使用
gl.getError()
打印,但都返回0(无错误)。以下是实时演示(立方体可以通过在画布上单击和拖动进行旋转):

函数打印错误(gl、msg)
{
console.log(msg+“”+gl.getError());
}
让点击=假;
设lastXPos=-1;
设lastYPos=-1;
让旋转速度=0.5/(度/像素)每像素在给定轴上旋转0.1度
让螺距=0.0
设maxPitch=90.0
让偏航=0.0
设projMatrix=Object();
让modelViewMatrix=Object();
设buffers=Object();
设programInfo=Object();
功能deg2Rad(度)
{
返回度*(Math.PI/180.0);
}
函数main_gl()
{
const canvas=document.querySelector('#glcanvas');
const gl=canvas.getContext('webgl2');
//如果我们没有GL上下文,现在就放弃
如果(!gl)
{
警报('无法初始化WebGL。您的浏览器或计算机可能不支持它');
返回;
}
//顶点着色器程序
常量vsSource=`
属性向量4;
均匀mat4 uModelViewMatrix;
均匀mat4映射矩阵;
真空总管(真空){
gl_位置=投影矩阵*uModelViewMatrix*投影矩阵;
}
`;
//片段着色器程序
常数fsSource=`
真空总管(真空){
gl_FragColor=vec4(1,1,1,1);
}
`;
//初始化着色器程序;这是所有照明
//对于顶点等,将建立。
const shaderProgram=initShaderProgram(gl、vsSource、fsSource);
//收集使用着色器程序所需的所有信息。
//查找着色器程序正在使用的属性
//如需了解更多信息,请访问aVevrtexColor和
//查找统一的位置。
程序信息=
{
程序:着色器程序,
消耗:
{
vertexPosition:gl.GetAttributeLocation(着色器程序“避免Exposition”),
vertexColor:gl.getAttribLocation(着色器程序“aVertexColor”),
},
统一位置:
{
projectionMatrix:gl.getUniformLocation(着色器程序,'uProjectionMatrix'),
modelViewMatrix:gl.getUniformLocation(着色器程序'uModelViewMatrix'),
},
};
打印错误(德国劳埃德船级社,“收集的属性和一致性”);
setUpInputCallbacks(画布、gl);
//这里我们称之为构建所有
//我们将要绘制的对象。
缓冲区=初始缓冲区(gl);
设置场景(gl);
//画场景
绘图场景(gl);
}
// ================================================================================================
函数初始化缓冲区(gl)
{
常数位置=[
-1.0,  1.0,  1.0,
-1.0, -1.0,  1.0,
1.0, -1.0,  1.0,
1.0, -1.0,  1.0,
1.0,  1.0,  1.0,
-1.0,  1.0,  1.0,
-1.0,  1.0, -1.0,
-1.0,  1.0,  1.0,
1.0,  1.0,  1.0,
-1.0,  1.0, -1.0,
1.0,  1.0,  1.0,
1.0,  1.0, -1.0,
-1.0, -1.0, -1.0,
1.0, -1.0,  1.0,
-1.0, -1.0,  1.0,
-1.0, -1.0, -1.0,
1.0, -1.0, -1.0,
1.0, -1.0,  1.0,
-1.0,  1.0, -1.0,
-1.0, -1.0, -1.0,
-1.0, -1.0,  1.0,
-1.0,  1.0, -1.0,
-1.0, -1.0,  1.0,
-1.0,  1.0,  1.0,
1.0,  1.0,  1.0,
1.0, -1.0,  1.0,
1.0, -1.0, -1.0,
1.0,  1.0,  1.0,
1.0, -1.0, -1.0,
1.0,  1.0, -1.0,
1.0,  1.0, -1.0,
1.0, -1.0, -1.0,
-1.0, -1.0, -1.0,
1.0,  1.0, -1.0,
-1.0, -1.0, -1.0,
-1.0,  1.0, -1.0,
];
const positionBuffer=gl.createBuffer();
打印错误(总账,“创建位置缓冲”);
gl.bindBuffer(gl.ARRAY\u BUFFER,positionBuffer);
打印错误(gl,“位置已绑定”);
总账缓冲数据(总账数组缓冲区、新Float32Array(位置)、总账静态绘图);
打印错误(总帐,“位置缓冲区已填充”);
常数指数=[
0, 1, 2,
3, 4, 5,
6, 7, 8,
9, 10, 11,
12, 13, 14,
15, 16, 17,
18, 19, 20,
21, 22, 23,
24, 25, 26,
27, 28, 29,
30, 31, 32,
33, 34, 35,
];
var indexBuffer=gl.createBuffer();
打印错误(gl,“创建索引缓冲区”);
gl.bindBuffer(gl.ELEMENT\u ARRAY\u BUFFER,indexBuffer);
打印错误(gl,“索引缓冲区绑定”);
总账缓冲数据(总账元素数组缓冲区、新UINT16数组(索引)、总账静态绘图);
打印错误(总帐,“索引缓冲区已填充”);
返回{
指数:indexBuffer,
位置:positionBuffer,
};
}
// ================================================================================================
功能设置场景(gl)
{
const fieldOfView=45*Math.PI/180;//以弧度为单位
const aspect=gl.canvas.clientWidth/gl.canvas.clientHeight;
常数zNear=0.1;
常数zFar=100.0;
projMatrix=mat4.create();
//注意:glmatrix.js始终具有第一个参数
//作为接收结果的目的地。
mat4.透视图(projMatrix,
视野,
方面,,
zNear,
zFar);
modelViewMatrix=mat4.create();
常数vNumComponents=3;
const vType=gl.FLOAT;
const vNormalize=false;
常数vStride=0;
常数vOffset=0;
gl.bindBuffer(gl.ARRAY\u BUFFER,buffers.position);
打印错误(总账,“绑定位置缓冲”);
gl.VertexAttribute指针(
programInfo.attribLocations.VertExpositions,
Vnum组件,
vType,
vNormalize,