更新:现在都用核心模式了,推荐LearnOpenGL,不推荐往下看啦。
OpenGL
OpenGL系统由独立于设备的函数集(核心库)、实用库(GLU)和实用工具包(GLUT)三部分组成。
二维几何变换
搬砖
码农之路不可长远
glut模板
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #include <GL/glut.h>
void someDrawing() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.0, 0.4, 0.2); glBegin(GL_LINES); glVertex2i(180, 15); glVertex2i(10, 145); glEnd(); glFlush(); }
int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowPosition(50, 100); glutInitWindowSize(400,300); glutCreateWindow("Window Title"); glClearColor(1.0, 1.0, 1.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, 200.0, 0.0, 150.0); glutDisplayFunc(someDrawing); glutMainLoop(); return 0; }
|
主动错误检查
OpenGL记录一个全局错误标志,表示最近一个未被程序员抓取的错误信息。推荐在每一个显示回调子程序中至少检查一次出错情况:
1 2 3 4 5 6 7 8
| GLenum errorCheck() { const GLenum code = glGetError(); if (code != GL_NO_ERROR) { const GLubyte* what = gluErrorString(code); fprintf(stderr, "OpenGL error: %s\n", what); } return code; }
|
画点与画线
函数后缀:int->i
,short->s
,float->f
,double->d
,vector->v
,2D->2
,3D->3
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| int p1[] = {75, 150};
glBegin(GL_POINTS); glVertex2iv(p1); glVertex2i(50, 100); glEnd();
glBegin(GL_LINES); glVertex2iv(p); glVertex2i(50, 100); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glEnd();
glBegin(GL_LINE_STRIP); glVertex2iv(p1); glVertex2i(50, 100); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glEnd();
glBegin(GL_LINE_LOOP); glVertex2iv(p1); glVertex2i(50, 100); glVertex2iv(p3); glVertex2iv(p4); glVertex2iv(p5); glEnd();
|
有关OpenGL的出错编码请自行查找资料。