Add more improvements
This commit is contained in:
parent
e1c74a8054
commit
bc16bdd62e
29 changed files with 288 additions and 160 deletions
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue