看opengl写代码(5) 使用顶点数组

使用顶点数组 可以 减少 opengl函数的 调用次数   以及共享 顶点,提高 效率。 总共 有 8组 数组,他们 是 顶点,颜色,辅助颜色,索引,法线,雾坐标,纹理坐标,边界标记。关于 每个数组的 存放 既可以 单独 存放 在数组里,也 可以 把 这些属性 作为 一个 集合 放入 数组中。

下面给出 代码:

// circle.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <gl/glut.h>
#include <cmath>
#define LENGTH	100
#define PI		3.1415926

GLfloat vertexArray[] = {0,0,0,
					1,1,0,
					0.5,0,0,
					-0.5,0.5,0,
};

GLfloat colorArray[] = {
		1,0,0,
		0,1,0,
		0,0,1,
		0,1,1,
};

GLfloat vexColArray[] = {
	0,0,0, 1,0,0,
	0.5,0.5,1, 0,1,0,
	0.2,-1,0, 0,0,1
};

void init(){
	glClearColor(0,0,0,0);
	//启用顶点 和 颜色 数组
	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_COLOR_ARRAY);
	//指定数组
	//glVertexPointer(3,GL_FLOAT,0,vertexArray);
	//glColorPointer(3,GL_FLOAT,0,colorArray);
	glVertexPointer(3,GL_FLOAT,sizeof(GLfloat)*6,vexColArray);
	glColorPointer(3,GL_FLOAT,sizeof(GLfloat)*6,&vexColArray[3]);
}

void display(){
	glColor3f(1.0,0,0);
	glClear(GL_COLOR_BUFFER_BIT);
	//解引用 和 渲染
	glBegin(GL_TRIANGLES);
	glArrayElement(0);
	glArrayElement(2);
	glArrayElement(1);
	glEnd();
	glFlush();
}

int _tmain(int argc, _TCHAR* argv[])
{
	glutInit(&argc,(char **)argv);
	glutInitDisplayMode(GLUT_RGB);
	glutInitWindowSize(500,500);
	glutInitWindowPosition(100,100);
	glutCreateWindow("顶点数组");
	init();
	glutDisplayFunc(display);
	glutMainLoop();
	return 0;
}
运行截图:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值