glDrawArrays, glDrawElements
来源:互联网 发布:java 树形结构 编辑:程序博客网 时间:2024/05/24 04:50
/* Enable vertex arrays. */
glEnableClientState( GL_VERTEX_ARRAY );
/* Enable texture arrays. */
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
GL_LINES
GL_LINE_LOOP
GL_LINE_STRIP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
const GLfloat squareVertices[] = {
-1.0, 1.0, -6.0, // Top left
-1.0, -1.0, -6.0, // Bottom left
1.0, -1.0, -6.0, // Bottom right
1.0, 1.0, -6.0 // Top right
};
GL_LINE_STRIP - 连贯地将直线画出来。行为和 GL_TRIANGLE_STRIP 类似。
squareVerticies[0] x坐标
squareVerticies[1] y坐标
squareVerticies[2] z坐标
1) 在 GL_TRIANGLE_STRIP 状态下是: P2、P1、P0 ; P3、P2、P1 这2个三角形。
2) 在 GL_TRIANGLE_FAN 状态下是: P2、P1、P0 ; P3、P2、P0 这2个三角形。
glDrawArrays specifies multiple geometric primitives with very few subroutine calls. You can prespecify separate arrays of vertices, normals, colors, and texture coordinates and use them to construct a sequence of primitives with a single call to glDrawArrays.
示例代码:
glEnableClientState(GL_VERTEX_ARRAY);
const GLfixed vers[] = {
F2X(0.25), F2X(0.25), F2X(0.0),
F2X(0.75), F2X(0.25), F2X(0.0),
F2X(0.25), F2X(0.75), F2X(0.0),
F2X(0.75), F2X(0.75), F2X(0.0),
};
glVertexPointer(3, GL_FIXED, 0, vers);
glDrawArrays(GL_LINE_STRIP, 0, 4);
eglSwapBuffers(iGlDisp, iGlSurface);
结果:
GLenum mode,
GLsizei count,
GLenum type,
const GLvoid *indices
);
mode 指定绘制图元的类型,但是如果GL_VERTEX_ARRAY 没有被激活的话,不能生成任何图元。它应该是下列值之一:
GL_POINTS, GL_LINE_STRIP,
GL_LINE_LOOP, GL_LINES,
GL_TRIANGLE_STRIP,
GL_TRIANGLE_FAN,
GL_TRIANGLES,
GL_QUAD_STRIP,
GL_QUADS,
GL_POLYGON
count 为绘制图元的数量。
GL_UNSIGNED_BYTE,
GL_UNSIGNED_SHORT,
GL_UNSIGNED_INT
indices:指向索引数组的指针。
glDrawElements函数能够通过较少的函数调用绘制多个几何图元,而不是通过OPENGL函数调用来传递每一个顶点,法线,颜色信息。
例如,在 GL_COLOR_ARRAY 被激活后,当glDrawElements执行完成时,当前的颜色值是没有指定的。没有被修改的属性值保持不变。
示例代码如下:
// The vertex array is enabled for writing and used during rendering.
glEnableClientState(GL_VERTEX_ARRAY);
// 顶点坐标数组
const GLfixed vers[] = {
F2X(0.25), F2X(0.25), F2X(0.0), // 第1个顶点坐标
F2X(0.75), F2X(0.25), F2X(0.0), // 第2个顶点坐标
F2X(0.25), F2X(0.75), F2X(0.0), // 第3个顶点坐标
F2X(0.75), F2X(0.75), F2X(0.0) // 第4个顶点坐标
};
glVertexPointer(
3, // 表示每一个顶点由3维坐标构成
GL_FIXED, // 顶点坐标数组中的元素是 GL_FIXED 类型
0, // 从顶点坐标数组的第0个元素开始读取数据
vers // 指向顶点坐标数组的指针
);
// 等效替换 glDrawArrays(GL_TRIANGLE_STRIP, 0, 4) ++
/* 索引数组. 此索引数组表示依次是
第0个顶点{F2X(0.25), F2X(0.25), F2X(0.0)},
第1个顶点{F2X(0.75), F2X(0.25), F2X(0.0)},
第2个顶点{F2X(0.25), F2X(0.75), F2X(0.0)},
第3个顶点{F2X(0.75), F2X(0.75), F2X(0.0)} */
const GLubyte indices[] = {0, 1, 2, 3};
glDrawElements(
GL_TRIANGLE_STRIP, // 绘图模式
4, // 依次从索引数组中读取4个顶点来进行绘制
GL_UNSIGNED_BYTE, // 索引数组中存放的元素的类型
indices // 指向索引数组的指针
);
// 等效替换 glDrawArrays(GL_TRIANGLE_STRIP, 0, 4) --
eglSwapBuffers(iGlDisp, iGlSurface);
- glDrawArrays, glDrawElements
- [转载] glDrawArrays, glDrawElements
- glDrawArrays 和 glDrawElements 区别?
- glDrawArrays,glDrawElements用法
- glDrawArrays、glDrawElements区别
- glDrawElements和glDrawArrays
- OpenGL: glDrawArrays & glDrawElements
- glDrawArrays与glDrawElements
- glDrawArrays 和 glDrawElements 区别?
- 顶点数组, glDrawArrays,glDrawElements - [OpenGL]
- OPENGL顶点数组, glDrawArrays,glDrawElements
- 绘制方法---glDrawArrays与glDrawElements
- OPENGL顶点数组, glDrawArrays,glDrawElements
- OPENGL顶点数组, glDrawArrays,glDrawElements (转)
- glDrawArrays与glDrawElements的功能与区别
- 看opengl写代码(6)glArrayElement,,glDrawElements和glDrawArrays
- glDrawArrays
- 【Android开发学习16】Android OpenGL ES 关于glDrawArrays和glDrawElements
- 整机很烫,找不到i2c设备等原因
- 指名要学的
- android Gallery去掉滑动惯性效果
- IOS开发网站汇总
- 无缝滚动图片、跑马灯、浏览器是否IE
- glDrawArrays, glDrawElements
- 进程和线程
- 数组连乘问题
- HTML的学习一:
- 通过MinGW实现在windows上面使用gcc
- jquery第十二期:CSS样式
- 使用ab对nginx进行压力测试
- json_value.asm: No such file or directory
- Android拍照,上传,预览综合【修改】