Git Product home page Git Product logo

androidopengldemo's Introduction

说明

这是一个Android OpenGLES2.0 从零开始的Demo程序,仅做个人学习OpenGLES的记录,并提供给后来初学者参考。若有相关问题,也非常乐意与大家一起讨论共同进步。 关于Android OpenGLES2.0学习的博客,也相当于这个Demo的讲解,在CSDN平台上的链接地址

更新说明

当前内容

  1. 三角形。
  2. 等腰直角三角形。
  3. 彩色三角形。
  4. 正方形的绘制。
  5. 正方体的绘制。
  6. 圆锥的绘制。
  7. 圆柱的绘制
  8. 球体的绘制
  9. 显示图片(纹理贴图初步)
  10. 图片简单的色彩处理
  11. 图片模糊
  12. 放大镜效果
  13. 平移旋转缩放变换
  14. 相机GL预览
  15. 压缩纹理动画
  16. FBO使用
  17. 3D模型《帽子》加载
  18. EGL方式后台处理图像示例
  19. 3D《皮卡丘》模型及纹理加载,光照处理
  20. Camera1API/Camera2API预览到SurfaceView和TextureView
  21. Camera上增加动画
  22. VR 天空盒(球形)效果
  23. 美颜
  24. Blend示例
  25. 光照

20180326更新

  1. 增加冯氏光照模型的光照示例

20170803更新

  1. 增加Blend示例

20170614更新

  1. 增加LookupFilter
  2. 增加美颜及滤镜示例

20170523更新

  1. 球形天空盒实现
  2. VR效果

20170324更新

  1. 增加Camera上播放动画的示例

20170309更新

  1. 增加Texture控制类,支持所有图像流的OpenGLES方式处理
  2. 增加相机示例,5.0前使用Camera1 API预览,5.0后使用Camera2预览

20170227更新

  1. 增加相对复杂些的3D模型加载
  2. 为3D模型增加贴图
  3. 给3D模型增加散射光、镜面光及环境光

20170218更新

  1. 增加EGL方式后台处理图像示例

20170110更新

  1. 增加3D模型加载
  2. 为3D模型增加散射光照(只是为了便于呈现立体效果)

20161224更新

  1. 修复压缩纹理动画播放错乱问题
  2. 增加FBO使用

20161114更新

  1. 增加平移旋转缩放变换示例
  2. 增加相机预览示例

20161030更新

  1. 增加图片模糊处理
  2. 增加放大镜效果处理

20161023更新

  1. 增加光照球体(不全)
  2. 增加显示纹理图片
  3. 修改demo入口
  4. 增加图片黑白、冷色调、暖色调处理
  5. 允许色彩处理方式切换

20161016更新

  1. 修复圆锥绘制的bug
  2. 增加圆柱绘制
  3. 增加球体的绘制

20161014更新

  1. 将shader分离到assets文件夹中。
  2. 增加圆锥绘制。
  3. 允许绘制图形切换,便于更好的展示。

androidopengldemo's People

Contributors

doggycoder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

androidopengldemo's Issues

在华为P9 7.0系统上,点击相机2应用崩溃

你好,很感谢提供了这么好的学习OpenGL的Demo。

