init dump
This commit is contained in:
134
Sources/JolkEngine/Renderer/Renderer.swift
Normal file
134
Sources/JolkEngine/Renderer/Renderer.swift
Normal file
@ -0,0 +1,134 @@
|
||||
import Foundation
|
||||
import OpenGL.GL
|
||||
|
||||
|
||||
public protocol Renderer
|
||||
{
|
||||
func create(sdlWindow: OpaquePointer) throws
|
||||
func delete()
|
||||
|
||||
func newFrame()
|
||||
func resize(width: Int32, height: Int32)
|
||||
|
||||
var clearColour: Colour { get set }
|
||||
|
||||
func setVsync(mode: VSyncMode) throws
|
||||
|
||||
func createMesh(mesh: Mesh) throws -> RenderMesh
|
||||
func createTexture(data: UnsafeRawPointer, width: Int, height: Int) throws -> RenderTexture2D
|
||||
func createTexture(data: UnsafeRawPointer, width: Int, height: Int,
|
||||
filter: FilterMode, mipMode: MipMode) throws -> RenderTexture2D
|
||||
|
||||
func deleteMesh(_ mesh: RenderMesh)
|
||||
func deleteTexture(_ texture: RenderTexture2D)
|
||||
|
||||
func setProjection(matrix: Mat4f)
|
||||
func setView(matrix: Mat4f)
|
||||
|
||||
func setMaterial(_ mat: Material)
|
||||
|
||||
func draw(mesh: RenderMesh, model: Mat4f, environment: Environment)
|
||||
func draw(mesh: RenderMesh, environment: Environment)
|
||||
|
||||
func drawGizmos(lines: [Line])
|
||||
}
|
||||
|
||||
public enum RendererError: Error
|
||||
{
|
||||
case sdlError(message: String)
|
||||
}
|
||||
|
||||
public enum VSyncMode
|
||||
{
|
||||
case off
|
||||
case on
|
||||
case adaptive
|
||||
}
|
||||
|
||||
public enum FilterMode
|
||||
{
|
||||
case point
|
||||
case linear
|
||||
}
|
||||
|
||||
public enum MipMode
|
||||
{
|
||||
case off
|
||||
case nearest
|
||||
case linear
|
||||
}
|
||||
|
||||
public enum WrapMode
|
||||
{
|
||||
case clamping
|
||||
case clampBorder
|
||||
case clampEdge
|
||||
case mirrored
|
||||
case repeating
|
||||
}
|
||||
|
||||
public protocol RendererResource
|
||||
{
|
||||
associatedtype T: Resource
|
||||
|
||||
static var empty: Self { get }
|
||||
|
||||
var isValid: Bool { get }
|
||||
}
|
||||
|
||||
public struct RenderMesh: RendererResource
|
||||
{
|
||||
public typealias T = Mesh
|
||||
|
||||
public static var empty: RenderMesh { .init() }
|
||||
|
||||
public var isValid: Bool { _valid }
|
||||
|
||||
private let _valid: Bool;
|
||||
let vboHnd: Int, iboHnd: Int
|
||||
let subMeshes: [Mesh.SubMesh]
|
||||
|
||||
private init()
|
||||
{
|
||||
self._valid = false
|
||||
self.vboHnd = 0
|
||||
self.iboHnd = 0
|
||||
self.subMeshes = []
|
||||
}
|
||||
|
||||
init(vbo: Int, ibo: Int, subMeshes: [Mesh.SubMesh])
|
||||
{
|
||||
self._valid = true
|
||||
self.vboHnd = vbo
|
||||
self.iboHnd = ibo
|
||||
self.subMeshes = subMeshes
|
||||
}
|
||||
}
|
||||
|
||||
public struct RenderTexture2D: RendererResource
|
||||
{
|
||||
public typealias T = Texture2D
|
||||
|
||||
public static var empty: Self { .init(0) }
|
||||
|
||||
public var isValid: Bool { id != 0 }
|
||||
|
||||
let id: UInt32
|
||||
|
||||
init(_ id: UInt32)
|
||||
{
|
||||
self.id = id
|
||||
}
|
||||
}
|
||||
|
||||
public struct Line
|
||||
{
|
||||
let from: Vec3f, to: Vec3f, colour: Colour
|
||||
|
||||
public init(from: Vec3f, to: Vec3f, colour: Colour)
|
||||
{
|
||||
self.from = from
|
||||
self.to = to
|
||||
self.colour = colour
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user