Add more improvements

This commit is contained in:
schmelczerandras 2020-09-16 14:45:08 +02:00
parent e1c74a8054
commit bc16bdd62e
29 changed files with 288 additions and 160 deletions

View file

@ -1,8 +1,8 @@
import { FrameBuffer } from './frame-buffer';
export class DefaultFrameBuffer extends FrameBuffer {
constructor(gl: WebGL2RenderingContext) {
super(gl);
constructor(gl: WebGL2RenderingContext, enableHighDpiRendering: boolean) {
super(gl, enableHighDpiRendering);
this.frameBuffer = null;
this.setSize();
}

View file

@ -1,16 +1,17 @@
import { vec2 } from 'gl-matrix';
import { settings } from '../../settings';
export abstract class FrameBuffer {
public renderScale = 1;
public enableHighDpiRendering = settings.enableHighDpiRendering;
protected size = vec2.create();
// null means the default framebuffer
protected frameBuffer: WebGLFramebuffer | null = null;
constructor(protected gl: WebGL2RenderingContext) {}
constructor(
protected gl: WebGL2RenderingContext,
private enableHighDpiRendering: boolean
) {}
public bindAndClear(colorInput?: WebGLTexture) {
this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, this.frameBuffer);

View file

@ -5,8 +5,8 @@ export class IntermediateFrameBuffer extends FrameBuffer {
private frameTexture: WebGLTexture;
private floatLinearEnabled = false;
constructor(gl: WebGL2RenderingContext) {
super(gl);
constructor(gl: WebGL2RenderingContext, enableHighDpiRendering: boolean) {
super(gl, enableHighDpiRendering);
enableExtension(gl, 'EXT_color_buffer_float');
@ -17,18 +17,12 @@ export class IntermediateFrameBuffer extends FrameBuffer {
// it's okay
}
const texture = this.gl.createTexture();
if (!texture) {
throw new Error('Could not create texture');
}
this.frameTexture = texture;
// can only return null on lost context
this.frameTexture = this.gl.createTexture()!;
this.configureTexture();
const frameBuffer = this.gl.createFramebuffer();
if (!frameBuffer) {
throw new Error('Could not create frame buffer');
}
this.frameBuffer = frameBuffer;
// can only return null on lost context
this.frameBuffer = this.gl.createFramebuffer()!;
this.configureFrameBuffer();
this.setSize();