如题,在P9的6.0系统是Ok的,但升级到7.0后,就报了下面这个问题(没有对Demo做什么改动):
E/AndroidRuntime: FATAL EXCEPTION: main
Process: edu.wuwang.opengl, PID: 8287
java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=10, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {edu.wuwang.opengl/edu.wuwang.opengl.camera.Camera2Activity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.view.ViewRootImpl.getTitle()' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:4284)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4327)
at android.app.ActivityThread.-wrap22(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1624)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6524)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:941)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:831)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.view.ViewRootImpl.getTitle()' on a null object reference
at android.view.SurfaceView.onAttachedToWindow(SurfaceView.java:250)
at android.opengl.GLSurfaceView.onAttachedToWindow(GLSurfaceView.java:607)
at edu.wuwang.opengl.camera.TextureController$GLView.attachedToWindow(TextureController.java:340)
at edu.wuwang.opengl.camera.TextureController.init(TextureController.java:105)
at edu.wuwang.opengl.camera.TextureController.(TextureController.java:62)
at edu.wuwang.opengl.camera.Camera2Activity$1.run(Camera2Activity.java:93)
at edu.wuwang.opengl.utils.PermissionUtils.onRequestPermissionsResult(PermissionUtils.java:41)
at edu.wuwang.opengl.camera.Camera2Activity.onRequestPermissionsResult(Camera2Activity.java:128)
at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7340)
at android.app.Activity.dispatchActivityResult(Activity.java:7192)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4280)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4327) 
at android.app.ActivityThread.-wrap22(ActivityThread.java) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1624) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:156) 
at android.app.ActivityThread.main(ActivityThread.java:6524) 

How to make a skybox ?

I want my plant has the stars sky . When the plant rolls with stars runs. But I am not expert in OpenGL . Any one can help me using a skybox with the plant?

images

可以在每个例子上配一张效果图。我觉得这样看起来会比较好。比较直观。

关于FBO与RBO绑定和内存占用的问题

在创建RBO时调用了
GLES20.glFramebufferRenderbuffer(GLES20.GL_FRAMEBUFFER, GLES20.GL_DEPTH_ATTACHMENT,
GLES20.GL_RENDERBUFFER, renderBufferId);

然后再渲染时,又再次调用此方法,是不是有点多此一举了,我注释了创建时的那个方法,一样可以运行
,还有相机+美颜那一部分,内存占用特太大了,在nexus5X上300Mb左右

Android播放帧动画,效果很奇怪

ZipActivity:基本上用的作者逻辑,文件也是作者的cc.zip,自己进行渲染帧动画。但是播放出来效果很奇怪。正常应该是一辆车的动画效果,但是现在的话,会依次产生很多辆车,导致到最后很多辆车都叠加在一起,光怪陆离。

3.1

private static double glVersion = 3.0;

private static class ContextFactory implements GLSurfaceView.EGLContextFactory {

  private static int EGL_CONTEXT_CLIENT_VERSION = 0x3098;

  public EGLContext createContext(
          EGL10 egl, EGLDisplay display, EGLConfig eglConfig) {

      Log.w(TAG, "creating OpenGL ES " + glVersion + " context");
      int[] attrib_list = {EGL_CONTEXT_CLIENT_VERSION, (int) glVersion,
              EGL10.EGL_NONE };
      // attempt to create a OpenGL ES 3.0 context
      EGLContext context = egl.eglCreateContext(
              display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list);
      return context; // returns null if 3.0 is not supported;
  }
}

3D模型示例的问题,以及解决方法

您好!我在运行“3D OBJ模型”和“OBJ+MTL模型”两个示例时,无法正常显示模型,只有一片空白。
当我把渲染模式改为RENDERMODE_WHEN_DIRTY,则能正常显示模型,也就是第一次渲染的时候是没问题 的。
之后我在https://stackoverflow.com/a/10432300 找到了解决方法:
在ObjFilter和ObjFilter2的onSizeChanged方法里面添加GLES20.glViewport(0, 0, width, height):

@Override
protected void onSizeChanged(int width, int height) {
    GLES20.glViewport(0, 0, width, height);
}

就一切正常了,能看到3D模型旋转。
P.S. 我用的手机是魅蓝Note3。

有百叶窗效果吗

有百叶窗效果吗,最近需要一个斜向左下的百叶窗的效果,不知大神有没有实现

从零开始的Demo ?

作者提个意见, 你既然标题是从零开始的, 为什么还要把所有范例放在一起, 我只想知道如果创建一个简单的app, 知道这个项目的架构是怎么样的, 画个简单三角形或一个点而已, 为何要搞得那么复杂...

推荐一个视频: https://www.youtube.com/watch?v=yip5CpVeOPI

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.