GLES3.0中文API-glDrawArraysInstanced

名称

glDrawArraysInstanced — 绘制一系列元素的多个实例

C 规范

void glDrawArraysInstanced( GLenum mode,
GLint first,
GLsizei count,
GLsizei primcount);

参数

mode
指定要渲染的原语类型。 接受符号常量GL_POINTS,GL_LINE_STRIP,GL_LINE_LOOP,GL_LINES,GL_TRIANGLE_STRIP,GL_TRIANGLE_FAN和GL_TRIANGLES。

first
指定启用的数组中的起始索引。

count
指定要呈现的索引数。

primcount
指定要呈现的指定索引范围的实例数。

描述

glDrawArraysInstanced的行为与glDrawArrays相同,只是执行了元素范围的primcount实例。具有除数N(其中N不为零)(由glVertexAttribDivisor指定)的那些属性每N个实例前进一次。因此,从实例顶点属性传输的元素由下式给出:

实例除数
顶点着色器可以将实例的值读取为gl_InstanceID。

要启用和禁用通用顶点属性数组,请调用glEnableVertexAttribArray和glDisableVertexAttribArray。

如果未启用与顶点着色器所需的通用属性相对应的数组,则将从当前的通用属性状态获取相应的元素。

错误

如果mode不是可接受的值之一,则生成GL_INVALID_ENUM。

如果count或primcount为负,则生成GL_INVALID_VALUE。

如果将非零缓冲区对象名称绑定到已启用的数组,并且当前已映射缓冲区对象的数据存储,则将生成GL_INVALID_OPERATION。

如果当前绑定的帧缓冲区未完成帧缓冲区(即glCheckFramebufferStatus的返回值不是GL_FRAMEBUFFER_COMPLETE),则会生成GL_INVALID_FRAMEBUFFER_OPERATION。

如果将图元的顶点记录到用于转换反馈目的的缓冲区对象中会导致超出任何缓冲区对象大小的限制,或者超出由glBindBufferRange设置的结束位置偏移+大小-1,则生成GL_INVALID_OPERATION。

API支持版本

函数名 2.0 3.0
glDrawArraysInstanced -

另见

glCheckFramebufferStatus, glDisableVertexAttribArray, glDrawArrays, glDrawElements, glDrawElementsInstanced, glEnableVertexAttribArray , glVertexAttribDivisor

版权

https://blog.csdn.net/MSK1111/article/details/102865164
Copyright © 2010-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.

发布了215 篇原创文章 · 获赞 0 · 访问量 765

猜你喜欢

转载自blog.csdn.net/MSK1111/article/details/103083263