drawBuffers method
void
drawBuffers(
- RenderTarget? renderTarget,
- Framebuffer? framebuffer
)
Implementation
void drawBuffers(RenderTarget? renderTarget, Framebuffer? framebuffer) {
List? drawBuffers = defaultDrawbuffers;
bool needsUpdate = false;
if (renderTarget != null) {
drawBuffers = currentDrawbuffers.get(framebuffer);
if (drawBuffers == null) {
drawBuffers = [];
currentDrawbuffers.set(framebuffer, drawBuffers);
}
final textures = renderTarget.textures;
if (drawBuffers.length != textures.length || (drawBuffers.isNotEmpty && drawBuffers[0] != WebGL.COLOR_ATTACHMENT0)) {
for (int i = 0, il = textures.length; i < il; i++) {
if(drawBuffers.length <= i){
drawBuffers.add(WebGL.COLOR_ATTACHMENT0 + i);
}else{
drawBuffers[i] = WebGL.COLOR_ATTACHMENT0 + i;
}
}
drawBuffers.length = textures.length;
needsUpdate = true;
}
}
else {
if (drawBuffers.isEmpty || drawBuffers[0] != WebGL.BACK) {
if (drawBuffers.isEmpty) {
drawBuffers.add(WebGL.BACK);
} else {
drawBuffers[0] = WebGL.BACK;
}
drawBuffers.length = 1;
needsUpdate = true;
}
}
if (needsUpdate) {
Uint32Array buf = Uint32Array.fromList(List<int>.from(drawBuffers));
gl.drawBuffers(buf);
buf.dispose();
}
}