-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add example variablerateshading for Android (#1084)
[Why] Example variablerateshading was not compiled for Android. [How] Generate Android version example variablerateshading from android/examples/_template.
- Loading branch information
1 parent
f03f454
commit be035bf
Showing
4 changed files
with
182 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
cmake_minimum_required(VERSION 3.4.1 FATAL_ERROR) | ||
|
||
set(NAME variablerateshading) | ||
|
||
set(SRC_DIR ../../../examples/${NAME}) | ||
set(BASE_DIR ../../../base) | ||
set(EXTERNAL_DIR ../../../external) | ||
|
||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -DVK_USE_PLATFORM_ANDROID_KHR -DVK_NO_PROTOTYPES") | ||
|
||
file(GLOB EXAMPLE_SRC "${SRC_DIR}/*.cpp") | ||
|
||
add_library(native-lib SHARED ${EXAMPLE_SRC}) | ||
|
||
add_library(native-app-glue STATIC ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c) | ||
|
||
add_subdirectory(../base ${CMAKE_SOURCE_DIR}/../base) | ||
|
||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate") | ||
|
||
include_directories(${BASE_DIR}) | ||
include_directories(${EXTERNAL_DIR}) | ||
include_directories(${EXTERNAL_DIR}/glm) | ||
include_directories(${EXTERNAL_DIR}/imgui) | ||
include_directories(${EXTERNAL_DIR}/tinygltf) | ||
include_directories(${ANDROID_NDK}/sources/android/native_app_glue) | ||
|
||
target_link_libraries( | ||
native-lib | ||
native-app-glue | ||
libbase | ||
android | ||
log | ||
z | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
apply plugin: 'com.android.application' | ||
apply from: '../gradle/outputfilename.gradle' | ||
|
||
android { | ||
compileSdkVersion rootProject.ext.compileSdkVersion | ||
defaultConfig { | ||
applicationId "de.saschawillems.vulkanVariablerateshading" | ||
minSdkVersion rootProject.ext.minSdkVersion | ||
targetSdkVersion rootProject.ext.targetSdkVersion | ||
versionCode 1 | ||
versionName "1.0" | ||
ndk { | ||
abiFilters rootProject.ext.abiFilters | ||
} | ||
externalNativeBuild { | ||
cmake { | ||
cppFlags "-std=c++14" | ||
arguments "-DANDROID_STL=c++_shared", '-DANDROID_TOOLCHAIN=clang' | ||
} | ||
} | ||
} | ||
sourceSets { | ||
main.assets.srcDirs = ['assets'] | ||
} | ||
buildTypes { | ||
release { | ||
minifyEnabled false | ||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | ||
} | ||
} | ||
externalNativeBuild { | ||
cmake { | ||
path "CMakeLists.txt" | ||
} | ||
} | ||
} | ||
|
||
task copyTask { | ||
copy { | ||
from '../../common/res/drawable' | ||
into "src/main/res/drawable" | ||
include 'icon.png' | ||
} | ||
|
||
copy { | ||
from rootProject.ext.shaderPath + 'glsl/base' | ||
into 'assets/shaders/glsl/base' | ||
include '*.spv' | ||
} | ||
|
||
copy { | ||
from rootProject.ext.shaderPath + 'glsl/variablerateshading' | ||
into 'assets/shaders/glsl/variablerateshading' | ||
include '*.*' | ||
} | ||
|
||
copy { | ||
from rootProject.ext.assetPath + 'models/sponza' | ||
into 'assets/models/sponza' | ||
include '*.*' | ||
} | ||
|
||
} | ||
|
||
preBuild.dependsOn copyTask |
24 changes: 24 additions & 0 deletions
24
android/examples/variablerateshading/src/main/AndroidManifest.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
package="de.saschawillems.vulkanVariablerateshading"> | ||
|
||
<application | ||
android:label="Vulkan variable rate shading" | ||
android:icon="@drawable/icon" | ||
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> | ||
<activity android:name="de.saschawillems.vulkanSample.VulkanActivity" | ||
android:screenOrientation="landscape" | ||
android:configChanges="orientation|keyboardHidden"> | ||
<meta-data android:name="android.app.lib_name" | ||
android:value="native-lib" /> | ||
<intent-filter> | ||
<action android:name="android.intent.action.MAIN" /> | ||
<category android:name="android.intent.category.LAUNCHER" /> | ||
</intent-filter> | ||
</activity> | ||
</application> | ||
|
||
<uses-feature android:name="android.hardware.touchscreen" android:required="false" /> | ||
<uses-feature android:name="android.hardware.gamepad" android:required="false" /> | ||
|
||
</manifest> |
58 changes: 58 additions & 0 deletions
58
...mples/variablerateshading/src/main/java/de/saschawillems/vulkanSample/VulkanActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
/* | ||
* Copyright (C) 2018 by Sascha Willems - www.saschawillems.de | ||
* | ||
* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT) | ||
*/ | ||
package de.saschawillems.vulkanSample; | ||
|
||
import android.app.AlertDialog; | ||
import android.app.NativeActivity; | ||
import android.content.DialogInterface; | ||
import android.content.pm.ApplicationInfo; | ||
import android.os.Bundle; | ||
|
||
import java.util.concurrent.Semaphore; | ||
|
||
public class VulkanActivity extends NativeActivity { | ||
|
||
static { | ||
// Load native library | ||
System.loadLibrary("native-lib"); | ||
} | ||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
} | ||
|
||
// Use a semaphore to create a modal dialog | ||
|
||
private final Semaphore semaphore = new Semaphore(0, true); | ||
|
||
public void showAlert(final String message) | ||
{ | ||
final VulkanActivity activity = this; | ||
|
||
ApplicationInfo applicationInfo = activity.getApplicationInfo(); | ||
final String applicationName = applicationInfo.nonLocalizedLabel.toString(); | ||
|
||
this.runOnUiThread(new Runnable() { | ||
public void run() { | ||
AlertDialog.Builder builder = new AlertDialog.Builder(activity, android.R.style.Theme_Material_Dialog_Alert); | ||
builder.setTitle(applicationName); | ||
builder.setMessage(message); | ||
builder.setPositiveButton("Close", new DialogInterface.OnClickListener() { | ||
public void onClick(DialogInterface dialog, int id) { | ||
semaphore.release(); | ||
} | ||
}); | ||
builder.setCancelable(false); | ||
AlertDialog dialog = builder.create(); | ||
dialog.show(); | ||
} | ||
}); | ||
try { | ||
semaphore.acquire(); | ||
} | ||
catch (InterruptedException e) { } | ||
} | ||
} |