3D画卷效果.docx

上传人:b****8 文档编号:9849686 上传时间:2023-02-07 格式:DOCX 页数:9 大小:208.61KB
下载 相关 举报
3D画卷效果.docx_第1页
第1页 / 共9页
3D画卷效果.docx_第2页
第2页 / 共9页
3D画卷效果.docx_第3页
第3页 / 共9页
3D画卷效果.docx_第4页
第4页 / 共9页
3D画卷效果.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

3D画卷效果.docx

《3D画卷效果.docx》由会员分享,可在线阅读,更多相关《3D画卷效果.docx(9页珍藏版)》请在冰豆网上搜索。

3D画卷效果.docx

3D画卷效果

先上个图,以后上源码

完全打开状态

over

关键代码

packagecom.archermind.myRenderer;

importjava.nio.IntBuffer;

importjavax.microedition.khronos.egl.EGLConfig;

importjavax.microedition.khronos.opengles.GL10;

importandroid.content.Context;

importandroid.graphics.Bitmap;

importandroid.opengl.GLSurfaceView.Renderer;

importcom.archermind.myFigure.Cube;

importcom.archermind.myFigure.Square;

importcom.archermind.tools.BitmapCreate;

publicclassmyRendererimplementsRenderer

{

Cubecube;

Cubelift_cube;

Cuberight_cube;

Squaresquare;

publicfloatmAngleX;

publicfloatmAngleY;

publicfloatmRunX;

publicfloatdx;

publicfloatspeed=0.08f;

floatrotateAngle;

privateContextmContext;

privateint[]texture;

publicmyRenderer(Contextcontext,Cubelift_cube,Cuberight_cube,

Squaresquare,BitmapCreatebitmapCreate)

{

init(context,lift_cube,right_cube,square,bitmapCreate);

}

privatevoidinit(Contextcontext,Cubelift_cube,Cuberight_cube,

Squaresquare,BitmapCreatebitmapCreate)

{

this.cube=newCube(lift_cube.getT(),lift_cube.getX(),0.2f,context,bitmapCreate);

this.square=square;

this.mContext=context;

this.lift_cube=lift_cube;

this.right_cube=right_cube;

}

@Override

publicvoidonDrawFrame(GL10gl)

{

//---------------------------画左

gl.glClear(GL10.GL_COLOR_BUFFER_BIT|GL10.GL_DEPTH_BUFFER_BIT);

gl.glMatrixMode(GL10.GL_MODELVIEW);//用后来的矩阵操作MODELVIEW栈

//画左边的多面体

gl.glLoadIdentity();//重置矩阵

//里移3个单位

gl.glTranslatef(-square.getX()-lift_cube.getX()+mRunX,0,-4.0f);

//向里面移动5个单位

gl.glRotatef(mAngleX,0,1,0);//绕y轴旋转

//允许设置顶点

//画多变形

lift_cube.draw(gl,texture,0);

//-----------------------------画右

//画右边的多面体

gl.glLoadIdentity();//重置矩阵

//里移3个单位

gl.glTranslatef(square.getX()+right_cube.getX()-mRunX,0,-4.0f);

//向里面移动5个单位

gl.glRotatef(-mAngleX,0,1,0);//绕y轴旋转

//允许设置顶点

//画多变形

right_cube.draw(gl,texture,0);

//-------------------------------画中间

gl.glLoadIdentity();

gl.glTranslatef(0,0,-4.0f);

//左坐标轴的设置

if(mRunX-square.getMAX_X()>=square.getMAX_X())

{

square.setLiftX(square.getMAX_X());

}

elseif(mRunX-square.getMAX_X()<=-square.getMAX_X())

{

square.setLiftX(-square.getMAX_X());

}

else

{

square.setLiftX(mRunX-square.getMAX_X());

}

//右座标轴的设置

if(mRunX-square.getMAX_X()>=square.getMAX_X())

{

square.setRightX(-square.getMAX_X());

}

elseif(mRunX-square.getMAX_X()<=-square.getMAX_X())

{

square.setRightX(square.getMAX_X());

}

else

{

square.setRightX(-mRunX+square.getMAX_X());

}

//画正方形

square.draw(gl,texture,1);

//-------------------------------------画小件

gl.glLoadIdentity();

gl.glTranslatef(-lift_cube.getMAX_X()-square.getMAX_X()+mRunX,square.getY()+cube.getY(),-4.0f);

gl.glRotatef(mAngleX,0,1,0);//绕y轴旋转

cube.draw(gl,texture,3);

gl.glLoadIdentity();

gl.glTranslatef(+lift_cube.getMAX_X()+square.getMAX_X()-mRunX,square.getY()+cube.getY(),-4.0f);

gl.glRotatef(-mAngleX,0,1,0);//绕y轴旋转

cube.draw(gl,texture,3);

gl.glLoadIdentity();

gl.glTranslatef(-lift_cube.getMAX_X()-square.getMAX_X()+mRunX,-square.getY()-cube.getY(),-4.0f);

gl.glRotatef(mAngleX,0,1,0);//绕y轴旋转

cube.draw(gl,texture,3);

gl.glLoadIdentity();

gl.glTranslatef(+lift_cube.getMAX_X()+square.getMAX_X()-mRunX,-square.getY()-cube.getY(),-4.0f);

gl.glRotatef(-mAngleX,0,1,0);//绕y轴旋转

cube.draw(gl,texture,3);

gl.glDisable(GL10.GL_TEXTURE_2D);

if(mRunX>0&&mRunX<  square.getX())

{

if(dx>0)

{

mRunX+=speed;

}

else

{

mRunX-=speed;

}

}

elseif(mRunX<=0)

{

if(dx>0)

{

mRunX+=speed;

}

else

{

mRunX=0;

}

}

elseif(mRunX>=  square.getX())

{

if(dx<0)

{

mRunX-=speed;

}

else

{

mRunX=square.getX();

}

}

}

@Override

publicvoidonSurfaceChanged(GL10gl,intwidth,intheight)

{

floatratio=(float)width/height;

gl.glViewport(0,0,width,height);

//设置投影矩阵

gl.glMatrixMode(GL10.GL_PROJECTION);

//重置投影矩阵

gl.glLoadIdentity();

//设置视口的大小

gl.glFrustumf(-ratio,ratio,-1,1,1,10);

//选择模型观察矩阵

gl.glMatrixMode(GL10.GL_MODELVIEW);

//重置模型观察矩阵

gl.glLoadIdentity();

}

@Override

publicvoidonSurfaceCreated(GL10gl,EGLConfigconfig)

{

//启用阴影平滑

gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,GL10.GL_FASTEST);

gl.glClearColor(1.0f,1.0f,1.0f,1.0f);

gl.glShadeModel(GL10.GL_SMOOTH);

//黑色背景

//设置深度缓存

gl.glClearDepthf(1.0f);

gl.glEnable(GL10.GL_DEPTH_TEST);

gl.glDepthFunc(GL10.GL_LEQUAL);

//创建纹理

IntBufferintBuffer=IntBuffer.allocate(4);

gl.glGenTextures(4,intBuffer);

texture=intBuffer.array();

//square.createTexture(gl);

//cube.createTexture(gl);

}

}

卷起状态

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1