Migrate gles3jni to RegisterNatives.

This commit is contained in:
Dan Albert
2025-09-18 14:48:49 -07:00
committed by Dan Albert
parent 61196249b7
commit abbd095638
3 changed files with 34 additions and 16 deletions

View File

@@ -19,4 +19,12 @@ android {
path 'src/main/cpp/CMakeLists.txt'
}
}
buildFeatures {
prefab true
}
}
dependencies {
implementation project(":base")
}

View File

@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.22.1)
project(Gles3Jni LANGUAGES CXX)
include(AppLibrary)
find_package(base CONFIG REQUIRED)
add_app_library(gles3jni SHARED
${GL3STUB_SRC}
@@ -10,8 +11,8 @@ add_app_library(gles3jni SHARED
RendererES3.cpp
)
# Include libraries needed for gles3jni lib
target_link_libraries(gles3jni
base::base
GLESv3
android
EGL

View File

@@ -16,6 +16,7 @@
#include "gles3jni.h"
#include <base/macros.h>
#include <jni.h>
#include <stdlib.h>
#include <string.h>
@@ -227,21 +228,11 @@ void Renderer::render() {
static Renderer* g_renderer = NULL;
extern "C" {
JNIEXPORT void JNICALL Java_com_android_gles3jni_GLES3JNILib_init(JNIEnv* env,
jobject obj);
JNIEXPORT void JNICALL Java_com_android_gles3jni_GLES3JNILib_resize(
JNIEnv* env, jobject obj, jint width, jint height);
JNIEXPORT void JNICALL Java_com_android_gles3jni_GLES3JNILib_step(JNIEnv* env,
jobject obj);
};
#if !defined(DYNAMIC_ES3)
static GLboolean gl3stubInit() { return GL_TRUE; }
#endif
JNIEXPORT void JNICALL Java_com_android_gles3jni_GLES3JNILib_init(JNIEnv*,
jobject) {
void Init(JNIEnv*, jclass) {
if (g_renderer) {
delete g_renderer;
g_renderer = NULL;
@@ -262,16 +253,34 @@ JNIEXPORT void JNICALL Java_com_android_gles3jni_GLES3JNILib_init(JNIEnv*,
}
}
JNIEXPORT void JNICALL Java_com_android_gles3jni_GLES3JNILib_resize(
JNIEnv*, jobject, jint width, jint height) {
void Resize(JNIEnv*, jclass, jint width, jint height) {
if (g_renderer) {
g_renderer->resize(width, height);
}
}
JNIEXPORT void JNICALL Java_com_android_gles3jni_GLES3JNILib_step(JNIEnv*,
jobject) {
void Step(JNIEnv*, jclass) {
if (g_renderer) {
g_renderer->render();
}
}
extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM* _Nonnull vm, void* _Nullable) {
JNIEnv* env;
if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
return JNI_ERR;
}
jclass c = env->FindClass("com/android/gles3jni/GLES3JNILib");
if (c == nullptr) return JNI_ERR;
static const JNINativeMethod methods[] = {
{"init", "()V", reinterpret_cast<void*>(Init)},
{"resize", "(II)V", reinterpret_cast<void*>(Resize)},
{"step", "()V", reinterpret_cast<void*>(Step)},
};
int rc = env->RegisterNatives(c, methods, arraysize(methods));
if (rc != JNI_OK) return rc;
return JNI_VERSION_1_6;
}