jni stuff
This commit is contained in:
parent
6d9b62af72
commit
10e186780c
@ -38,6 +38,11 @@ subprojects {
|
||||
include '**/*'
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile) {
|
||||
sourceCompatibility = "1.7"
|
||||
targetCompatibility = "1.7"
|
||||
}
|
||||
|
||||
eclipseProject.dependsOn copySettings
|
||||
|
||||
// create emacs JDEE project settings
|
||||
|
@ -18,4 +18,4 @@ org.gradle.jvmargs=-Xmx1024m -XX:MaxPermSize=512m
|
||||
|
||||
# options to speed up compilation once everything else is working:
|
||||
org.gradle.parallel=false
|
||||
org.gradle.configureondemand=false
|
||||
org.gradle.configureondemand=true
|
||||
|
@ -5,26 +5,42 @@
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.base.1587393048" moduleId="org.eclipse.cdt.core.settings" name="Default">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration buildProperties="" id="cdt.managedbuild.toolchain.gnu.base.1587393048" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||
<configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.base.1587393048" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||
<folderInfo id="cdt.managedbuild.toolchain.gnu.base.1587393048.116574534" name="/" resourcePath="">
|
||||
<toolChain id="cdt.managedbuild.toolchain.gnu.base.223412825" name="cdt.managedbuild.toolchain.gnu.base" superClass="cdt.managedbuild.toolchain.gnu.base">
|
||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.target.gnu.platform.base.385578518" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
|
||||
<builder id="cdt.managedbuild.target.gnu.builder.base.156937647" managedBuildOn="false" name="Gnu Make Builder.Default" superClass="cdt.managedbuild.target.gnu.builder.base"/>
|
||||
<builder id="cdt.managedbuild.target.gnu.builder.base.156937647" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.target.gnu.builder.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1823835369" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.360207042" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1095290162" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.360207042" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.111801070" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1095290162" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
||||
<option id="gnu.c.compiler.option.include.paths.542022155" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value="/usr/lib/jvm/java-7-openjdk-amd64/include"/>
|
||||
<listOptionValue builtIn="false" value="/usr/lib/jvm/java-7-openjdk-amd64/include/linux"/>
|
||||
</option>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.506992692" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.335083411" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1727739418" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.assembler.base.2019534622" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base"/>
|
||||
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1727739418" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
|
||||
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1457207088" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
</tool>
|
||||
<tool id="cdt.managedbuild.tool.gnu.assembler.base.2019534622" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
|
||||
<option id="gnu.both.asm.option.include.paths.66240236" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath"/>
|
||||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.622641223" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
</configuration>
|
||||
@ -35,8 +51,14 @@
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="vtm-jni.null.1777174385" name="vtm-jni"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1587393048;cdt.managedbuild.toolchain.gnu.base.1587393048.116574534;cdt.managedbuild.tool.gnu.c.compiler.base.1095290162;cdt.managedbuild.tool.gnu.c.compiler.input.506992692">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1587393048;cdt.managedbuild.toolchain.gnu.base.1587393048.116574534;cdt.managedbuild.tool.gnu.cpp.compiler.base.360207042;cdt.managedbuild.tool.gnu.cpp.compiler.input.111801070">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
</cproject>
|
||||
|
33
jni/.project
33
jni/.project
@ -1,33 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>vtm-jni</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<triggers>clean,full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.core.ccnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
</projectDescription>
|
@ -1,18 +1,10 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Build native libraries:
|
||||
# - modify jni/builder/JniBuilder.java for your platform.
|
||||
# - get gdx-jnigen, then run:
|
||||
|
||||
javac -cp ../vtm-ext-libs/gdx/gdx-jnigen.jar jni/builder/JniBuilder.java
|
||||
java -cp ../vtm-ext-libs/gdx/gdx-jnigen.jar:../vtm-ext-libs/gdx/gdx-jnigen-sources.jar:jni/builder JniBuilder
|
||||
- modify src/JniBuilder.java for your platform.
|
||||
|
||||
## to build android:
|
||||
export ANDROID_HOME=/home/jeff/android-sdk
|
||||
export NDK_HOME=/home/jeff/android-ndk-r8d
|
||||
export NDK_HOME=/path_to_android_sdk
|
||||
|
||||
## compile
|
||||
cd jni
|
||||
ant -v
|
||||
|
||||
## copy vtm/libs/armeabi* to vtm-android/libs
|
||||
|
14
jni/build.gradle
Normal file
14
jni/build.gradle
Normal file
@ -0,0 +1,14 @@
|
||||
repositories {
|
||||
maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||
}
|
||||
|
||||
apply plugin: 'java'
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs = ['src']
|
||||
main.resources.srcDirs = ['src']
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile "com.badlogicgames.gdx:gdx-jnigen:$gdxVersion"
|
||||
}
|
@ -1,17 +1,34 @@
|
||||
<project name="vtm-jni-natives" basedir="." default="all">
|
||||
<target name="clean">
|
||||
<target name="clean">
|
||||
|
||||
</target>
|
||||
|
||||
<target name="compile-natives">
|
||||
</target>
|
||||
|
||||
</target>
|
||||
|
||||
<target name="pack-natives">
|
||||
<jar destfile="../libs/vtm-jni-natives.jar">
|
||||
<target name="compile-natives">
|
||||
|
||||
</jar>
|
||||
</target>
|
||||
</target>
|
||||
|
||||
<target name="all" depends="compile-natives,pack-natives"/>
|
||||
<target name="pack-natives">
|
||||
<jar destfile="../libs/vtm-jni-natives.jar">
|
||||
<manifest>
|
||||
<!-- Who is building this jar? -->
|
||||
<attribute name="Built-By" value="${user.name}" />
|
||||
<!-- Information about the program itself -->
|
||||
<attribute name="Implementation-Vendor" value="VTM" />
|
||||
<attribute name="Implementation-Title" value="VTM" />
|
||||
<attribute name="Implementation-Version" value="0.5.9" />
|
||||
</manifest>
|
||||
|
||||
<fileset dir="../libs/linux64" includes="libvtm-jni64.so" />
|
||||
<!--
|
||||
<fileset dir="../libs/macosx32" includes="libvtm-jni.dylib"/>
|
||||
<fileset dir="../libs/macosx64" includes="libvtm-jni64.dylib"/>
|
||||
<fileset dir="../libs/windows32" includes="gdx.dll"/>
|
||||
<fileset dir="../libs/windows64" includes="gdx64.dll"/>
|
||||
<fileset dir="../libs/linux32" includes="libvtm-jni.so"/>
|
||||
-->
|
||||
|
||||
</jar>
|
||||
</target>
|
||||
|
||||
<target name="all" depends="compile-natives,pack-natives" />
|
||||
</project>
|
||||
|
@ -97,6 +97,9 @@ transposeM(float* mTrans, int mTransOffset, float* m, int mOffset);
|
||||
static inline void
|
||||
matrix4_proj(float* mat, float* vec);
|
||||
|
||||
static inline void
|
||||
matrix4_proj2D(float* mat, float* vec);
|
||||
|
||||
jlong JNI(alloc)(JNIEnv *env, jclass* clazz)
|
||||
{
|
||||
return (long) calloc(16, sizeof(float));
|
||||
@ -244,12 +247,36 @@ void JNI(strans)(JNIEnv* env, jclass* clazz, jlong ptr_r, jlong ptr_a)
|
||||
transposeM(matr, 0, mata, 0);
|
||||
}
|
||||
|
||||
void JNI(prj)(JNIEnv* env, jclass* clazz, jlong ptr, jfloatArray obj_vec)
|
||||
void JNI(prj)(JNIEnv* env, jclass* clazz, jlong ptr, jfloatArray obj_vec){
|
||||
float* m = CAST(ptr);
|
||||
float* vec = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_vec, 0);
|
||||
|
||||
matrix4_proj(m, vec);
|
||||
|
||||
(*env)->ReleasePrimitiveArrayCritical(env, obj_vec, vec, 0);
|
||||
}
|
||||
|
||||
void JNI(prj3D)(JNIEnv* env, jclass* clazz, jlong ptr, jfloatArray obj_vec, int offset, int cnt)
|
||||
{
|
||||
float* m = CAST(ptr);
|
||||
float* vec = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_vec, 0);
|
||||
|
||||
matrix4_proj(m, vec);
|
||||
int length = cnt * 3;
|
||||
for (int i = offset * 3; i < length; i += 3)
|
||||
matrix4_proj(m, (vec + i));
|
||||
|
||||
(*env)->ReleasePrimitiveArrayCritical(env, obj_vec, vec, 0);
|
||||
}
|
||||
|
||||
void JNI(prj2D)(JNIEnv* env, jclass* clazz, jlong ptr, jfloatArray obj_vec, int offset, int cnt)
|
||||
{
|
||||
float* m = CAST(ptr);
|
||||
float* vec = (float*) (*env)->GetPrimitiveArrayCritical(env, obj_vec, 0);
|
||||
|
||||
int length = cnt * 2;
|
||||
|
||||
for (int i = offset * 2; i < length; i += 2)
|
||||
matrix4_proj2D(m, (vec + i));
|
||||
|
||||
(*env)->ReleasePrimitiveArrayCritical(env, obj_vec, vec, 0);
|
||||
}
|
||||
@ -490,3 +517,15 @@ matrix4_proj(float* mat, float* vec)
|
||||
vec[1] = y;
|
||||
vec[2] = z;
|
||||
}
|
||||
|
||||
static inline void
|
||||
matrix4_proj2D(float* mat, float* vec)
|
||||
{
|
||||
|
||||
float inv_w = 1.0f / (vec[0] * mat[M30] + vec[1] * mat[M31] + mat[M33]);
|
||||
float x = (vec[0] * mat[M00] + vec[1] * mat[M01] + mat[M03]) * inv_w;
|
||||
float y = (vec[0] * mat[M10] + vec[1] * mat[M11] + mat[M13]) * inv_w;
|
||||
|
||||
vec[0] = x;
|
||||
vec[1] = y;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user