1.一直不明白这个glClear
-
#include <GL/glut.h>
-
void display()
-
{
-
glClearColor(1.0, 0.0, 0.0, 0.0); //设置清除的颜色是red
-
glClear(GL_COLOR_BUFFER_BIT); //用设置的颜色来清窗口,感觉默认是黑色,这儿设为red就用red来填窗口
-
glColor3f(0.0, 1.0, 0.0); //设置颜色是绿色,用绿色来画矩形
-
glRectf(-0.5f,-0.5f, 0.5f, 0.5f); //画一个矩形,opengl的坐标范围(-1,1),坐标原点在窗口的中心
-
glFlush(); //立即刷新到窗口上
-
}
-
-
int main(int argc, char* argv[])
-
{
-
glutInit(&argc, argv); //对GLUT进行初始化
-
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); //设置显示方式,GLUT_RGB-->使用RGB颜色,GLUT_SINGLE-->使用单缓冲
-
glutInitWindowPosition(0, 0); //设置窗口在屏幕中的位置
-
glutInitWindowSize(300, 300); //设置窗口的大小
-
glutCreateWindow("OpenGL 3D View"); //创建窗口,其中的参数是标题
-
glutDisplayFunc(display); //设置刷新窗口的回调函数
-
glutMainLoop(); //现在还不太了解这个,暂时理解为sleep(100)
-
return 0;
-
}
-
结果如下图所示: 红配绿
2.设置顶点
opengl的顶点用glVertex表示,同时需要把顶点放在glBegin与glEnd之间才有意义,否则会丢掉
-
#include <GL/glut.h>
-
void display()
-
{
-
glClearColor(0.0, 0.0, 0.0, 0.0); //black
-
glClear(GL_COLOR_BUFFER_BIT);
-
-
//glBegin(GL_POINTS);
-
//glBegin(GL_LINES);
-
//glBegin(GL_LINE_STRIP);
-
//glBegin(GL_LINE_LOOP);
-
//glBegin(GL_TRIANGLES);
-
//glBegin(GL_TRIANGLE_STRIP);
-
//glBegin(GL_TRIANGLE_FAN);
-
//glBegin(GL_QUADS);
-
glBegin(GL_POLYGON);
-
glColor3f(1.0, 0.0, 0.0); //red
-
glVertex2f(0.0, 0.0);
-
glVertex2f(0.0, 0.5);
-
glVertex2f(0.5, 0.0);
-
glVertex2f(0.5, 0.5);
-
glEnd();
-
-
glFlush();
-
}
-
int main(int argc, char* argv[])
-
{
-
glutInit(&argc, argv);
-
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
-
glutInitWindowPosition(0, 0);
-
glutInitWindowSize(300, 300);
-
glutCreateWindow("OpenGL 3D View");
-
glutDisplayFunc(display);
-
glutMainLoop();
-
return 0;
-
}
glBegin的mode参数的含义参考《OpenGL编程指南第七版》图2-7几何图元类型
3.画一个余弦函数
-
#include <GL/glut.h>
-
#include <stdio.h>
-
#include <math.h>
-
#define PI 3.1415926
-
void display()
-
{
-
GLfloat i;
-
glClearColor(0.0, 0.0, 0.0, 0.0); //black
-
glClear(GL_COLOR_BUFFER_BIT);
-
-
glBegin(GL_LINES);
-
glColor3f(0.0, 1.0, 0.0); //green
-
glVertex2f(-1.0, 0.0);
-
glVertex2f(1.0, 0.0);
-
-
glVertex2f(0.0, -1.0);
-
glVertex2f(0.0, 1.0);
-
glEnd();
-
-
glBegin(GL_LINE_STRIP);
-
glColor3f(1.0, 0.0, 0.0); //red
-
for(i=-PI; i<=PI; i+=0.01)
-
{
-
glVertex2f(i/PI, cos(i));
-
}
-
glEnd();
-
-
glFlush();
-
}
-
main函数一样
注意: cos的单位是弧度
阅读(1228) | 评论(0) | 转发(0) |