Made entire pipeline class based.

This commit is contained in:
2021-09-26 01:45:07 -07:00
parent 00ea49ed74
commit ef021aa200
8 changed files with 145 additions and 46 deletions

32
ts/display/Camera.ts Normal file
View File

@ -0,0 +1,32 @@
export class Camera {
public _camera:CCamera;
constructor() {
this._camera = cameraCreate();
}
public lookAt(x:number, y:number, z:number, lx:number, ly:number, lz:number) {
cameraLookAt(this._camera, x, y, z, lx, ly, lz);
}
public look(
x:number, y:number, z:number, pitch:number, yaw:number, roll:number
) {
cameraLook(this._camera, x, y, z, pitch, yaw, roll);
}
public perspective(fov:number, aspect:number, near:number, far:number) {
cameraPerspective(this._camera, fov, aspect, near, far);
}
public ortho(
left:number, right:number, bottom:number, top:number,
near:number, far:number
) {
cameraOrtho(this._camera, left, right, bottom, top, near, far);
}
public dispose() {
cameraDispose(this._camera);
}
}

15
ts/display/Primitive.ts Normal file
View File

@ -0,0 +1,15 @@
export class Primitive {
public _primitive:CPrimitive;
public constructor() {
this._primitive = primitiveCreate();
}
draw(start:number=0, count:number=-1) {
primitiveDraw(this._primitive, start, count);
}
public dispose() {
primitiveDispose(this._primitive);
}
}

11
ts/display/Quad.ts Normal file
View File

@ -0,0 +1,11 @@
import { Primitive } from "./Primitive";
export class Quad extends Primitive {
constructor(z:number = 0,
x0:number = -1, y0:number = -1, u0:number = 0, v0:number = 0,
x1:number = 1, y1:number = 1, u1:number = 1, v1:number = 1
) {
super();
quadInit(this._primitive, z, x0, y0, u0, v0, x1, y1, u1, v1);
}
}

39
ts/display/Shader.ts Normal file
View File

@ -0,0 +1,39 @@
import { Camera } from "./Camera";
export class Shader {
public _shader:CShader;
constructor() {
this._shader = shaderCreate();
}
public use() {
shaderUse(this._shader);
}
public setCamera(camera:Camera) {
shaderUseCamera(this._shader, camera._camera);
}
public setPosition(
x:number, y:number, z:number, pitch:number, yaw:number, roll:number
) {
shaderUsePosition(this._shader, x,y,z, pitch,yaw,roll);
}
public setPositionAndScale(
x:number, y:number, z:number,
pitch:number, yaw:number, roll:number,
sx:number, sy:number, sz:number
) {
shaderUsePositionAndScale(this._shader, x,y,z, pitch,yaw,roll, sx,sy,sz);
}
public setTexture(texture:CTexture) {
shaderUseTexture(this._shader, texture);
}
public dispose() {
shaderDispose(this._shader);
}
}