您的位置:首页 > 运维架构

OpenGL(二)第一个OpenGL程序绘制三角形

2016-12-02 15:54 411 查看

一、代码

#include <GLTools.h>
#include <GLShaderManager.h>
#include <GL/glut.h>

GLBatch batch; //批处理
GLShaderManager shaderManager; //着色器管理

void ChangeSize(int width, int height)
{
glViewport(0, 0, width, height);  //改变窗口大小
}

void SetupRc(void)
{
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);    //背景颜色

shaderManager.InitializeStockShaders();  //初始化着色器

//定义顶点数据
GLfloat vVertex[] = {-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f};
batch.Begin(GL_TRIANGLES, 3);
batch.CopyVertexData3f(vVertex);  //复制顶点数据到批处理中
batch.End();
}

void MyDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); //清除特定的缓冲区
GLfloat vRed[] = { 0.0f, 1.0f, 0.0f, 1.0f };  //RGBA
shaderManager.UseStockShader(GLT_SHADER_IDENTITY ,vRed);  //颜色传递到存储着色器中
batch.Draw();        //绘制
glutSwapBuffers();   //交换buffer,双缓冲
}

int main(int argc, char * argv[])
{
gltSetWorkingDirectory(argv[0]);   //设置工作目录
glutInit(&argc, argv);             //初始化glut
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL); //显示类型模式
glutInitWindowSize(800, 600);      //窗口大小
glutCreateWindow("第一个OpenGL");  //创建窗口
glutReshapeFunc(ChangeSize);       //改变窗口大小
glutDisplayFunc(MyDisplay);        //显示绘制回调
GLenum err = glewInit();           //驱动程序初始化过程是否出错
if (err != GLEW_OK)
{
return 1;
}
SetupRc();
glutMainLoop();                    //调用之后才能显示
return 0;
}

二、运行效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: