《OpenGL编程基础》第二章习题1

来源:互联网 发布:淘宝跑路双十一 编辑:程序博客网 时间:2024/04/20 16:56

还没看第三章,工作需要看了写纹理看了写矩阵变换,但是基本看不懂啊,,把活儿交差了先。

做了第二章的第一个习题,通过细分多边形模拟化缘,哦,是画圆大笑

代码及注释:

#include <stdlib.h>#include <math.h>#include <stdio.h>static int n = 4;//多边形边数float a = 0;      //多边形内角?不知道怎么称呼这个角。。float x=0, y=0; //多边形顶点float R = 1.0f; //半径。static void display(void){    glClear(GL_COLOR_BUFFER_BIT);    glBegin(GL_LINE_LOOP);        glColor3f(1.0, 0.0, 0.0);        a = 360/n;        int i;        n=n<3?3:n;//不能画成一条直线        for(i=1; a*i<=360; ++i)        {                             //for循环确定多边型顶点            x = R*cos(i*a*3.14/180);            y = R*sin(i*a*3.14/180);            glVertex2f(x, y);        }    glEnd();    glLineWidth(10.0);//边线宽度10像素     glFlush();}void myReshape(GLsizei w,GLsizei h){    glViewport(0,0,w,h);}static void key(unsigned char key, int x, int y){                                  //这个按键处理回调是CodeBox自己创建的自动化代码,刚好拿来用作多边形变化    switch (key)    {        case 27 :        case 'q':            exit(0);            break;        case '+':            ++n;            //增加多边形边的数量。            break;        case '-':            --n;              //减少边             break;    }    glutPostRedisplay();}/* Program entry point */int main(int argc, char *argv[]){    glutInit(&argc, argv);    glutCreateWindow("Circle");    glClearColor(1.0, 1.0, 1.0, 1.0);       //清理颜色,放在这里可以设置背景颜色。    glutDisplayFunc(display);                  //加班那些事儿    glutReshapeFunc(myReshape);         //加班那些事儿,今次没在这个函数里加班。。    glutKeyboardFunc(key);    glutMainLoop();    return EXIT_SUCCESS;}



程序出来后是一个整四边行,按“+”按键,逐渐变成一个圆,逐渐的化缘,慢慢的,就特用它化缘讨饭了,大笑


还不清除如何在OpenGL里把数据输出到屏幕或者命令行,今次写这个习题的时候对顶点值的调试花了挺长时间。。郁闷,第二章里关于调试讲的很模糊,,,
原创粉丝点击