OpenGL ES学习之基础工作

        最近课题中需要使用OpenGL ES的知识,但是之前没有接触过,所以计划从现在开始一步一步的认真学习,并对自己的学习进行一个总结和思考,以便今后的查漏补缺。由于学习使用的是OpenGL ES2.0版本,所以文中会用OpenGL ES代指OpenGL ES2.0。

        废话不多说,进入正题。开始学习一个初始化OpenGL并不停的清空屏幕的一个基础程序。

  1. 创建项目FirstOpenGLProjectActivity。
  2. 使用GLSurfaceView初始化OpenGL,GLSurfaceView实际上为自己创建了一个窗口,让底层的OpenGL surface显示出来。
  3. 创建GLSurfaceView实例,并通过Setrenderer记住GLSurfaceView是否处于有效状态,同时移除项目创建时候自动对setContentView()的调用,将GLSurfaceView实例(glSurfaceView)加入进行初始化。
    public class FirstOpenGLProjectActivity extends Activity {
       
        private GLSurfaceView glSurfaceView;
        private boolean rendererSet = false;//记住GLSurfaceView是否处于有效状态
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            glSurfaceView = new GLSurfaceView(this);//创建GLSurfaceView实例  
    setContentView(glSurfaceView);//将GLSurfaceView加到activity中并显示到屏幕中}}

  4. 创建渲染器新类FirstOpenGLProjectRenderer,并实现Renderer接口。该渲染器接口主要定义有三个方法,即onSurfaceCreated(GL10 glUnused, EGLConfig config)方法:当Surface被创建的时候,GLSurfaceView会调用这个方法;onSurfaceChanged(GL10 glUnused, int width, int height)方法:在Surface被创建后,每次Surface尺寸变化时(横竖屏切换时),此方法都会被GLSurfaceView调用;onDrawFrame(GL10 glUnused)方法:当绘制一帧时,此方法会被GLSurfaceView调用。并为这三个方法对应设置清空屏幕用的颜色、视口尺寸和清空屏幕命令。
    @Override
        public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
            // 将背景清除颜色设置为红色. 前三个参数分别对应红色、绿色和蓝色,最后的参数对应一个特殊的分量,称为阿尔法,它经常用来表示半透明度或者透明度。
            glClearColor(1.0f, 0.0f, 0.0f, 0.0f);
        }
    
        @Override
        public void onSurfaceChanged(GL10 glUnused, int width, int height) {
            // 设置OpenGL的视口(viewport)尺寸 铺满整个surface。
            glViewport(0, 0, width, height);
            
        }
    
        @Override
        public void onDrawFrame(GL10 glUnused) {
            // Clear the rendering surface.
            glClear(GL_COLOR_BUFFER_BIT);
        }

    需要在FirstOpenGLProjectActivity类中
    glSurfaceView = new GLSurfaceView(this);之后调用sentRenderer()方法传入自定义的FirstOpenGLProjectRenderer类的一个新实例,并通过设置rendererSet为true记住渲染器已经被设置过了。
  5. 使用onPause()和onResume()方法对后台渲染线程进行暂停和继续,同时释放和续用OpenGl上下文。
    @Override
        protected void onPause() {
            super.onPause();
            
            if (rendererSet) {
                glSurfaceView.onPause();
            }
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            
            if (rendererSet) {
                glSurfaceView.onResume();
            }
        }

    
    
    
    

        最后贴上效果图:


数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究(Matlab代码实现)内容概要:本文围绕“数据驱动的两阶段分布鲁棒(1-范数和∞-范数约束)的电热综合能源系统研究”展开,提出了一种结合数据驱动与分布鲁棒优化方法的建模框架,用于解决电热综合能源系统在不确定性环境下的优化调度问题。研究采用两阶段优化结构,第一阶段进行预决策,第二阶段根据实际场景进行调整,通过引入1-范数和∞-范数约束来构建不确定集,有效刻画风电、负荷等不确定性变量的波动特性,提升模型的鲁棒性和实用性。文中提供了完整的Matlab代码实现,便于读者复现和验证算法性能,并结合具体案例分析了不同约束条件下系统运行的经济性与可靠性。; 适合人群:具备一定电力系统、优化理论和Matlab编程基础的研究生、科研人员及工程技术人员,尤其适合从事综合能源系统、鲁棒优化、不确定性建模等相关领域研究的专业人士。; 使用场景及目标:①掌握数据驱动的分布鲁棒优化方法在综合能源系统中的应用;②理解1-范数和∞-范数在构建不确定集中的作用与差异;③学习两阶段鲁棒优化模型的建模思路与Matlab实现技巧,用于科研复现、论文写作或工程项目建模。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现细节,重点关注不确定集构建、两阶段模型结构设计及求解器调用方式,同时可尝试更换数据或调整约束参数以加深对模型鲁棒性的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值