这两天在看open GL相关的东西,很多人都感觉有点高深莫测,包括自己对他也有些敬畏了。准备花一点时间,好好研究下。
就当是Hello World,上代码,大家来看看,其实有很多自己目前也不是太懂,先上代码分享下,如果大家有什么意见和建议,也记得给我评论和分享下哈...
下面代码是基于android的,不是Unity,也不是C++,笔者技术比较偏于android,故,希望大家不要介意哈,其实应该都差不多吧~
运行后效果描述:
这是动态图,沿z轴正方向旋转。
代码一(FirstGLActivity):
public class FirstGLActivity extends Activity {
MyTDView mView;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
mView = new MyTDView(this);
mView.requestFocus();
mView.setFocusableInTouchMode(true);
setContentView(mView);
}
public void onResume(){
super.onResume();
mView.onResume();
}
public void onPause(){
super.onPause();
mView.onPause();
}
}
package com.clark.gldemo;
import android.content.Context;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.opengl.Matrix;
import com.clark.matrix.Triangle;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
public class MyTDView extends GLSurfaceView {
//每次三角形旋转的角度
final float ANGLE_SPAN = 0.375f;
//自定义线程类RotateThread的引用
RotateThread rotateThread;
//自定义渲染器的引用
SceneRenderer mRenderer;
private class SceneRenderer implements GLSurfaceView.Renderer{
Triangle tie;//声明Triangle的引用
@Override
public void onSurfaceCreated(GL10 gl10, EGLConfig eglConfig) {
GLES20.glClearColor(0,0,0,1.0f);//设置屏幕背景色
tie = new Triangle(MyTDView.this);//创建Triangle类的对象
GLES20.glEnable(GLES20.GL_DEPTH_TEST);
rotateThread = new RotateThread();//创建RotateThread对象
rotateThread.start();//开启线程
}
@Override
public void onSurfaceChanged(GL10 gl10, int width, int height) {
GLES20.glViewport(0,0,width