OpenGL学习(1)基本概述
来源:互联网 发布:网络基础原理动画演示 编辑:程序博客网 时间:2024/06/06 13:05
OpenGL学习(1)基本概述
(1)重写Rendar(渲染器), 重写三个方法:
a、onSurfaceCreated(GL10 gl, EGLConfig config); b、onSurfaceChanged(GL10 gl, int width, int height); c、 onDrawFrame(GL10 gl);
package com.example.mychapter2;import javax.microedition.khronos.egl.EGLConfig;import javax.microedition.khronos.opengles.GL10;import android.opengl.GLU;import android.opengl.GLSurfaceView.Renderer;public class GLRender implements Renderer{ public void onDrawFrame(GL10 gl) { // TODO Auto-generated method stub // 首先清理屏幕 gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); // 设置模型视图矩阵 gl.glMatrixMode(GL10.GL_MODELVIEW); // 重置矩阵 gl.glLoadIdentity(); // 视点变换 GLU.gluLookAt(gl, 0, 0, 3, 0, 0, 0, 0, 1, 0); // ... } public void onSurfaceChanged(GL10 gl, int width, int height) { // TODO Auto-generated method stub float ratio = (float) width / height; // 设置视口(OpenGL场景的大小) gl.glViewport(0, 0, width, height); // 设置投影矩阵为透视投影 gl.glMatrixMode(GL10.GL_PROJECTION); // 重置投影矩阵(置为单位矩阵) gl.glLoadIdentity(); // 创建一个透视投影矩阵(设置视口大小) gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10); } public void onSurfaceCreated(GL10 gl, EGLConfig config) { // TODO Auto-generated method stub // 告诉系统需要对透视进行修正 gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST); // 设置清理屏幕的颜色 gl.glClearColor(0, 0, 0, 1); // 启用深度缓存 gl.glEnable(GL10.GL_DEPTH_TEST); }}
(2)创建一个GLSurfaceView
(a)创建一个GLSurfaceView实例mGLSurfaceView,
(b)设置渲染器mGLSurfaceView.setRenderer(Render);
package com.example.mychapter2;import android.app.Activity;import android.opengl.GLSurfaceView;import android.os.Bundle;public class ChapterMain extends Activity{ private GLSurfaceView mGLSurfaceView; /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 实例化GLSurfaceView mGLSurfaceView = new GLSurfaceView(this); // 设置渲染器 mGLSurfaceView.setRenderer(new GLRender()); setContentView(mGLSurfaceView); } protected void onResume() { super.onResume(); mGLSurfaceView.onResume(); } protected void onPause() { super.onPause(); mGLSurfaceView.onPause(); }}
0 0
- OpenGL学习(1)基本概述
- OpenGL 学习1–OpenGL 概述
- OpenGL学习笔记1:OpenGL概述
- OpenGL(1)概述
- OpenGL基本API概述
- OpenGL系列1:OpenGL概述
- OpenGL学习(2)基本图形绘制
- openGL基本学习
- JAP学习笔记(1)之概述、基本用法和基本注释
- openGL学习(1)
- OpenGL学习(1)
- 现代OpenGL+Qt学习笔记之一:概述
- opengl学习笔记2-1-基本的运行框架
- OpenGL学习笔记1:环境配置和基本流程
- OpenGL学习笔记1:环境配置和基本流程
- OpenGL学习笔记1:环境配置和基本流程
- OpenGL概述
- OpenGL 概述
- CCS5.4+Proteus8的F28027实践课十一、串行12864
- vector clear 和 swap的比较
- igt
- HDU 1405 The Last Practice
- 关于产品定义、架构和设计实现的一些想法
- OpenGL学习(1)基本概述
- Openstack组件实现原理 — OpenVswitch/Gre/vlan
- LeetCode--No.172--Factorial Trailing Zeroes
- Qt ui界面文件的调用--quiloader
- 红黑树的插入与删除(一)
- 保存一份VIM配置
- [设计模式]工厂方法模式
- HDU 1420 Prepared for New Acmer
- Http协议无状态带来的问题和解决方法