android OpenglES2.0之立体模型展示(缩放+旋转+光照+纹理)

您所在的位置:网站首页 es2建模 android OpenglES2.0之立体模型展示(缩放+旋转+光照+纹理)

android OpenglES2.0之立体模型展示(缩放+旋转+光照+纹理)

2024-06-25 20:21| 来源: 网络整理| 查看: 265

                                                                                                                            心若止水,无坚不摧。

为了绘制一个3D立体模型,你需要掌握一下知识点:

1、GLSurfaceview

2、渲染器render

3、管线渲染的流程

4、着色器编程

看这个链接,了解基本语法

https://blog.csdn.net/xuyankuanrong/article/details/79998061

5、坐标系变换

感觉这个链接对三种坐标系(view坐标系,world坐标系,model坐标系)讲述的特别好:

https://blog.csdn.net/zhongjling/article/details/8488844

6、投影

不太懂的童鞋请度娘, 透视投影(perspective)和正交投影(Orthodox)

7、光照

感觉这个链接对光照讲述的特别好:https://blog.csdn.net/u012325397/article/details/49668641

本文用到的点坐标数据和着色器代码数据保存在文件里面,文中仅仅给出了着色器代码数据。 本文类图如下:

一、MainActivity部分

glsurfaceview可简单的理解为类似button,textview等的组件,它的父类是view类,可以设置宽度和高度等属性值,只是他是用来显示的,也就是说3d模型仅仅会显示在glsurfaceview所限定的区域内

GLSurfaceView的使用有两种方式

1、直接在onCreate()函数里new一个

2、在main_activity里面

 

public class MainActivity extends AppCompatActivity { private GLSurfaceView glSurfaceView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); glSurfaceView=new T3DModelSurfaceView(this); setContentView(glSurfaceView); glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); } protected void onResume(){ super.onResume(); glSurfaceView.onResume(); } protected void onPause(){ super.onPause(); glSurfaceView.onPause(); } } 二、T3DSurfaceView部分

语文中,渲染的意思是画国画时用水墨或淡色涂抹画面以加强艺术效果。可以增强氛围,使人感觉情景更加真实。

同理,在这里glsurfaceview就是我们的画,可以通过setRender()来设置渲染器,加强艺术效果。例如可以给surfaceview渲染一层黑色

(1)旋转和缩放实现如下

package zhx.com.glsv; import android.content.Context; import android.opengl.GLSurfaceView; import android.view.MotionEvent; public class T3DModelSurfaceView extends GLSurfaceView { private float mPreviousX; private float mPreviousY; float scale = 0.01f ; float startDist=0; float endDist=0; private TriangleRender render; public T3DModelSurfaceView(Context context){ super(context)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3