OpenGL好庞大,画个三角形画的吐血,理论里面涉及到的数学知识比较多,主要是三角函数以及矩阵论里面的东西,不过反复用来用去也就那么多,补充一下这方面的知识也能很快上手,好吧,为了以后能够随心所欲的画图,我忍了!!!
1,创建布局,加载SurfaceView控件
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyGLsurfaceView view = new MyGLsurfaceView(this);
//renderer:渲染器
view.setRenderer(renderer);
//设置视图
setContentView(view);
}
class MyGLsurfaceView extends GLSurfaceView{
public MyGLsurfaceView(Context context) {
super(context);
}
public MyGLsurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
}
}
2,自定义渲染器MyRenderer
Renderer是个接口,OpenGL开发,Renderer是最重点的,重中之重!!!SurfaceView只是个载体.
因此可以view.setRenderer(new MyRenderer());
Ctrl进入setRenderer可以查到Rebderer来自类
android.opengl.GLSurfaceView.Renderer
自定义渲染器
MyRenderer implements android.opengl.GLSurfaceView.Renderer
实现里面的三个方法:
onSurfaceCreated,onSurfaceChanged,onDrawFrame
class MyRender implements android.opengl.GLSurfaceView.Renderer{
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
}
@Override
public void onDrawFrame(GL10 gl) {
}
}
2.1,onSurfaceCreated表层创建
//表层创建时
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
//设置背景色,透明度1为完全不透明
gl.glClearColor(0, 0, 0, 1);
清屏,设置SurfaceView的背景色
gl.glClearColor(red, green, blue, alpha);
2.2,onSurfaceChanged画面大小改变时调用
//表层size改变时,即画面的大小改变时调用
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
//设置视口,输出画面的区域,在控件的什么区域来输出,x,y是左下角坐标
gl.glViewport(0, 0, width, height);
float ratio =(float) width /(float) height;
//矩阵模式,投影矩阵,openGL基于状态机
gl.glMatrixMode(GL10.GL_PROJECTION);
//加载单位矩阵
gl.glLoadIdentity();
//平截头体
gl.glFrustumf(-1f, 1f, -ratio, ratio, 3, 7);
}
设置视口,即输出画面的区域,一般来说按照SurfaceView控件的大小来输出,也可在SurfaceView里面的一个小区域输出
x,y是左下角的坐标(0,0)点,
gl.glViewport(x, y, width, height);
设置平截头体(左,右,下,上,近平面,远平面)
gl.glFrustumf(left, right, bottom, top, zNear, zFar);
设置平截头体时里面不是一个具体的值,而是一个数字,一个单位,这个单位是相对的,不管这个平截头

这篇博客介绍了如何使用OpenGL ES绘制一个三角形,从创建SurfaceView控件、自定义渲染器MyRenderer,到设置平截头体、指定眼球位置和绘制三角形的过程。涉及关键方法如onSurfaceCreated、onSurfaceChanged和onDrawFrame,以及矩阵变换、顶点缓冲区和颜色设置等概念。
最低0.47元/天 解锁文章
510

被折叠的 条评论
为什么被折叠?



