[orx-camera] Add demo with content not affected by the camera
This commit is contained in:
63
orx-camera/src/jvmDemo/kotlin/DemoCamera2D02.kt
Normal file
63
orx-camera/src/jvmDemo/kotlin/DemoCamera2D02.kt
Normal file
@@ -0,0 +1,63 @@
|
||||
import org.openrndr.application
|
||||
import org.openrndr.color.ColorRGBa
|
||||
import org.openrndr.draw.isolatedWithTarget
|
||||
import org.openrndr.draw.loadFont
|
||||
import org.openrndr.draw.renderTarget
|
||||
import org.openrndr.extra.camera.Camera2D
|
||||
import org.openrndr.math.Vector2
|
||||
import org.openrndr.math.transforms.transform
|
||||
import org.openrndr.shape.Rectangle
|
||||
import kotlin.math.sin
|
||||
|
||||
/**
|
||||
* # Camera2D demo with static elements
|
||||
*
|
||||
* An approach for having certain elements not affected by the camera
|
||||
*/
|
||||
fun main() = application {
|
||||
program {
|
||||
// Create a renderTarget where to draw things. It will be controlled by the camera.
|
||||
val rt = renderTarget(width, height) {
|
||||
colorBuffer()
|
||||
depthBuffer()
|
||||
}
|
||||
// Create camera and apply an initial transformation
|
||||
// so the origin is no longer in the top left corner.
|
||||
val cam = Camera2D()
|
||||
cam.view *= transform {
|
||||
translate(width * 0.5, height * 1.0)
|
||||
rotate(45.0)
|
||||
scale(2.0)
|
||||
}
|
||||
|
||||
// Add mouse listeners to the camera
|
||||
cam.setup(this)
|
||||
|
||||
val font = loadFont("demo-data/fonts/IBMPlexMono-Regular.ttf", 50.0)
|
||||
|
||||
extend {
|
||||
// Draw onto the renderTarget
|
||||
drawer.isolatedWithTarget(rt) {
|
||||
// Calling ortho required if the size differs from the window size
|
||||
ortho(rt)
|
||||
// Apply the current camera transformation
|
||||
view = cam.view
|
||||
// Clear render target
|
||||
clear(ColorRGBa.TRANSPARENT)
|
||||
// Draw the things affected by the camera (here a rectangle at the origin)
|
||||
rectangle(Rectangle.fromCenter(Vector2.ZERO, 200.0, 100.0 + sin(seconds) * 20.0))
|
||||
}
|
||||
|
||||
drawer.clear(ColorRGBa.PINK)
|
||||
|
||||
// Draw the renderTarget with the camera applied to it
|
||||
drawer.image(rt.colorBuffer(0))
|
||||
|
||||
// Draw things not affected by the camera
|
||||
drawer.fontMap = font
|
||||
drawer.fill = ColorRGBa.PINK.shade(0.5)
|
||||
drawer.text("click and drag mouse", 50.0, 400.0)
|
||||
drawer.text("use mouse wheel", 50.0, 450.0)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user