看opengl写代码(7) 使用混合数组(glInterLeavedArrays)

glInterLeavedArrays 函数  有 三个 参数 : mode ,stride,pointer。

mode :指示 开启 哪些 顶点数组,以及 顶点数组 使用的 数据类型。其余的 顶点数组 关闭。总共有14组。具体 可以 参加 《OPENGL 编程指南》2.6.6混合数组 小节。

stride: 指示了 顶点 数据 之间的 间隔。一般 为0

pointer: 指针,指向 顶点数组 数据。

使用 glInterLeavedArrays  会 提高 应用程序的性能。并且 数据 的准确布局 是 已知的,减少了  错误的 可能性。但是 glInterLeavedArrays  不是 绘制 函数,所以 在调用之后 还必须 调用 类似 glDrawArrays,glDrawElements,之类的 函数。

下面 上代码:

// 混合数组.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <gl/glut.h>

void init(){
	glClearColor(0,0,0,0);
}

void display(){
	glClear(GL_COLOR_BUFFER_BIT);
	GLfloat  colVerArray[] = {
		1,0,0,	-0.5,0,0,
		0,1,0,	0,0,0.5,
		0,0,1,	0.2,0.8,0,
	};
	glInterleavedArrays(GL_C3F_V3F,0,colVerArray);
	glDrawArrays(GL_TRIANGLE_STRIP,0,3);
	glFlush();
}

int _tmain(int argc, _TCHAR* argv[])
{
	glutInit(&argc,(char **) argv);
	glutInitWindowSize(500,500);
	glutInitWindowPosition(100,100);
	glutCreateWindow("使用混合数组");
	init();
	glutDisplayFunc(display);
	glutMainLoop();
	return 0;
}

运行截图:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-16 14:33:05

看opengl写代码(7) 使用混合数组(glInterLeavedArrays)的相关文章

看opengl写代码(10) 使用属性数组

众所周知,OPENGL 是一个状态机,有很多 各种 各样的 状态.我们 可以 使用 属性数组 来 保存 / 恢复 一组 状态.总共 有 20组 服务器属性组  和 2组 客户端属性组. 关于 这些属性组 里 有哪些 属性. 这个网站 详细 说明了: http://www.cnblogs.com/oiramario/archive/2010/04/13/1711114.html glPushAttrib(mask) :参数 mask  代表着 某种属性组: 函数 将 属性组 的 当前 属性 入栈.

看opengl写代码(3) 实现矩阵的旋转

参考   opengl编程指南   P17    直接上代码: <span style="font-size:18px;">// doubleBuffer.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <gl/glut.h> static GLint spin = 0; void init(){ glClearColor(0.0,0.0,0.0,0.0); glShadeModel(

看openGl写代码(11) 第一个 三维物体

1.在 写这段 程序 的 一开始 ,图形 没有 出来,因为 在 reShape函数 没写 投影矩阵的 函数: 2.还有 这段程序 我跟踪了 一下,首先  执行 reShape ,然后 才是 disPlay 函数,挺奇怪的. 等待 以后自己解答!如果 有好心的 博友 解答就是 极好的了. 学习了 新的 几个 OPENGL 函数.但是 对于 为什么 图形 会这样, 不明白!!! void gluLookAt(GLdouble eyex,GLdouble eyey,GLdouble eyez,GLdo

看opengl写代码(6)glArrayElement,,glDrawElements和glDrawArrays

glArrayElement,,glDrawElements和glDrawArrays: 这三个 都是 使用 顶点 数组 绘制的 OpenGl函数. glArrayElement 每次 只能 使用 一组 顶点数据,并且 必须 在 GLbegin 和 glend 之间 绘制. glDrawElements 每次 可以 绘制 多组 顶点数据,顺序 可以 任意 存放,无  glBegin 和 glend 的限制. glDrawArrays 每次 可以绘制 多组顶点数据,必须 从 起点 到 终点 按顺序

看opengl 写代码(4) 画一个圆

opengl 编程指南 P30 下面代码 是 用 直线 连起来 画一个圆. // circle.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <gl/glut.h> #include <cmath> #define LENGTH 100 #define PI 3.1415926 void init(){ glClearColor(0,0,0,0); } void display(){ glColor3f

看 opengl 写代码(1) 搭建开发环境(vs2012 + glut)

博主 无私奉献:(vs2012 + glut) 开发 环境 配置 序:看到本文章,祝贺你,你至少省掉了 1 个小时 苦苦寻找 搭建 方法的时间. 下面搭建方法为本博主 亲测.有事 可以 留言 或者 私密我. 1.从我的网盘里 下载 glut http://pan.baidu.com/s/1dDGYnp3 2.下载完 以后 ,会 有 5个 文件 和 一个 说明 txt 具体 操作 如下: 32位Windows环境下安装GLUT的步骤 1.将glut.h复制到C:\Program Files (x8

看数据结构写代码(19) 数组的实现

数组是 一种 使用广泛 的数据结构,任何编程语言都有数组.其本质上 是 线性表,一维数组 是 一个线性表,多维数组是多组 线性表. 其 便利性 就在于 查找 和 赋值 方便.所以 就没必要 用 链式存储方式. 下面 给出 数组的实现代码: // Array.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdlib.h> #include <stdarg.h> #define ARRAY_MAX_DI

看数据结构写代码(32) 赫夫曼树编码以及译码

杂谈:最近有点慵懒,不好不好.好几天都没写代码,原本准备上星期完结 树 这一章节的.现在 又耽误了.哎.要抓紧时间啊. 下面直接上代码: 可以到我的网盘下载源代码,或者 直接拷贝下面的源代码 运行 网盘地址:点击打开链接 // HuffmanTree.cpp : 定义控制台应用程序的入口点. //哈弗曼编码,译码 #include "stdafx.h" #include <stdlib.h> #include <cstring> enum E_State { E

看数据结构写代码(50)伙伴系统

伙伴系统 是一种 只 可以 分配 2的 幂次方 个 空间的 ,回收 内存 时 只 合并 "伙伴空间" 的一种 动态内存管理方式. 例如 一个 空间 大小 为 64 的 内存,伙伴 系统 为 这 64 的内存  建立 一组 双向循环 链表,分别 管理着  2的 0 次方,2的1 次方幂,2的 2 次方幂...2的6次方幂的 可用空间. 即使 我们 只想分配 一个 大小 为3的 空间,系统 却 只能 返回 一个 内存 大小 为 4(2的2次方)的 一个空间. 系统 在 初始化的 时候 ,并