This new sample differs from "Hello Camera" in that it exercises all three ways of using Stream. It also uses Canvas instead of Camera2 to draw into the external texture. It shows two sets of stripes, one animated using the shader and the other animated using Canvas. If the two stripes are aligned, then the stream is perfectly synchronized. Users can tap the screen to cycle between the three modes.
109 lines
3.5 KiB
Markdown
109 lines
3.5 KiB
Markdown
# Filament sample Android apps
|
|
|
|
This directory contains several sample Android applications that demonstrate how to use the
|
|
Filament APIs:
|
|
|
|
### `hello-triangle`
|
|
|
|
Demonstrates how to setup a rendering surface for Filament:
|
|
|
|

|
|
|
|
### `lit-cube`
|
|
|
|
Demonstrates how to create a light and a mesh with the attributes required for lighting:
|
|
|
|

|
|
|
|
### `image-based-lighting`
|
|
|
|
Demonstrates how to create image-based lights and load complex meshes:
|
|
|
|

|
|
|
|
### `textured-object`
|
|
|
|
Demonstrates how to load and use textures for complex materials:
|
|
|
|

|
|
|
|
### `transparent-rendering`
|
|
|
|
Demonstrates how to render into a transparent `SurfaceView`:
|
|
|
|

|
|
|
|
### `texture-view`
|
|
|
|
Demonstrates how to render into a `TextureView` instead of a `SurfaceView`:
|
|
|
|

|
|
|
|
### `material-builder`
|
|
|
|
Demonstrates how to programatically generate Filament materials, as opposed to compiling them on the
|
|
host machine:
|
|
|
|

|
|
|
|
### `gltf-bloom`
|
|
|
|
Demonstrates how to load glTF models and render to an offscreen buffer:
|
|
|
|

|
|
|
|
### `hello-camera`
|
|
|
|
Demonstrates how to use `Stream` with Android's Camera2 API:
|
|
|
|

|
|
|
|
### `stream-test`
|
|
|
|
Tests the various ways to interact with `Stream` by drawing into an external texture using Canvas.
|
|
See the following screenshot; if the two sets of stripes are perfectly aligned, then the Filament
|
|
frame and the external texture are perfectly synchronized.
|
|
|
|

|
|
|
|
## Prerequisites
|
|
|
|
Before you start, make sure to read [Filament's README](../../README.md). You need to be able to
|
|
compile Filament's native library and Filament's AAR for this project. The easiest way to proceed
|
|
is to install all the required dependencies and to run the following commands at the root of the
|
|
source tree:
|
|
|
|
```
|
|
$ ./build.sh -p desktop -i release
|
|
$ ./build.sh -p android release
|
|
```
|
|
|
|
This will build all the native components and the AAR required by this sample application.
|
|
|
|
If you do not use the build script, you must set the `filament_tools_dir` property when invoking
|
|
Gradle, either from the command line or from `local.properties`. This property must point to the
|
|
distribution/install directory for desktop (produced by make/ninja install). This directory must
|
|
contain `bin/matc` and `bin/cmgen`.
|
|
|
|
Example:
|
|
```
|
|
$ ./gradlew -Pfilament_tools_dir=../../dist-release assembleDebug
|
|
```
|
|
|
|
## Important: SDK location
|
|
|
|
|
|
Either ensure your `ANDROID_HOME` environment variable is set or make sure each project contains a
|
|
`local.properties` file with the `sdk.dir` property pointing to your installation of the Android
|
|
SDK. This includes the project `filament-android` in the parent directory.
|
|
|
|
## Android Studio
|
|
|
|
You must use Android Studio 3.3 or higher to open these projects.
|
|
|
|
## Compiling
|
|
|
|
To compile and run each sample make sure you have selected the appropriate build variant
|
|
(arm7, arm8, x86 or x86_64). If you are not sure you can simply select the "universal"
|
|
variant which includes all the other ones.
|