glDrawArrays画正方体和圆

mode
GL_POINTS - 单独的将顶点画出来
GL_LINES - 单独地将直线画出来,每两个点画一条直线
GL_LINE_STRIP - 将所有顶点连成直线
GL_LINE_LOOP -将所有顶点连成直线,但是会自动将最后一个顶点和第一个顶点通过直线连接起来。
GL_TRIANGLES - 使用三个顶点来组成图形,所以,在开始的三个顶点,将用顶点1,顶点2,顶点3来组成一个三角形。完成后,在用下一组的三个顶点(顶点4,5,6)来组成三角形,直到数组结束。
GL_TRIANGLE_STRIP - 使用将最开始的两个顶点出发,然后遍历每个顶点,这些顶点将使用前2个顶点一起组成一个三角形。

GL_TRIANGLE_FAN - 在跳过开始的2个顶点,然后遍历每个顶点,让OpenGL将这些顶点于它们前一个,以及数组的第一个顶点一起组成一个三角形


画正方体比较简单,分六组画四个正方形即可。

画圆自己2了,先想到从圆心发起的三角形,用GL_TRIANGLE_FAN画一圈即可,在使用Math时,犯2似的直接把参数当成了度数。结果居然还画出来了,发现圆边上棱角比较严重。于是改成GL_POINTS看一下,结果点发现居然是OK的,再改成GL_LINES,才明白肯定是Math用错了,网上找了一个看一下,入参应该是弧度。改好后再去看了一下网上的例子,不用从圆心画,从圆上的任意一个点画与其他所有点画三角形都可以,以下是初始化,toRadians是将角度改成弧度,然后slices是可以将360度切成多少份,每份2个点2个坐标,所以X4,欧了。

private static int  slices     = 720 * 4; // 720个点

vertices = new float[slices];
for (int i = 0; i < slices; i += 2) {
      vertices[i] = (float) (Math.cos(toRadians(i * 720.0 / slices)) * 1);
      vertices[i + 1] = (float) (Math.sin(toRadians(i * 720.0 / slices)) * 1);
}

明天再来画球形吧~慢慢学习,每天进步一点点=,=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值