OpenGL入门(五)使用顶点绘制图形

写在前面

最近对OpenGL编程又双叒产生了浓厚的兴趣,决定把学习OpenGL过程中学到的知识都整理到博客中来,一来方便日后查看,而来也是为了和诸位大佬共勉。有不当的地方还望诸位批评指正,谢谢。
本系列博客将使用freeglut3.0.0和glew2.1.0和vs2017,在win10平台上开发。

绘制一个三角形

OpenGL对复杂图形的绘制实际上是将模型拆分成一个个小三角形来完成的。在之前的基础上绘制一个三角形只需要将glDrawArrays方法的第一个参数改为GL_TRIANGLES即可。效果如下:

这里写图片描述

代码:

// OpenGL5.cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <GL/glew.h>
#include <GL/freeglut.h>

#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")

GLclampf back_color[] = {1.0f, 1.0f, 1.0f, 0.0f};

GLfloat vertex[] = { -0.5, 0.0, 0.0,
                    0.5, 0.0, 0.0,
                    0.25, 0.5, 0.0
                    };

GLuint VBO;

void init()
{
    glClearColor(back_color[0], back_color[1], back_color[2], back_color[3]);
    glGenBuffers(1, &VBO);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertex), vertex, GL_STATIC_DRAW);
    glEnableVertexAttribArray(0);
    glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
}

void display() 
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0, 1.0, 0.0);
    glDrawArrays(GL_TRIANGLES, 0, 3);
    glFlush();
}

int main(int argc, char* argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowPosition(0, 0);
    glutInitWindowSize(800, 600);
    glutCreateWindow("顶点");

    GLuint result = glewInit();
    if (result != GLEW_OK) {
        fprintf(stderr, "Error: '%s'\n", glewGetErrorString(result));
        return 1;
    }

    init();
    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值