# OpenGL_ISRC **Repository Path**: baixiaohe/OpenGL_ISRC ## Basic Information - **Project Name**: OpenGL_ISRC - **Description**: OpenGL移植 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 7 - **Created**: 2021-04-04 - **Last Updated**: 2024-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenGL_ISRC #### 项目介绍 - 项目名称:OpenGL移植 - 所属系列:鸿蒙开源平台的OpenGL移植 - 功能:安卓OpenGL中除GLUtil类以外的所有功能 - 项目移植状态:基本完成 - 调用差异: 1、在安卓中可以使用各种版本的GL,但是该项目只能使用GLES。 2、在安卓SDK中提供各种版本的EGL,但是该项目只能使用鸿蒙SDK中自带的EGL。 3、GLSurfaceView被改名成为GLSurfaceProvider。 - 项目作者和维护人:戴研 - 联系方式:isrc_hm@iscas.ac.cn/2839808264@qq.com(个人) - 参考项目地址:http://androidxref.com/9.0.0_r3/ #### 项目介绍 - 编程语言:Java、 C/C++ - 外部库依赖:安卓源码中的GLES库文件 #### 安装教程 首先下载项目文件,如果要在新项目中使用OpenGL可以使用以下两种方法: 方法一:最直接方法(路径不能改) 1、将项目文件\entry\build\intermediates路径下的libs文件夹复制到新项目中相同路径下。 2、将项目文件中android.opengl和ohos.opengl两个包复制到新项目相同路径下。(注意:不要在编译器中复制,容易出错) 3、将slice中的Log复制到新项目中,并在GLSurfaceProvider中引用,或者处理一下其中的Log报错。 方法二:(可以修改ohos.opengl的路径,但是android.opengl路径依然不能修改) 1、GLES文件 将本项目文件\entry\build\intermediates\libs路径下的三个libGLES的so文件复制到要使用的项目的libs目录下即可。 GLES的Java文件必须要放在项目文件\entry\src\main\java\android\opengl的目录下。 2、ETC1、Matrix和Visibility(创建so文件) 在新的项目中使用时,需要将本项目中的上面提到的Java文件(路径可以自己定义)和cpp文件夹复制过去。 将本项目文件中etc1_util.cpp文件873-875行中的路径改为使用时ETC1、Matrix和Visibility三个类对应的路径。 下面882行函数名中的路径也要改为ETC1的路径。 在项目文件的build.gradle的ohos{}中添加以下代码: externalNativeBuild { path "src/main/cpp/CMakeLists.txt" arguments "-v" abiFilters "arm64-v8a" cppFlags "" } 如果报找不到CMakeList.txt的错就先删掉这段代码运行一次,再添加上。 步骤简述:1:直接复制cpp文件夹和以上Java文件。2:去etc1_util.cpp改路径。3:去build.gradle中添加externalNativeBuild。 3、其余文件可以自行复制。 注意:GLU等类放在android.opengl的路径下会报错,使用so文件时一定要注意路径问题。 #### 使用说明 1、GLUtil类暂时没有移植,对应的功能暂时无法使用。 2、GLSurfaceview改为了GLSurfaceProvider 在使用GLSurfaceProvider的Renderer时,GL改为GLES1X。 public interface Renderer { void onSurfaceCreated(GLES1X gl, EGLConfig config); void onSurfaceChanged(GLES1X gl, int width, int height); void onDrawFrame(GLES1X gl); } 3、项目文件中MainAbilitySlice.java文件中提供了GLSurfaceProvider和EGL的使用示例 直接运行就可以看到GLSurfaceProvider的使用结果,取消下面注释后可以看到EGL的使用结果。 ``` #### 版本迭代 - v0.1.0 #### 版权和许可信息 - Apache Licence 2.0