zoukankan      html  css  js  c++  java
  • OpenGL绘制旋转多边形遇到的LNK2019的解决方法

    绘制旋转多边形:

    #include "stdafx.h"
    #include <math.h>
    #include <Windows.h>
    #include <glglut.h>
    #include <stdlib.h> 
     
     
    #define PI 3.14159  //设置圆周率
    int n = 6, R = 10//多边形变数,外接圆半径
     
     
    float theta = 0.0//旋转初始角度值
    void Keyboard(unsigned char key, int x, int y);
    void Display(void);
    void Reshape(int w, int h);
    void myidle();
     
     
    int main(int argc, char** argv)
    {
     
     
        // must/should match the number of strings in argv
     
     
        glutInit(&argc, argv);  //初始化GLUT库;
        glutInitWindowSize(400, 400);  //设置显示窗口大小
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);  //设置显示模式;(注意双缓冲)
        glutCreateWindow("A Rotating Square"); // 创建显示窗口
        glutDisplayFunc(Display);  //注册显示回调函数
        glutReshapeFunc(Reshape);  //注册窗口改变回调函数
        glutIdleFunc(myidle);    //注册闲置回调函数
        glutMainLoop();  //进入事件处理循环
        
        
     
     
        return 0;
    }
     
     
     
     
    void Display(void)
    {
        
        glClearColor(0, 1, 1, 0);//设置浅蓝色绘图背景颜色(清屏颜色)
        glClear(GL_COLOR_BUFFER_BIT);
        glColor3f(0, 0, 1); //设置深蓝色绘图颜色
        glBegin(GL_POLYGON);  //开始绘制六边形
        for (int i = 0; i<n; i++)
            glVertex2f(R*cos(theta + i * 2 * PI / n), R*sin(theta + i * 2 * PI / n));
        glEnd();
        glutSwapBuffers();   //双缓冲的刷新模式;
     
     
    }
     
     
    void myidle()
    {
        theta += 1.0;   //旋转角度增加1度
        if (theta >= 2 * PI) {
            theta -= 2 * PI;   //如果旋转角度大于360度,则复原
        }
            
     
     
        glutPostRedisplay();  //重画,相当于重新调用Display(),改编后的变量得以传给绘制函数
    }
     
     
    void Reshape(GLsizei w, GLsizei h)
    {
        glMatrixMode(GL_PROJECTION);  //投影矩阵模式
        glLoadIdentity();  //矩阵堆栈清空
        gluOrtho2D(-1.5*R*w / h, 1.5*R*w / h, -1.5*R, 1.5*R);  //设置裁剪窗口大小
        glViewport(0, 0, w, h); //设置视区大小
        glMatrixMode(GL_MODELVIEW);  //模型矩阵模式 
    }

    LNK2019问题:

    解决方法:

    在#include <GL/glut.h>前面加上了一句:  #define GLUT_DISABLE_ATEXIT_HACK 
    (!!!注意,是前面!!!)

  • 相关阅读:
    【算法总结】哈夫曼树
    堆栈入门-简单计算器
    堆栈入门-括号匹配问题
    Linux下使用vim命令编辑与修改文本内容
    Ubuntu查看与结束任务进程
    Mac OS X开发者准备工作
    Mac OS X平台上Java环境的配置
    OS X平台上MySQL环境搭建
    2015 Python News
    2015 Open Source News
  • 原文地址:https://www.cnblogs.com/djlobster/p/12918532.html
Copyright © 2011-2022 走看看