当前位置: 首页 > news >正文

Android OpenGL ES详解——绘制圆角矩形

1、绘制矩形

代码如下:

renderer类:

package com.example.roundrectimport android.content.Context
import android.opengl.GLES30
import android.opengl.GLSurfaceView.Renderer
import com.opengllib.data.VertexArray
import com.opengllib.programs.ShaderProgram
import javax.microedition.khronos.egl.EGLConfig
import javax.microedition.khronos.opengles.GL10class RoundRectRenderer(context: Context) : Renderer {private var mVertices = floatArrayOf(-0.5f, -0.5f,0.5f, 0.5f,-0.5f, 0.5f,-0.5f, -0.5f,0.5f, -0.5f,0.5f, 0.5f,)private var mShaderProgram: ShaderProgram? = nullprivate var mContext = contextprivate var mVertexArray: VertexArray? = nulloverride fun onSurfaceCreated(gl: GL10?, config: EGLConfig?) {GLES30.glClearColor(0.6f, 0.7f, 0.8f, 1.0f)mVertexArray = VertexArray(mVertices)mShaderProgram = ShaderProgram(mContext,R.raw.roundrect_vertex_shader,R.raw.roundrect_fragment_shader)mShaderProgram?.useProgram()mVertexArray?.setVertexAttribPointer(0,mShaderProgram?.getPositionAttributeLocation()!!,2,0)}override fun onSurfaceChanged(gl: GL10?, width: Int, height: Int) {GLES30.glViewport(0, 0, width, height)}override fun onDrawFrame(gl: GL10?) {GLES30.glClear(GLES30.GL_COLOR_BUFFER_BIT)GLES30.glDrawArrays(GLES30.GL_TRIANGLES,0 ,mVertices.size / 2)}
}

顶点着色器文件roundrect_vertex_shader.glsl代码如下:

attribute vec4 a_Position;void main()
{gl_Position = a_Position;
}

片元着色器文件roundrect_fragment_shader.glsl代码如下:

precision mediump float;void main()
{gl_FragColor = vec4(0.8, 0.5, 0.3, 1.0);
}

2、绘制圆形

3、绘制圆角矩形

参考文章

使用OpenGL实现圆角效果-腾讯云开发者社区-腾讯云

http://www.lryc.cn/news/492425.html

相关文章:

  • 网络基础二
  • 从Full-Text Search全文检索到RAG检索增强
  • springMVC 全局异常统一处理
  • qt ubuntu i386 系统
  • BUUCTF—Reverse—helloword(6)
  • 深入解析下oracle date底层存储方式
  • Elasticsearch 开放推理 API 增加了对 IBM watsonx.ai Slate 嵌入模型的支持
  • 如何搭建一个小程序:从零开始的详细指南
  • NFS搭建
  • RNN与LSTM,通过Tensorflow在手写体识别上实战
  • Docker部署FastAPI实战
  • 【Python数据分析五十个小案例】电影评分分析:使用Pandas分析电影评分数据,探索评分的分布、热门电影、用户偏好
  • Vue2学习记录
  • TMS FNC UI Pack 5.4.0 for Delphi 12
  • Redis主从架构
  • logback动态获取nacos配置
  • KETTLE安装部署V2.0
  • [RabbitMQ] 保证消息可靠性的三大机制------消息确认,持久化,发送方确认
  • aws服务--机密数据存储AWS Secrets Manager(1)介绍和使用
  • Java设计模式笔记(一)
  • Unity3d C# 实现一个基于UGUI的自适应尺寸图片查看器(含源码)
  • 【es6进阶】vue3中的数据劫持的最新实现方案的proxy的详解
  • w~视觉~3D~合集3
  • IT服务团队建设与管理
  • 一文学习开源框架OkHttp
  • 自研芯片逾十年,亚马逊云科技Graviton系列芯片全面成熟
  • Stable Diffusion 3 部署笔记
  • 微信小程序WXSS全局样式与局部样式的使用教程
  • Docker 部署 MongoDB
  • Unity图形学之法线贴图原理