前言:好久之前就想要好好學習OpenGL的基本知識,一直拖了下去,其實每天半個小時,大事可期;
OpenGL中使用GLUT創建窗口的基本原理:
#平台:MacOS 10.9.2 Xcode 5.0.1#
#ifdef __APPLE__
#include <glut/glut.h>
#else
#define FREEGLUT_STATIC
#endif
#include "stdio.h"
void RenderScene(void) {
glClear(GL_COLOR_BUFFER_BIT); //清除顏色
glColor3f(0.0f, 0.5f, 1.0f); //設置顏色
glRectf(0.0f, 30.0f, 30.0f, 0.0f); //绘制边长为50的矩形
glFlush(); //刷新
}
//这行代码是将前面定义的display()函数确定为显示回调函数。也就是说在窗口需要被绘制时,GLUT将会调用这个函数。比如說,当窗口第一次显示或是窗口大小改变的时候,或是窗口从被覆盖的状态中恢复时,就会发生这个调用。这也是我们放置OpenGL渲染函数调用的地方。
void ChangeSize(GLsizei w, GLsizei h) {
GLfloat aspectRatio;
if (0 == h){
h = 1;
}
//設置視口大小(話說視口是什麼意思)
glViewport(0, 0, w, h);
//重置座標系
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//建立裁剪區
aspectRatio = (GLfloat)w / (GLfloat)h;
if (w <= h){
glOrtho(-100.0, 100.0, -100.0 / aspectRatio, 100 / aspectRatio, 1.0, -1.0);
}
else{
glOrtho(-100.0 * aspectRatio, 100.0 * aspectRatio, -100.0, 100.0, 1.0, -1.0);
}
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
//設置渲染
void SetupRC(void) {
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
}
int main(int argc, char *argv[]) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutCreateWindow("OpenGL FromNowOn");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
SetupRC();
glutMainLoop();
return 0;
}
代碼非常簡單,Xcode環境下根本不用設置,只需要將如下兩個鏈接庫(GLUT.framework, OpenGL.framework)加到工程即可
/*以上文字(尤其是代碼乃東拼西湊各種雜糅之後的產物)若有半點雷同,算我抄你。*/