openGL学习笔记02--绘制顶点

本教程通过实例演示了如何使用OpenGL和GLUT库初始化一个简单的控制台应用,包括设置绘图环境、创建顶点缓冲对象及绘制基本图形。
// tutorial2.cpp : 定义控制台应用程序的入口点。
/*
这里一定要注意include的顺序
#include "stdafx.h"一定要放在最顶端!
#include <GL/glew.h>一定要放在#include <GL/freeglut.h>之前!!
*/
#include "stdafx.h"
#pragma comment(lib, "glew32.lib")
#include <GL/glew.h>
#include <ogldev_math_3d.h>
#include <GL/freeglut.h>

GLuint VBO;//定义一个全局的GLuint引用变量,来操作顶点缓冲器对象--GLuint 就是正整形,和C里面的unsigned int 一样
static void RenderSceneCB(){
	glClear(GL_COLOR_BUFFER_BIT);//清空颜色缓存

	glEnableVertexAttribArray(0);//开启顶点属性

	glBindBuffer(GL_ARRAY_BUFFER, VBO);//绑定缓冲区

	glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);//管线如何在缓冲区内部解释数据,第一个参数指定索引,第二个参数构成属性的分量个数(X,Y,Z共3个)第三个参数指定每个分量的数据类型 第四个指定在管线使用前是否与要规范化 第五个参数表示两个相同属性的间隔(步长) 第六个参数缓存区中存储数据的偏移值
	
	glDrawArrays(GL_POINTS, 0, 2);////绘制 第一个参数:绘制类型为gl_points 画点,第二个参数 第一个顶点的索引值 第三个参数 画点个数,

	glDisableVertexAttribArray(0);//当不需要使用顶点时 禁用顶点

	glutSwapBuffers();
}



static void CreateVertexBuffer()
{
	// 创建含有一个顶点的顶点数组
	Vector3f Vertices[2];
	// 画两个点
	Vertices[0] = Vector3f(0.0f, 0.0f, 0.0f);
	Vertices[1] = Vector3f(0.1f, 0.1f, 0.1f);

	// 创建缓冲器---glGenBuffers(NUM_BUFFER,buffers);
	glGenBuffers(1, &VBO);

	// 绑定GL_ARRAY_BUFFER缓冲器
	glBindBuffer(GL_ARRAY_BUFFER, VBO);

	//填充buffer数据 gl_static_draw/gl_dynamic_draw 指定画的方式
	glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);
}
int main(int argc, char **argv){
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
	glutInitWindowSize(1024, 768);
	glutInitWindowPosition(100, 100);
	glutCreateWindow("Tutorial 02");
	
	glutDisplayFunc(RenderSceneCB);

	GLenum res = glewInit();
	if (res != GLEW_OK){
		fprintf(stderr, "Error '%s'\n", glewGetErrorString(res));
		return 1;
	}
	// 缓存清空后的颜色值
	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

	// 创建顶点缓冲器
	CreateVertexBuffer();

	// 通知开始GLUT的内部循环
	glutMainLoop();

	return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值