OpenGl学习第三章 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

OpenGl学习第三章

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:43


上个礼拜进修了下金字塔的绘制,然后这周有看了看正方体的绘制,经由过程依次绘制6个面来绘制正方体,整体代码跟前次的金三角没有差别,只是坐标点,色彩,已经绘制的代码有点差别,上代码看看
//这是坐标
private static float[][] cubeVertexCoords = new float[][] {
new float[] { // top
1, 1,-1,
-1, 1,-1,
-1, 1, 1,
1, 1, 1
},
new float[] { // bottom
1,-1, 1,
-1,-1, 1,
-1,-1,-1,
1,-1,-1
},
new float[] { // front
1, 1, 1,
-1, 1, 1,
-1,-1, 1,
1,-1, 1
},
new float[] { // back
1,-1,-1,
-1,-1,-1,
-1, 1,-1,
1, 1,-1
},
new float[] { // left
-1, 1, 1,
-1, 1,-1,
-1,-1,-1,
-1,-1, 1
},
new float[] { // right
1, 1,-1,
1, 1, 1,
1,-1, 1,
1,-1,-1
},
};
//这是色彩
private static float[] cubeColors = new float[] {
0,1,0,1,
1,0.5f,0,1,
1,0,0,1,
1,1,0,1,
0,0,1,1,
1,0,1,1
};
然后必须要把呀转化为FloatBuffer  ,如许就可以应用了
private static FloatBuffer[] cubeVertexBfr;

private static FloatBuffer  cubeColorBfr;
转化我写了个转化的对象类
public  class BufferUtil {
private static FloatBuffer floatBuffer;

public static FloatBuffer  floatToBuffer(float[] f){

ByteBuffer  buffer  =ByteBuffer.allocateDirect(f.length*4);

buffer.order(ByteOrder.nativeOrder());
floatBuffer  =buffer.asFloatBuffer();
floatBuffer.put(f);
floatBuffer.position(0);
return floatBuffer;
}


下边是绘制的代码
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);//在上边打开鄙人边就要封闭,这个原因是然河畔的绘制不会复竽暌姑前边的色彩等的样式

gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
for (int i = 0; i < 6; i++) // draw each face
{
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, cubeVertexBfr[i]);

gl.glColorPointer(4, GL10.GL_FLOAT, 0, cubeColorBfr);
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 4);
}
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);

gl.glDisableClientState(GL10.GL_COLOR_ARRAY);

}

相关案例查看更多