• vs2010中配置OpenGL以及针对64位系统所遇问题的解决办法


    一、下面将对VS2010中配置OpenGL进行简单介绍。

    学习OpenGL前的准备工作 第一步,选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的。

    我选择Visual Studio 2010和VC6++作为学习OpenGL的环境。 第二步,安装GLUT工具包 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip 无法从以上地址下载的话请使用下面的连接:
    http://upload.programfan.com/upfile/200607311626279.zip Windows环境下安装GLUT的步骤: 1、将下载的压缩包解开,将得到5个文件,分别是glut.h,glut.lib,glut32.lib,glut.dll,glut32.dll 2、将其中的glut.h放到C:Program FilesMicrosoft SDKsWindowsv7.0AIncludegl里面,VS2010会自动搜索这个路径。

    3. 将glut.lib和glut32.lib复制到F:vs2010VClib下,根据VS2010的具体安装路径确定。

    4. 将glut.dll和glut32.dll复制到C:WINDOWSsystem32下。

    至此,环境已经配置好了。

    下面来开发一个简单的c++程序,环境vs2010中的vc

    1. 新建->项目->win32控制台应用程序。

    2. 输入项目名:simpleGL,其他默认即可。

    3. 输入源代码:

     1 #include <gl/glut.h>
     2 #include <stdio.h>
     3 #include <time.h>
     4 
     5 //太阳、地球和月亮
     6 //假设每个月都是30天
     7 //一年12个月,共是360天
     8 static int day = 200;//day的变化:从0到359
     9 
    10 double CallFrequency()
    11 {
    12     static int count;
    13     static double save;
    14     static clock_t last,current;
    15     double timegap;
    16 
    17     ++count;
    18     if(count<=50)
    19         return save;
    20     count = 0;
    21     last = current;
    22     current = clock();
    23     timegap = (current-last)/(double)CLK_TCK;  
    24     save = 50.0/timegap;
    25     return save;
    26 }
    27 
    28 void myDisplay(void)
    29 {
    30     double FPS = CallFrequency();
    31     printf("FPS = %f
    ",FPS);
    32 
    33     glEnable(GL_DEPTH_TEST);
    34     glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
    35 
    36     glMatrixMode(GL_PROJECTION);
    37     glLoadIdentity();
    38     gluPerspective(75,1,1,400000000);
    39     glMatrixMode(GL_MODELVIEW);
    40     glLoadIdentity();
    41     gluLookAt(0,-200000000,200000000,0,0,0,0,0,1);
    42 
    43 
    44     //绘制红色的“太阳”
    45     glColor3f(1.0f,0.0f,0.0f);
    46     glutSolidSphere(69600000,20,20);
    47     //绘制蓝色的“地球”
    48     glColor3f(0.0f,0.0f,1.0f);
    49     glRotatef(day/360.0*360.0,0.0f,0.0f,-1.0f);
    50     glTranslatef(150000000,0.0f,0.0f);
    51     glutSolidSphere(15945000,20,20);
    52     //绘制黄色的“月亮”
    53     glColor3f(1.0f,1.0f,0.0f);
    54     glRotatef(day/30.0*360.0-day/360.0*360.0,0.0f,0.0f,-1.0f);
    55     glTranslatef(38000000,0.0f,0.0f);
    56     glutSolidSphere(4345000,20,20);
    57 
    58     glFlush();
    59     glutSwapBuffers();
    60 }
    61 
    62 void myIdle(void)
    63 {
    64     ++day;
    65     if(day>=360)
    66         day = 0;
    67     myDisplay();
    68 }
    69 
    70 int main(int argc,char *argv[])
    71 {
    72     glutInit(&argc,argv);
    73     glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
    74     glutInitWindowPosition(100,100);
    75     glutInitWindowSize(400,400);
    76     glutCreateWindow("太阳,地球和月亮");
    77     glutDisplayFunc(&myDisplay);
    78     glutIdleFunc(&myIdle);
    79     glutMainLoop();
    80 
    81     return 0;
    82 }
    View Code

    4. 选择项目属性,选择C/C++->预处理器,在右侧的“预处理器定义”处,删除“_CONSOLE“

    5. 在项目属性中,切换到“链接器”->系统,右侧窗口的子系统选择:窗口 (/SUBSYSTEM:WINDOWS)

    6. 在项目属性中,再切换到“链接器”->命令行,在“其他选项”中输入:/ENTRY:mainCRTStartup (可以去除程序运行时出现的dos窗口)

    编译运行,就能看到“太阳、地球和月亮的动态运行图”了!

     二、程序无法启动此应用程序,因为计算机中丢失glut32.dll

    Windows7 64位+VS2010

    提示:程序无法启动此应用程序,因为计算机中丢失glut32.dll。。。。。。

    果断查看System32文件夹,发现有这个文件,那就不明白了,为什么还是找不到呢,不合理啊。

    一时半会儿没找到,为了尽快看到代码运行的效果,就把这个dll拷贝到生成的exe同级目录了,嗯,可以了。

    不过不甘心,后来查看Windows目录,发现在system32同级的目录还有一个目录:SysWOW64,看样子是64位特有的文件夹,果断查一下这个文件夹的来龙去脉,这里引用一下百度百科的解释:

    转换库
    WoW64子系统是一个轻量级的compatibility layer, 在所有版本的windows上都拥有同样的接口. 它的主要目的是用来创建32-bit环境, 为了让32位的应用程序可以不经过任何修改就运行在64-bit的系统上, 它提供了必须的接口。 技术上说, WOW64是由三个DLL实现的。 Wow64.dll是Windows NT kernel的核心接口, 在32位和64位调用之间进行转换, 包括指针和调用栈的操控. Wow64win.dll 为32位应用程序提供合适的入口指针. Wow64cpu.dll 负责将处理器在32位和64位的模式之间转换。

    而且在该目录下发现了glut.dll,这不是glut32.dll的近亲嘛,于是就把这个dll放到该目录下,把跟exe同级目录里的那个dll删除掉,果然运行成功。

     

    三、手动卸载 Visual Studio

        接下来我再说两句关于卸载VS2010的问题,因为我在开发中遇到小问题,卸载了它再重装的,但是卸载相对其它软件来说要麻烦点。
     
        卸载时要注意自己安装VS2010的时间,我推荐用360软件管家卸载,根据时间手动卸载。手动卸载的项目有如下:

    1.      删除 Visual Studio 2010 产品的所有实例。

    2.      按下列顺序卸载任何支持产品。使用非英语安装时,还必须删除列出的某些产品的语言包。在您删除列表上的最后一个包之前,没有必要重新启动。

    a.      Microsoft Visual Studio 2010 ADO.NET 实体框架工具

    b.      Microsoft SQL Server 2008 R2 Transact-SQL 语言服务

    c.      Microsoft SQL Server 2008 R2 数据层应用程序项目

    d.      Microsoft SQL Server 2008 R2 数据层应用程序框架

    e.      Microsoft Sync Framework SDK 1.0 版 SP1

    f.       Microsoft Sync Framework Services 1.0 版 SP1

    g.      Microsoft Sync Framework Runtime 1.0 版 SP1

    h.      Microsoft Silverlight 3 SDK

    i.        Microsoft ASP.NET MVC 2

    j.       Microsoft ASP.NET MVC 2 - Visual Studio 2010 工具

    k.      Microsoft .NET Framework 4 Multi-Targeting Pack

    l.        Microsoft TFS 对象模型

    m.   Microsoft Visual F# 2.0 运行时

    n.      Microsoft Visual Studio x64 系统必备

  • 相关阅读:
    真正的Java学习从入门到精通
    Java学习从入门到精通(1) [转载]
    Java Learning Path(三)过程篇
    Java Learning Path(五)资源篇
    Java Learning Path(四) 方法篇
    浅析Java语言中两种异常的差别
    JDK,JRE,JVM区别与联系
    JAVA敏捷开发环境搭建
    谈谈WEB开发中的苦大难字符集问题
    java读取clob字段的几种方法
  • 原文地址:https://www.cnblogs.com/ttzm/p/5525553.html
Copyright © 2020-2023  润新知