WebGLRenderingContext.enableVertexAttribArray()
文章推薦指數: 80 %
我们用 enableVertexAttribArray() 函数来激活 aVertexPosition 中记录的索引位置,以便在后面对该顶点属性进行数据绑定。
使用 vertexAttribPointer() 将 ...
SkiptomaincontentSkiptosearchSkiptoselectlanguageWeb开发技术WebAPI接口参考WebGLRenderingContextWebGLRenderingContext.enableVertexAttribArray()ArticleActions中文(简体)此页面由社区从英文翻译而来。
了解更多并加入MDNWebDocs社区。
语法例子SpecificationsBrowsercompatibilitySeealsoRelatedTopicsWebGLAPIWebGLRenderingContext属性canvasdrawingBufferHeightdrawingBufferWidth方法activeTexture()attachShader()bindAttribLocation()bindBuffer()bindFramebuffer()bindRenderbuffer()bindTexture()blendColor()blendEquation()blendEquationSeparate()blendFunc()blendFuncSeparate()(en-US)bufferData()bufferSubData()(en-US)checkFramebufferStatus()(en-US)clear()clearColor()clearDepth()clearStencil()(en-US)colorMask()(en-US)
Experimental
commit()compileShader()compressedTexImage[23]D()compressedTexSubImage2D()(en-US)copyTexImage2D()(en-US)copyTexSubImage2D()(en-US)createBuffer()createFramebuffer()createProgram()createRenderbuffer()createShader()createTexture()cullFace()deleteBuffer()deleteFramebuffer()deleteProgram()deleteRenderbuffer()deleteShader()deleteTexture()depthFunc()depthMask()depthRange()(en-US)detachShader()disable()disableVertexAttribArray()(en-US)drawArrays()drawElements()enable()enableVertexAttribArray()finish()(en-US)flush()(en-US)framebufferRenderbuffer()(en-US)framebufferTexture2D()(en-US)frontFace()(en-US)generateMipmap()(en-US)getActiveAttrib()(en-US)getActiveUniform()(en-US)getAttachedShaders()(en-US)getAttribLocation()getBufferParameter()(en-US)getContextAttributes()getError()(en-US)getExtension()getFramebufferAttachmentParameter()(en-US)getParameter()getProgramInfoLog()getProgramParameter()getRenderbufferParameter()(en-US)getShaderInfoLog()(en-US)getShaderParameter()getShaderPrecisionFormat()(en-US)getShaderSource()getSupportedExtensions()getTexParameter()getUniform()getUniformLocation()(en-US)getVertexAttrib()(en-US)getVertexAttribOffset()(en-US)hint()(en-US)isBuffer()isContextLost()isEnabled()isFramebuffer()(en-US)isProgram()isRenderbuffer()(en-US)isShader()isTexture()(en-US)lineWidth()(en-US)linkProgram()makeXRCompatible()(en-US)pixelStorei()polygonOffset()readPixels()(en-US)renderbufferStorage()sampleCoverage()(en-US)scissor()shaderSource()stencilFunc()(en-US)stencilFuncSeparate()(en-US)stencilMask()(en-US)stencilMaskSeparate()(en-US)stencilOp()(en-US)stencilOpSeparate()(en-US)texImage2D()texParameter[fi]()texSubImage2D()(en-US)uniform[1234][fi][v]()uniformMatrix[234]fv()useProgram()validateProgram()vertexAttrib[1234]f[v]()vertexAttribPointer()viewport()RelatedpagesforWebGLANGLE_instanced_arraysEXT_blend_minmax(en-US)EXT_color_buffer_half_float(en-US)EXT_disjoint_timer_query(en-US)EXT_frag_depth(en-US)EXT_sRGB(en-US)EXT_shader_texture_lod(en-US)EXT_texture_filter_anisotropic(en-US)OES_element_index_uint(en-US)OES_standard_derivatives(en-US)OES_texture_float(en-US)OES_texture_float_linear(en-US)OES_texture_half_float(en-US)OES_texture_half_float_linear(en-US)OES_vertex_array_objectWEBGL_color_buffer_float(en-US)WEBGL_compressed_texture_etc1(en-US)WEBGL_compressed_texture_pvrtc(en-US)WEBGL_compressed_texture_s3tc(en-US)WEBGL_compressed_texture_s3tc_srgb(en-US)WEBGL_debug_renderer_info(en-US)WEBGL_debug_shaders(en-US)WEBGL_depth_texture(en-US)WEBGL_draw_buffers(en-US)WEBGL_lose_contextWebGL2RenderingContextWebGLActiveInfoWebGLBufferWebGLContextEventWebGLFramebufferWebGLObjectWebGLProgramWebGLQueryWebGLRenderbufferWebGLSamplerWebGLShaderWebGLShaderPrecisionFormatWebGLSyncWebGLTextureWebGLTransformFeedback(en-US)WebGLUniformLocationWebGLVertexArrayObject语法例子SpecificationsBrowsercompatibilitySeealsoWebGLRenderingContext.enableVertexAttribArray()
在WebGLAPI中,使用WebGLRenderingContext中的enableVertexAttribArray() 方法,可以打开属性数组列表中指定索引处的通用顶点属性数组。
你可以通过以下方法关闭顶点属性数组 disableVertexAttribArray()(en-US).
在WebGL中,作用于顶点的数据会先储存在attributes。
这些数据仅对JavaScript代码和顶点着色器可用。
属性由索引号引用到GPU维护的属性列表中。
在不同的平台或GPU上,某些顶点属性索引可能具有预定义的值。
创建属性时,WebGL层会分配其他属性。
无论怎样,都需要你使用enableVertexAttribArray()方法,来激活每一个属性以便使用,不被激活的属性是不会被使用的。
一旦激活,以下其他方法就可以获取到属性的值了,包括vertexAttribPointer(),vertexAttrib*(),和 getVertexAttrib()(en-US)。
语法voidgl.enableVertexAttribArray(index);
参数index
类型为GLuint(en-US)的索引,指向要激活的顶点属性。
如果您只知道属性的名称,不知道索引,您可以使用以下方法来获取索引getAttribLocation().
返回值undefined.错误您可以使用getError()(en-US)方法,来检查使用enableVertexAttribArray()时发生的错误。
WebGLRenderingContext.INVALID_VALUE
非法的index 。
一般是index 大于或等于了顶点属性列表允许的最大值。
该值可以通过WebGLRenderingContext.MAX_VERTEX_ATTRIBS获取。
例子该例子是Abasic2DWebGLanimationexample中的一部分,用以说明enableVertexArray() 是如何激活顶点属性,并将顶点数据传输到shader函数的。
gl.bindBuffer(gl.ARRAY_BUFFER,vertexBuffer);
aVertexPosition=
gl.getAttribLocation(shaderProgram,"aVertexPosition");
gl.enableVertexAttribArray(aVertexPosition);
gl.vertexAttribPointer(aVertexPosition,vertexNumComponents,
gl.FLOAT,false,0,0);
gl.drawArrays(gl.TRIANGLES,0,vertexCount);
该段代码来自于 "Abasic2DWebGLanimationexample."中的 thefunctionanimateScene() 。
通过连接来查看全文,您可以查看产生的动画效果。
以上代码中,使用了bindBuffer()来设置将用于绘图的顶点数据的缓存。
然后使用getAttribLocation()来获取顶点数据在shader函数中的索引。
我们用enableVertexAttribArray() 函数来激活aVertexPosition中记录的索引位置,以便在后面对该顶点属性进行数据绑定。
使用vertexAttribPointer()将缓存数据绑定到shader函数中的顶点属性。
于是,我们可以通过drawArrays()函数将顶点一一绘制。
Specifications
Specification
Status
Comment
WebGL1.0enableVertexAttribArray
Recommendation
Initialdefinition.
OpenGLES2.0glEnableVertexAttribArray
Standard
ManpageoftheOpenGLAPI.
BrowsercompatibilityBCDtablesonlyloadinthebrowserSeealso
DatainWebGL
Adding2DcontenttoaWebGLcontext
Abasic2DWebGLanimationsample
disableVertexAttribArray()(en-US)
Foundaproblemwiththispage?EditonGitHubSourceonGitHubReportaproblemwiththiscontentonGitHubWanttofixtheproblemyourself?SeeourContributionguide.Lastmodified:2022年6月2日,byMDNcontributors
延伸文章資訊
- 1OpenGL.EnableVertexAttribArray C# (CSharp) Code Examples ...
EnableVertexAttribArray - 1 examples found. These are the top rated real world C# (CSharp) ... En...
- 2WebGLRenderingContext.enableVertexAttribArray()
我们用 enableVertexAttribArray() 函数来激活 aVertexPosition 中记录的索引位置,以便在后面对该顶点属性进行数据绑定。 使用 vertexAttribPo...
- 3GL.EnableVertexAttribArray Method (OpenTK.Graphics.ES20)
Learn more about the OpenTK.Graphics.ES20.GL.EnableVertexAttribArray in the OpenTK.Graphics.ES20 ...
- 4enableVertexAttribArray method - dart:web_gl library - Dart
API docs for the enableVertexAttribArray method from the RenderingContext2 class, for the Dart pr...
- 5[Day5] WebGL 修羅道(2) - 資料傳遞 - iT 邦幫忙
enableVertexAttribArray(points); gl.vertexAttrib1f(size, 100.0); var color = gl.getUniformLocatio...