1. 程式人生 > >OpenGL入門(五)使用頂點繪製圖形

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; }