diff --git a/build.gradle b/build.gradle index a6ed0c32..1ba2316c 100644 --- a/build.gradle +++ b/build.gradle @@ -14,7 +14,7 @@ buildscript { apply plugin: 'org.jetbrains.dokka' project.ext { - openrndrVersion = "0.3.43-rc.5" + openrndrVersion = "0.3.43-rc.11" kotlinVersion = "1.3.72" spekVersion = "2.0.10" libfreenectVersion = "0.5.7-1.5.3" diff --git a/openrndr-demos/build.gradle b/openrndr-demos/build.gradle index 29760956..117847ee 100644 --- a/openrndr-demos/build.gradle +++ b/openrndr-demos/build.gradle @@ -13,9 +13,12 @@ def boofcvVersion = "0.34" dependencies { demoImplementation(project(":orx-mesh-generators")) demoImplementation(project(":orx-camera")) + demoImplementation(project(":orx-parameters")) demoImplementation("org.openrndr:openrndr-core:$openrndrVersion") demoImplementation("org.openrndr:openrndr-extensions:$openrndrVersion") + demoImplementation("org.openrndr:openrndr-ffmpeg:$openrndrVersion") + demoRuntimeOnly("org.openrndr:openrndr-ffmpeg-natives-$openrndrOS:$openrndrVersion") demoRuntimeOnly("org.openrndr:openrndr-gl3:$openrndrVersion") demoRuntimeOnly("org.openrndr:openrndr-gl3-natives-$openrndrOS:$openrndrVersion") demoImplementation(sourceSets.getByName("main").output) diff --git a/openrndr-demos/src/demo/kotlin/DemoScreenCapture01.kt b/openrndr-demos/src/demo/kotlin/DemoScreenCapture01.kt new file mode 100644 index 00000000..f0cb671e --- /dev/null +++ b/openrndr-demos/src/demo/kotlin/DemoScreenCapture01.kt @@ -0,0 +1,44 @@ +import org.openrndr.application +import org.openrndr.color.ColorRGBa +import org.openrndr.draw.DepthTestPass +import org.openrndr.draw.DrawPrimitive +import org.openrndr.draw.isolated +import org.openrndr.draw.shadeStyle +import org.openrndr.extras.meshgenerators.boxMesh +import org.openrndr.ffmpeg.VideoPlayerFFMPEG +import org.openrndr.math.Vector3 + +fun main() { + application { + program { + val cube = boxMesh() + val screen = VideoPlayerFFMPEG.fromScreen( + frameRate = 15.0, + imageWidth = 300, + imageHeight = 300 + ) + + screen.play() + extend { + screen.draw(drawer, true) // update the screen grabber + drawer.isolated { + clear(ColorRGBa.WHITE) + perspective(60.0, width * 1.0 / height, 0.01, 1000.0) + depthWrite = true + depthTestPass = DepthTestPass.LESS_OR_EQUAL + shadeStyle = shadeStyle { + fragmentTransform = "x_fill = texture(p_tex, vec2(1.0-va_texCoord0.x, va_texCoord0.y));" + screen.colorBuffer?.run { + parameter("tex", this) + } + } + rotate(Vector3.UNIT_Z, 90.0) + translate(0.0, 0.0, -120.0) + rotate(Vector3.UNIT_X, seconds * 10) + scale(90.0) + vertexBuffer(cube, DrawPrimitive.TRIANGLES) + } + } + } + } +}