Android OpenGL ES 开发教程(9):绘制点Point

OpenGL ES之四——绘制点,线,三角形 概述 上一篇中介绍了使用OpenGL ES的使用流程,完成了纯色背景的绘制。但是其中没有涉及具体几何形状所以并没有使用到顶点着色器和片段着色器,这篇文章中将着重介绍。 绘制步骤如下: 1.配置OpenGL ES环境:在AndroidManifest.xml文件中设置使用的OpenGL ES的版本: <!-- Tell the system this app requires OpenGL E... 阅读详情

上一篇介绍了OpenGL ES能够绘制的几种基本几何图形:点,线,三角形。将分别介绍这几种基本几何图形的例子。为方便起见,暂时在同一平面上绘制这些几何图形,在后面介绍完OpenGL ES的坐标系统和坐标变换后,再介绍真正的3D图形绘制方法。

在Android OpenGL ES 开发教程(7):创建实例应用OpenGLDemos程序框架 创建了示例应用的程序框架,并提供了一个“Hello World”示例。

为避免一些重复代码,这里定义一个所有示例代码的基类OpenGLESActivity,其定义如下:

public class OpenGLESActivity extends Activity
 implements IOpenGLDemo{
 
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 this.requestWindowFeature(Window.FEATURE_NO_TITLE);
 getWindow().setFlags(
 WindowManager.LayoutParams.FLAG_FULLSCREEN,
 WindowManager.LayoutParams.FLAG_FULLSCREEN);
 
 mGLSurfaceView = new GLSurfaceView(this);
 mGLSurfaceView.setRenderer(new OpenGLRenderer(this));
 setContentView(mGLSurfaceView);
 }
 
 public void DrawScene(GL10 gl) {
 gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
 // Clears the screen and depth buffer.
 gl.glClear(GL10.GL_COLOR_BUFFER_BIT
 | GL10.GL_DEPTH_BUFFER_BIT);
 
 }
 
 @Override
 protected void onResume() {
 // Ideally a game should implement onResume() and onPause()
 // to take appropriate action when the activity looses focus
 super.onResume();
 mGLSurfaceView.onResume();
 }
 
 @Override
 protected void onPause() {
 // Ideally a game should implement onResume() and onPause()
 // to take appropriate action when the activity looses focus
 super.onPause();
 mGLSurfaceView.onPause();
 }
 
 protected GLSurfaceView mGLSurfaceView;
 
}
  • 在onCreate 方法中创建一个GLSurfaceView mGLSurfaceView,并将屏幕设置为全屏。并为mGLSurfaceView设置Render.
  • onResume ,onPause 处理GLSurfaceView 的暂停和恢复。
  • DrawScene 使用黑色清空屏幕。

    OpenGL ES 内部存放图形数据的Buffer有COLOR ,DEPTH (深度信息)等,在绘制图形只前一般需要清空COLOR 和 DEPTH Buffer。

    本例在屏幕上使用红色绘制3个点。创建一个DrawPoint 作为 OpenGLESActivity 的子类,并定义3个顶点的坐标:

    public class DrawPoint extends OpenGLESActivity
     implements IOpenGLDemo{
     
     float[] vertexArray = new float[]{
     -0.8f , -0.4f * 1.732f , 0.0f ,
     0.8f , -0.4f * 1.732f , 0.0f ,
     0.0f , 0.4f * 1.732f , 0.0f ,
     };
     
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     
     }
     
     ...
     
    }

    下面为DrawPoint 的DrawScene 的实现:

    public void DrawScene(GL10 gl) {
     super.DrawScene(gl);
     
     ByteBuffer vbb
     = ByteBuffer.allocateDirect(vertexArray.length*4);
     vbb.order(ByteOrder.nativeOrder());
     FloatBuffer vertex = vbb.asFloatBuffer();
     vertex.put(vertexArray);
     vertex.position(0);
     
     gl.glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
     gl.glPointSize(8f);
     gl.glLoadIdentity();
     gl.glTranslatef(0, 0, -4);
     
     gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
     
     gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertex);
     gl.glDrawArrays(GL10.GL_POINTS, 0, 3);
     
     gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
     
    }
  • 首先是使用FloatBuffer 存放三个顶点坐标。
  • 使用glColor4f(float red, float green, float blue, float alpha) 将当前颜色设为红色。
  • glPointSize(float size) 可以用来设置绘制点的大小。
  • 使用glEnableClientState 打开Pipeline 的Vectex 顶点“开关”
  • 使用glVertexPointer 通知OpenGL ES图形库顶点坐标。
  • 使用GL_POINTS 模式使用glDrawArrays绘制3个顶点。

    本例下载


     


     

     

