zoukankan      html  css  js  c++  java
  • codeblocks配置GLUT

    codeblocks配置OPENGL GLUT





    作者

    He YiJun – storysnail<at>hotmail.com

       

    版权

    转载请保留本声明!


    本文档包含的原创代码根据General Public License,v3 发布
    GPLv3
    许可证的副本可以在这里获得:http://www.gnu.org/licenses/gpl.html

    本文档根据GNU Free Documentation License 1.3发布
    GFDL1.3
    许可证的副本可以在这里获得:http://www.gnu.org/licenses/gfdl.html

    文中所引用的软件版权详见各软件版权具体声明,文中所提及的所有商标均为各自商标所有人的财产。
    作者在此向所有提供过帮助和支持的朋友表示感谢,此致!

    更新

    2014-11-10

    修改版权和重新编辑

     

     本文已经停止更新






    前言:

    一份在codeblocks下配置OPENGL GLUT的简单教程。

    一:下载安装codeblock10.05

    http://www.codeblocks.org下载codeblock,建议下载带MinGW编译器版本(GCC compiler and GDB debugger),这样基本不需要什么特殊配置。之后运行安装文件,一步步安装到结束。这里特别说明一下,我的计算机运行着windows 7 64位系统。



    二 下载编译好的GLUT

    可以到OPENGL的老巢自己寻找需要的GLUT(http://www.opengl.org/),有很多的不同版本!

    我使用的是GLUT-3.7.6,可以到下面的页面下载。

    http://user.xmission.com/~nate/glut.html



    三 安装glut

    解压glut-3.7.6-bin.zip压缩包,复制解压后的文件到对应位置.

     

    glut.h

    C:Program Files (x86)CodeBlocksMinGWincludeGL

    glut32.lib

    C:Program Files (x86)CodeBlocksMinGWlib

    glut32.dll

    C:Windowssystem



     

     

     

     

    四:创建Glut项目

    创建Glut项目









    指定GLUT的位置,我的是C:Program Files (x86)CodeBlocksMinGW





    五 示例源代码



      1 //windows头文件
      2 
      3 #include<windows.h>
      4 
      5 #include<GL/gl.h>
      6 
      7 #include<GL/glu.h>
      8 
      9 #include<gl/glut.h>
     10 
     11  
     12 
     13 /*linux头文件
     14 
     15 #include <X11/Xlib.h>
     16 
     17 #include<GL/gl.h>
     18 
     19 #include<GL/glu.h>
     20 
     21 #include<GL/glut.h>
     22 
     23 #include<GL/glx.h>
     24 
     25 */
     26 
     27 staticGLfloatspin=0.0;
     28 
     29  
     30 
     31 voidinit(void)
     32 
     33 {
     34 
     35 glClearColor(0.0,0.0,0.0,0.0);
     36 
     37 glShadeModel(GL_FLAT);
     38 
     39 }
     40 
     41  
     42 
     43 voiddisplay(void)
     44 
     45 {
     46 
     47 glClear(GL_COLOR_BUFFER_BIT);
     48 
     49 glPushMatrix();
     50 
     51 glRotatef(spin,0.0,0.0,1.0);
     52 
     53 glColor3f(1.0,1.0,1.0);
     54 
     55 glRectf(-25.0,-25.0,25.0,25.0);
     56 
     57 glPopMatrix();
     58 
     59 glutSwapBuffers();
     60 
     61 }
     62 
     63  
     64 
     65 voidspinDisplay(void)
     66 
     67 {
     68 
     69 spin=spin+2.0;
     70 
     71 if(spin>360.0)
     72 
     73 spin=spin-360.0;
     74 
     75 glutPostRedisplay();
     76 
     77 }
     78 
     79  
     80 
     81 voidreshape(intw,inth)
     82 
     83 {
     84 
     85 glViewport(0,0,(GLsizei)w,(GLsizei)h);
     86 
     87 glMatrixMode(GL_PROJECTION);
     88 
     89 glLoadIdentity();
     90 
     91 glOrtho(-50.0,50.0,-50.0,50.0,-1.0,1.0);
     92 
     93 glMatrixMode(GL_MODELVIEW);
     94 
     95 glLoadIdentity();
     96 
     97 }
     98 
     99  
    100 
    101 voidmouse(intbutton,intstate,intx,inty)
    102 
    103 {
    104 
    105 switch(button){
    106 
    107 caseGLUT_LEFT_BUTTON:
    108 
    109 if(state==GLUT_DOWN)
    110 
    111 glutIdleFunc(spinDisplay);
    112 
    113 break;
    114 
    115 caseGLUT_MIDDLE_BUTTON:
    116 
    117 if(state==GLUT_DOWN)
    118 
    119 glutIdleFunc(NULL);
    120 
    121 break;
    122 
    123 default:
    124 
    125 break;
    126 
    127 }
    128 
    129 }
    130 
    131  
    132 
    133 intmain(intargc,char**argv)
    134 
    135 {
    136 
    137 glutInit(&argc,argv);
    138 
    139 glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
    140 
    141 glutInitWindowSize(250,250);
    142 
    143 glutInitWindowPosition(100,100);
    144 
    145 glutCreateWindow(argv[0]);
    146 
    147 init();
    148 
    149 glutDisplayFunc(display);
    150 
    151 glutReshapeFunc(reshape);
    152 
    153 glutMouseFunc(mouse);
    154 
    155 glutMainLoop();
    156 
    157 return0;
    158 
    159 } 





    五 编译运行

    这个示例也可以在Linux下编译运行,效果和windows下一样,注意需要修改一下头文件,见上面源码。下面是makefile,在不同版本的linux下,makefile文件内容可能需要调整!

     

    all:double

    CC=gcc

     

    double:double.c

    $(CC)-Wall-g-I/usr/include/GL double.c -o double-L/usr/lib -L/usr/X11R6/lib -lGL -lGLU -lX11 -lglut

    #-lglut-lGLU-lGL-lXmu-lX11

     

    编译

     



     

    运行





  • 相关阅读:
    js类中的static、public、private、protected
    BOM—Browser Object Model and DOM—Document Object Model
    Vue之vue中的data为什么是一个函数+vue中路径别名alias设置
    vue之nextTick
    情感分析-英文电影评论
    wiki中文语料的word2vec模型构建
    python正则表达式
    leetcode
    智力题
    Event Recommendation Engine Challenge分步解析第七步
  • 原文地址:https://www.cnblogs.com/arely/p/4416122.html
Copyright © 2011-2022 走看看