# OpenGL_ISRC **Repository Path**: iscas-ohos/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**: 21 - **Forks**: 7 - **Created**: 2021-01-08 - **Last Updated**: 2025-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: Opengl ## README # OpenGL_ISRC #### 项目介绍 - 项目名称:OpenGL移植 - 所属系列:鸿蒙开源平台的OpenGL移植 - 功能:安卓OpenGL中除GLUtil类以外的所有类的功能,glCreateShader和glCreateProgram相关的的方法暂时无法使用。 - 项目移植状态:基本完成 - 调用差异: 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库文件 #### 安装教程 1、直接将项目文件中的libs文件夹里的har包复制到新项目中就可以使用。 2、如果想直接使用项目文件需要: (1)把android.opengl和ohos.opengl两个文件夹包括其中的内容复制到新的项目中的java目录下,包名不能更改。 (2)OpenGL组件中的libs文件夹中的so文件全部复制到新项目中的libs文件夹中。 #### 使用说明 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的使用示例 4、与glCreateShader和glCreateProgram相关的的方法暂时无法使用。 #### 未完成部分 1、 -由于glCreateShader和glCreateProgram方法无法正常创建着色器和程序,所以这两个方法需要重新移植。目前有一种方案可行性比较大:去移植安卓中的swiftshader。 -链接:http://androidxref.com/9.0.0_r3/xref/external/swiftshader/src/Shader/ -如果有需要的可以尝试去移植。 -由于移植需要用到native部分,我提供该项目中生成etc1的so库时项目的代码。 -native部分参考:https://gitee.com/D1124/OpenGL_ISRC_native -(C代码如何编译成so库并在Java中使用的示例↑) 2、 -GLUtil类,需要在C代码中将安卓中的bitmap替换为pixelmap(链接中1065-1070行对应的方法)。 -链接:http://androidxref.com/9.0.0_r3/xref/frameworks/base/core/jni/android/opengl/util.cpp #### 版本迭代 - v0.1.0 #### 版权和许可信息 - Apache Licence 2.0