提交 4b6e3d77 编写于 作者: M Mr.doob

Added WebGLIndexedBufferRenderer

上级 1dde6f6a
/**
* @author mrdoob / http://mrdoob.com/
*/
THREE.WebGLIndexedBufferRenderer = function ( _gl, extensions, _infoRender ) {
var mode;
function setMode( value ) {
mode = value;
}
var type, size;
function setIndex( index ) {
if ( index.array instanceof Uint32Array && extensions.get( 'OES_element_index_uint' ) ) {
type = _gl.UNSIGNED_INT;
size = 4;
} else {
type = _gl.UNSIGNED_SHORT;
size = 2;
}
}
function render( start, count ) {
_gl.drawElements( mode, count, type, start * size );
_infoRender.calls ++;
_infoRender.vertices += count;
if ( mode === _gl.TRIANGLES ) _infoRender.faces += count / 3;
}
function renderGroups( groups ) {
for ( var i = 0, il = groups.length; i < il; i ++ ) {
var group = groups[ i ];
render( group.start, group.count );
}
}
function renderInstances( geometry ) {
var extension = extensions.get( 'ANGLE_instanced_arrays' );
if ( extension === null ) {
console.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );
return;
}
var index = geometry.attributes.index;
extension.drawElementsInstancedANGLE( mode, index.array.length, type, 0, geometry.maxInstancedCount );
}
this.setMode = setMode;
this.setIndex = setIndex;
this.render = render;
this.renderGroups = renderGroups;
this.renderInstances = renderInstances;
};
......@@ -158,6 +158,7 @@
"src/renderers/WebGLRenderTarget.js",
"src/renderers/WebGLRenderTargetCube.js",
"src/renderers/webgl/WebGLBufferRenderer.js",
"src/renderers/webgl/WebGLIndexedBufferRenderer.js",
"src/renderers/webgl/WebGLExtensions.js",
"src/renderers/webgl/WebGLGeometries.js",
"src/renderers/webgl/WebGLObjects.js",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册