Added orx-no-clear

This commit is contained in:
edwin
2018-11-06 15:44:49 +01:00
parent 07598fdbbe
commit 7cec4bddc8
6 changed files with 495 additions and 429 deletions

View File

@@ -2,10 +2,10 @@
A growing library of assorted data structures, algorithms and utilities.
- orx-kdtree, a kd-tree implementation for fast nearest point searches
- orx-jumpflood, a filter/shader based implementation of the jump flood algorithm for finding fast approximate (directional) distance fields
- orx-integral-image, a CPU-based implementation for integral images (summed area tables)
- `orx-integral-image`, a CPU-based implementation for integral images (summed area tables)
- `orx-jumpflood`, a filter/shader based implementation of the jump flood algorithm for finding fast approximate (directional) distance fields
- `orx-kdtree`, a kd-tree implementation for fast nearest point searches
- `orx-no-clear`, a simple extension that provides drawing without clearing the background
## Usage
ORX is build against OPENRNDR 0.3.28, make sure you use this version in your project.
@@ -22,6 +22,6 @@ repositories {
Add dependency:
```
dependencies {
compile 'com.github.openrndr.orx:<orx-artifact>:v0.0.8'
compile 'com.github.openrndr.orx:<orx-artifact>:v0.0.9'
}
```

View File

@@ -4,7 +4,7 @@ plugins {
allprojects {
group 'org.openrndr.extra'
version '0.0.8'
version '0.0.9'
}
repositories {
@@ -15,7 +15,6 @@ ext {
openrndrVersion = "0.3.28"
}
subprojects {
apply plugin: 'kotlin'
@@ -31,7 +30,7 @@ subprojects {
dependencies {
compile "org.openrndr:openrndr-core:$openrndrVersion"
compile "org.openrndr:openrndr-filter:$openrndrVersion"
compile group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: '0.27.0'
compile group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: '1.0.0'
}
}

View File

@@ -1,15 +1,14 @@
package org.openrndr.extra.kdtree
import kotlinx.coroutines.experimental.CoroutineScope
import kotlinx.coroutines.experimental.GlobalScope
import kotlinx.coroutines.experimental.launch
import kotlinx.coroutines.experimental.runBlocking
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import org.openrndr.math.IntVector2
import org.openrndr.math.Vector2
import org.openrndr.math.Vector3
import org.openrndr.math.Vector4
import java.util.*
import java.util.concurrent.atomic.AtomicInteger
import kotlin.IllegalStateException
/** built-in mapper for [Vector2] */

21
orx-no-clear/README.md Normal file
View File

@@ -0,0 +1,21 @@
# orx-no-clear
A simple OPENRNDR Extension that provides the classical drawing-without-clearing-the-screen functionality that
OPENRNDR does not support natively.
#### Usage
```
class NoClearProgram: Program() {
override fun setup() {
backgroundColor = ColorRGBa.PINK
extend(NoClear())
}
override fun draw() {
drawer.circle(Math.cos(seconds) * width / 2.0 + width / 2.0, Math.sin(seconds * 0.24) * height / 2.0 + height / 2.0, 20.0)
}
}
```

View File

@@ -0,0 +1,45 @@
import org.openrndr.Extension
import org.openrndr.Program
import org.openrndr.color.ColorRGBa
import org.openrndr.draw.Drawer
import org.openrndr.draw.RenderTarget
import org.openrndr.draw.isolated
import org.openrndr.draw.renderTarget
class NoClear : Extension {
override var enabled: Boolean = true
private var renderTarget: RenderTarget? = null
override fun beforeDraw(drawer: Drawer, program: Program) {
if (renderTarget == null || renderTarget?.width != program.width || renderTarget?.height != program.height) {
renderTarget?.let {
it.colorBuffer(0).destroy()
it.detachColorBuffers()
it.destroy()
}
renderTarget = renderTarget(program.width, program.height) {
colorBuffer()
depthBuffer()
}
renderTarget?.let {
drawer.withTarget(it) {
background(program.backgroundColor ?: ColorRGBa.TRANSPARENT)
}
}
}
renderTarget?.bind()
}
override fun afterDraw(drawer: Drawer, program: Program) {
renderTarget?.unbind()
renderTarget?.let {
drawer.isolated {
drawer.ortho()
drawer.image(it.colorBuffer(0))
}
}
}
}

View File

@@ -1,5 +1,7 @@
rootProject.name = 'orx'
include 'orx-jumpflood',
include 'orx-integral-image',
'orx-jumpflood',
'orx-kdtree',
'orx-integral-image'
'orx-no-clear'