OpenGl学习第三章

简介:

上个星期学习了下金字塔的绘制,然后这周有看了看正方体的绘制,通过依次绘制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);

}




相关文章
|
7月前
|
C语言 开发者
[笔记]音视频学习之OpenGL篇《一》创建窗口
[笔记]音视频学习之OpenGL篇《一》创建窗口
|
9月前
|
存储 编解码 编译器
QT+ OpenGL学习
什么是opengl open graphics library 他是一个由Khronos组织制定并且维护的规范 opengl核心是一个c库,同时也支持多种语言的派生
111 0
|
小程序 C++ 索引
学习OpenGL之准备工作
学习OpenGL之准备工作
学习OpenGL之准备工作
|
Android开发
Android OpenGL例子学习
Android OpenGL例子学习
115 0
|
异构计算
学习OpenGL ES之VBO&VAO
学习OpenGL ES之VBO&VAO
|
知识图谱
学习OpenGL ES之透明和混合
学习OpenGL ES之透明和混合
学习OpenGL ES之透明和混合
|
图形学
学习OpenGL ES之基本纹理
学习OpenGL ES之基本纹理
学习OpenGL ES之基本纹理
|
缓存
学习OpenGL ES之绘制一个正方体
学习OpenGL ES之绘制一个正方体
学习OpenGL ES之绘制一个正方体