如何在Android上使用OpenGL ES 2.0绘制点。 如何在Android使用OpenGL ES 2.0绘制点,看上去并不是一个复杂的问题,但是上网一搜,满眼都是绘制点的代码。 如果你看到类似如下代码,基本上你已经掉坑里了。   glBeging();  ...  glDrawPoint(...);  ...  glEnd(); 如上是使用OpenGL ES 1.0绘制点的代码。因为架构不同,在OPENGL ES 2.0的世界里 阅读详情

相关推荐

FFmpeg之OpenGL绘制与Native Window绘制(五)

简述–OpenGL可以支持很多不同的图元类型,最基础的为点,线,或三角形。线和三角形可以组合成条带,循环体或者扇面三角形。点,线,或三角形也是大部分图象硬件设备支持的基础图元类型。点可以通过单一的顶点来表示,点实际上不存在面积,在OpenGL中它通过屏幕上的一个矩形区域来模拟,在渲染点源的时候,OpenGL会通过光栅化规则类判断点的位置。以点位中心绘制一个四边形区域,四边形区域的边长等于点的大小,它是一个固定的状态,可以调用函数glPointSIze()设置。OPenGL渲染点的时候,每个点的片元的会执行片

2401_89284288的博客 1001

Android OpenGL ES(八):绘制点Point

上一篇介绍了OpenGL ES能够绘制的几种基本几何图形:点,线,三角形。将分别介绍这几种基本几何图形的例子。为方便起见,暂时在同一平面上绘制这些几何图形,在后面介绍完OpenGL ES的坐标系统和坐标变换后,再介绍真正的3D图形绘制方法。 在Android OpenGL ES(六):创建实例应用OpenGLDemos程序框架 创建了示例应用的程序框架,并提供了一个“Hello Worl

jackie03的专栏 2728

Android OpenGL ES分小块贴图并画点画线(10x10矩形)

Android贴图、在此基础上画点,画线。贴图分为10x10矩形

Android OpenGL ES学习笔记之绘制点

一些基本概念 世界坐标系 世界坐标系就是3D绘图中像素的坐标。在3D绘图中,坐标轴遵循右手法则,让你右手手心正对自己,大拇指指向X轴正方向,拇指指向Y轴正方向,中指指向Z轴正方向。如下图所示点的表示 空间中一个点具有(x,y,z)坐标。在Android系统中,可以用一个float数组、int数组等来表示一个点,比如private float[] mArray = { 0f, 0f, 0f };而在

Dennis-Android的博客 7164

偏最小二乘结构方程(PLS-SEM)_TomatoSCI分析日记

①模型整体拟合指标(Goodness-of-Fit, GOF),这个可以看做整体的R方了,上限是1;②指标载荷的具体值;然而,当数据中包含潜变量(即由多个观测指标组合而成的综合概念)时,贝叶斯结构方程不太适用。指标过少(1-2 个)会削弱潜变量的解释力,而指标过多可能增加噪声,影响模型稳定性。如果指标较多,可考虑进一步划分潜变量,但应确保每个指标有意义。掌握这两类方法后,在处理多变量、因果或路径分析研究时,可以根据数据特点与研究需求灵活选择。对于一般的多变量研究,这两类结构方程均为常用且有效的分析方案。

qq_44684643的博客 2012

盘点那些好用的SAP FIORI App(二) -上传凭证Upload Journal Entry

SAP FICO运维问题及解决方案分享

lijinbao171022的博客 1545

我的android——OpenGL(2)——gl10方法解析

javax.microedition.khronos.opengles 接口GL10 上级接口:GL 下级接口:GL11 公共接口GL10继承于GL GL10接口包含了Java(TM)程序语言为OpenGL绑定的核心功能。OES_byte_coordinates,OES

6788

嵌入式STM32控制电梯面板

嵌入式STM32控制电梯面板 用点阵来显示电梯向上还是向下运动,用数码管来显示楼层数(由于灯阵显示楼层数比较困难故用数码管代替)。当按下对应的按钮,就可以去到对应层数,可上升可下降。 #include "stm32f10x.h" #include "stm32f10x_exti.h" #include "stm32f10x_it.h" #define uint unsigned int #define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10) #define

code_init_的博客 2112

OpenGL ES for Android 绘制一个点

