一、OpenGL基本渲染步骤

获取当前渲染环境OpenGL信息

const GLubyte *renderer = glGetString( GL_RENDERER ); //具体渲染器,例如:ATI Radeon HD 5600 Series

const GLubyte *vendor = glGetString( GL_VENDOR ); //OpenGL实现的产商

const GLubyte *version = glGetString( GL_VERSION ); //open版本

const GLubyte *glslVersion = glGetString( GL_SHADING_LANGUAGE_VERSION ); //glsl版本

GLint major, minor;

glGetIntegerv(GL_MAJOR_VERSION, &major); //gl大版本(整型)

glGetIntegerv(GL_MINOR_VERSION, &minor); //gl小版本(整型)

//测试数据

float positionData[] = {
    -0.8f, -0.8f, 0.0f,
     0.8f, -0.8f, 0.0f,
     0.0f,  0.8f, 0.0f };
float colorData[] = {
    1.0f, 0.0f, 0.0f,
    0.0f, 1.0f, 0.0f,
    0.0f, 0.0f, 1.0f };
//定义相应对象
GLuint vao, vbo_pos, vbo_col;
//生成vao并保存句柄
glGenVertexArrays(1, &vao);
//生成vbo并保存句柄
glGenBuffers(1, &vbo_pos);
glGenBuffers(1, &vbo_col);
//绑定vbo数据
glBindBuffer(GL_ARRAY_BUFFER, vbo_pos);
glBufferData(GL_ARRAY_BUFFER, sizeof(positionData), positionData, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, vbo_col);
glBufferData(GL_ARRAY_BUFFER, sizeof(colorData), colorData, GL_STATIC_DRAW);
/*
glVertexAttribPointer(
   0,                  // 对应layout变量
   3,                  // 每次获取数据个数
   GL_FLOAT,           // 数据类型
   GL_FALSE,           // 是否归一化
   0,                  // 步长,即间隔多长距离获取下次数据间隔
   (void*)0            // 数据偏移
);
*/
//绑定并开始操作当前vao
glBindVertexArray(vao);
//设置数据到shader对应layout变量
glEnableVertexAttribArray(0); //开启layout = 0,位置数据
glBindBuffer(GL_ARRAY_BUFFER, vbo_pos);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (GLvoid*)0);
glEnableVertexAttribArray(1); //开启layout = 1,颜色数据
glBindBuffer(GL_ARRAY_BUFFER, vbo_col);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (GLvoid*)0);
//vbo操作完毕处理解绑
glBindBuffer(GL_ARRAY_BUFFER, 0);
//vao操作完毕处理解绑
glBindVertexArray(0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值