[转载] glDrawArrays, glDrawElements
来源:互联网 发布:java将string写入文件 编辑:程序博客网 时间:2024/06/02 06:20
用户名:admin
名爵:扶正大臣
发帖:178 回帖:128
积分:103151 金币:0
注册:2010-01-23
/* 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
- Android Jamendo开源在线音乐播放器源码分析三 程序首界面
- 销售单-请购单-采购单连接SQL
- 使用Maven管理项目
- 一步一步写算法(之堆排序)
- 流氓打开窗口
- [转载] glDrawArrays, glDrawElements
- c语言字符串 数字转换函数大全
- 人为内存泄露程序
- NOIP-2009-B1 潜伏者
- Gallery结合案例详解
- cool
- 乔布斯语录
- 爱刻薄讥讽别人的人其实内心不幸福
- C#获取当前路径的方法