android opengl es 2.0 draw circle

这篇博客记录了如何在Android OpenGL ES 2.0中正确地画出圆形。作者指出,网上的教程要么基于1.0版本,要么无法直接运行。他分享了一个可用的实现方案,并针对原代码中的坐标问题进行了修正,确保能绘制出正圆。文章包含了关键类`Circle.java`和`MyGLRenderer.java`的使用。
摘要由CSDN通过智能技术生成

Android Opengl es 2.0 画圆,网上说原理的文章挺多的,但要么是1.0的实现,要么无法跑起来。发现一个可以跑起来的方案:http://www.java2s.com/Open-Source/Android_Free_Code/OpenGL/Shape/mkabatek_androidOpenGLShapes.htm。在此记录一下。

原文中由于没有进行坐标转换,所以画出来的圆不是正圆,下面的代码对此进行了更正。当然,你也可以用其他方式变换,比如:http://androidblog.reindustries.com/a-real-open-gl-es-2-0-2d-tutorial-part-1/上面的变换方式。

主要类如下:

Circle.java:

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import android.opengl.GLES20;
import android.util.Log;

public class Circle {
    static final int COORDS_PER_VERTEX = 3;

    private int mProgram, mPositionHandle, mColorHandle, mMVPMatrixHandle;
    private FloatBuffer vertexBuffer;
    private float vertices[];

    float color[] = {0.00f, 0.76953125f, 0.22265625f, 1.0f};
    private final int vertexCount = 364 * 3 / COORDS_PER_VERTEX;
    private final int vertexStride = COORDS_PER_VERTEX * 4; // 4 bytes per vertex

    private final String vertexShaderCode ="attribute vec4 vPosition;"
            + "uniform mat4 uMVPMatrix;"
            + "void main() {"
            + "  gl_Position = uMVPMatrix * vPosition;"
            + "}"
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值