Some checks failed
Build and Deploy / package-dist (push) Has been cancelled
Build and Deploy / deploy-itch (push) Has been cancelled
Build and Deploy / deploy-gitea (push) Has been cancelled
Build and Deploy / build-windows (CLANG64) (push) Has been cancelled
Build and Deploy / build-linux (push) Has been cancelled
61 lines
1.1 KiB
JavaScript
61 lines
1.1 KiB
JavaScript
var render = {}
|
|
|
|
var context
|
|
|
|
render.initialize = function(config)
|
|
{
|
|
prosperon.window = prosperon.engine_start(config)
|
|
context = prosperon.window.make_renderer()
|
|
}
|
|
|
|
// img here is the engine surface
|
|
render.load_texture(img)
|
|
{
|
|
if (!img.surface)
|
|
throw new Error('Image must have a surface.')
|
|
|
|
if (img.texture)
|
|
throw new Error('Image has already been uploaded to GPU.')
|
|
|
|
img.texture = context.load_texture(img.surface)
|
|
}
|
|
|
|
var current_color = Color.white
|
|
|
|
render.queue = function(cmd)
|
|
{
|
|
if (cmd.color && cmd.color != current_color) {
|
|
current_color = cmd.color
|
|
context.draw_color(current_color)
|
|
}
|
|
|
|
switch(cmd.type) {
|
|
case "geometry":
|
|
context.geometry(cmd.texture, cmd.mesh)
|
|
break;
|
|
|
|
case "hardware_line":
|
|
context.line(cmd.points, cmd.color)
|
|
break;
|
|
|
|
case "hardware_point":
|
|
context.points(cmd.points, cmd.color)
|
|
break;
|
|
|
|
case "scissor":
|
|
context.clip(cmd.rect)
|
|
break;
|
|
|
|
case "viewport":
|
|
context.viewport(cmd.rect)
|
|
break;
|
|
}
|
|
}
|
|
|
|
render.get_image = function(rect)
|
|
{
|
|
return context.get_image(rect)
|
|
}
|
|
|
|
return render
|