openGL学习笔记十一: 绘制带颜色的三角形

代码如下:


//顶点数据 包含 位置 颜色
struct  Vertex {
	float   x, y, z;
	float   r, g, b;
};

//opengl 绘制
static void render(GLFWwindow * window) {

	glClearColor(0, 0, 0, 1);
	glClear(GL_COLOR_BUFFER_BIT);

	//设置三角形顶点及颜色数据
	Vertex  rect[]  =
	{
		{ 10, 10, 0, 1, 0, 0 },  //颜色可以用0~1表示,也可以用0~255表示 
		{ 110, 10, 0, 0, 1, 0 },
		{ 10, 110, 0, 0, 0, 1 },
	};

	glEnableClientState(GL_VERTEX_ARRAY); // 启用顶点数组
	glEnableClientState(GL_COLOR_ARRAY);  // 启用颜色数组

	glVertexPointer(3, GL_FLOAT, sizeof(Vertex), rect); //指定顶点数据位置 传输顶点数据
	glColorPointer(3, GL_FLOAT, sizeof(Vertex), &rect[0].r); //指定颜色数据位置 传输颜色数据
	glDrawArrays(GL_TRIANGLES, 0, 3); //绘制三角形带


	//设置三角形顶点及颜色数据
	Vertex  rect1[]  =
	{
		{ 10, 10, 0, 1, 0, 0 },
		{ 110, 10, 0, 0, 1, 0 },
		{ 10, 110, 0, 0, 0, 1 },
	};

	//对顶点数据进行偏移
	for(int i = 0; i < 3; ++i) {
		rect1[i].x += 300;
	}

	glVertexPointer(3, GL_FLOAT, sizeof(Vertex), rect1);
	glColorPointer(3, GL_FLOAT, sizeof(Vertex), &rect1[0].r);

	glDrawArrays(GL_TRIANGLES, 0, 3);

	glfwSwapBuffers(window);
	glfwPollEvents();
}

运行结果:

openGL学习笔记十一: 绘制带颜色的三角形_第1张图片

你可能感兴趣的:(#,1.7,OpenGL)