OpenGL: 绘制三角形

OpenGL绘制三角形

先看效果


OpenGL: 绘制三角形_第1张图片
D460E6C6-B854-48A9-9FF3-22D1B83510A3的副本.png
  1. 初步认识OpenGL框架

    GLShaderManager
    着色器管理器(shader Mananger)类,能够进行一些初步䄦基本的渲染操作。

    GLTools
    OpenGL的一个工具类。

    GLUT
    是一个处理OpenGL程式的工具库

GLBatch
简单的批次容器,是GLTools的一个简单的容器类。

  1. 绘制图形流程分析

分析main.cpp

int main(int argc,char *argv[])
{
//1.设置当前工作目录
gltSetWorkingDirectory(argv[0]);

//初始化glut库
glutInit(&argc, argv);

//窗口显示模式
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);

//GLUT窗口大小、窗口标题
glutInitWindowSize(800, 600);
glutCreateWindow("Triangle");

//注册重塑函数
glutReshapeFunc(changeSize);
//注册显示函数
glutDisplayFunc(RenderScene);
//特殊按键回调
glutSpecialFunc(SpecialKeys);  

GLenum status = glewInit();
if (GLEW_OK != status) {
    
    printf("GLEW Error:%s\n",glewGetErrorString(status));
    return 1;
    
} 

//设置我们的渲染环境
setupRC();
glutMainLoop();  
return 0;       
}

设置渲染环境

void setupRC()
{
    glClearColor(0.98f, 0.40f, 0.7f, 1);
    //初始化
    shaderManager.InitializeStockShaders();
    //指定顶点
    GLfloat vVerts[] = {
        -0.5f,0.0f,0.0f,
        0.5f,0.0f,0.0f,
        0.0f,0.5f,0.0f
    };
    triangleBatch.Begin(GL_TRIANGLES, 3);
    triangleBatch.CopyVertexData3f(vVerts);
    triangleBatch.End(); 
}

在窗口大小改变时,接收新的宽度&高度

void changeSize(int w,int h)
{
    glViewport(0, 0, w, h);
}

渲染图形

void RenderScene(void)
{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
    
    
    //设置一组浮点数来表示红色
    GLfloat vRed[] = {1.0,0.0,0.0,1.0f};
 shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);

    triangleBatch.Draw();
    glutSwapBuffers();
    
}

整体流程就是这样子的啦。

GitHub地址:https://github.com/fzdfy/OpenGL_triangle

你可能感兴趣的:(OpenGL: 绘制三角形)