在Android中开发OpenGL ES的应用程序是无法调试 shader代码的,因此绘制点是一个很好的调试方法,为了定位问题经常会将一些结果输出的屏幕上,比如人脸识别关键点项目,想要确定人脸关键点是否正确,将关键点绘制在人脸对应位置上可以很好的展示人脸关键点正确与否。 下面将会完成绘制一个点,点的颜色由应用程序确定,顶点shader代码如下: attribute vec4...

老孟Flutter 1645

嵌入式Linux Qt应用程序卡死问题分析记录

根据应用和系统层面的分析,软件功能异常和卡死现象的原因是系统控制台/dev/console阻塞导致依赖其的相关应用和命令异常。系统控制台/dev/console阻塞的原因还未确定,最近的软件版本和其他测试同事未出现该问题,所以很大可能是串口线的问题,待后续有进展了继续更新。

V10_x的博客 1649

[STC32G144K246入门第一步]点亮LED

STC32G144K246是一款高性能32位8051单片机,集成了丰富外设资源,适用于工业控制和复杂算法处理。该芯片支持双模式内核,内置硬件加速器,提供246KB Flash和144KB SRAM存储空间。文章详细介绍了开发环境搭建步骤、寄存器配置方法,并给出了LED驱动示例代码,通过推挽输出控制P42口实现闪烁效果。虽然开发环境相比ARM存在不足,但通过合理配置仍可满足项目需求。该教程为开发者快速上手STC32G144K246提供了实用参考。

sinat_58149788的博客 800

android opengl es 3.0教程,android opengl es 开发教程.pdf(3)

 type: 顶点的数据类型,可以为GL_BYTE, GL_SHORT, GL_FIXED,或GL_FLOAT ,缺省为浮点类型GL_FLOAT 。 stride: 每个相邻顶点之间在数组中的间隔(字节数),缺省为0,表示顶点存储之间无间隔。 pointer: 存储顶点的数组。 应用用上可以般顶点的颜色值存放在对应顶点后面,如下图,RGB 采用4字节 表示,此时相邻顶点就不是连续存...

weixin_39708822的博客 579

MongoDB分布式事务实现:两阶段提交、日志复制与冲突解决

MongoDB分布式事务机制解析 本文深入剖析了MongoDB 4.0+版本的分布式事务实现原理,重点分析了其在跨文档/跨集合/跨分片场景下的数据一致性解决方案。核心内容包括: 底层机制:采用改进的两阶段提交协议,通过oplog日志复制实现无中心协调器的事务管理,结合WiredTiger存储引擎和锁机制保障ACID特性。 创新设计:将传统2PC的中心协调功能分散到Primary节点,利用oplog作为事务状态记录,实现自动故障恢复和60秒超时回滚机制。 性能优化:针对大事务、写冲突等常见问题,提出拆分微事务

数据知道的博客 1261

Android OpenGL ES (九)多纹理绘制

基本原理 1. 多次绘制,单纹理单元 之前我们在第三节基础图形绘制的时候有推导出一个结论: 上面的示例图中,在onDrawFrame里,同时绘制了点、线、三角形,也就是多次调用glDrawArrays,并且绘制出来了。 我们暂时定义glDrawArrays是进行一次图元组装,也就是绘制一个图层,那么一次onDrawFrame只绘制一帧,而这一帧可以绘制多种图元,多个图层。 也就是:一次只绘...

android开发笔记 3317

15、SQL Server查询优化与CPU负载管理

本文深入探讨了SQL Server查询优化与CPU负载管理的关键技术,包括强制连接类型的使用、键查找问题的解决、索引设计的最佳实践、高CPU负载的排查与优化,以及并行性的利弊与调整策略。通过优化查询逻辑、合理设计索引、监控与管理CPU资源,可以显著提升SQL Server的性能和稳定性。适用于数据库开发人员和DBA进行性能调优参考。

pz8901234的博客 80

SPICE框架:自博弈提升大语言模型推理能力

自博弈训练是提升大语言模型推理能力的前沿技术,其核心思想是通过模型自我对话实现持续迭代优化。SPICE框架创新性地采用文档驱动的自博弈机制,结合思维链提示和迭代式上下文扩展,显著提升模型在数学证明、逻辑推理等复杂任务中的表现。该技术在代码生成、金融分析等工程场景中展现出23%-41%的性能提升,其关键技术包括多样性控制、质量过滤和记忆管理。随着与RLAIF等强化学习方法的结合,这种训练范式正在推动大模型向更接近人类思维方式的推理能力进化。

weixin_28686771的博客 403
上一篇: Android测试教程(9):ApplicationTestCase示例
下一篇: 基于Android NFC的门票系统
引路蜂
博客等级 码龄16年 3122粉丝 711原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值