VS2008中OpenGL的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VS2008中OpenGL的使用相关的知识,希望对你有一定的参考价值。
我想在VS2008创建的MFC单文档项目中用OpenGL实现最简单的画线,用OpenGL自身的画线函数,除了要对一些头文件,如glut.h引入,还需要什么配置吗?为什么程序运行后什么都没有?是在MFC单文档项目中画线~~~谢谢~~如果解决了问题~必有加分~~
跟VC6一样的一、下载并安装glut库 opengl的glut库 GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。 Windows环境下的GLUT下载地址:(大小约为150k) http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
Windows环境下安装GLUT的步骤:
1、将下载的压缩包解开,将得到5个文件
2、在“我的电脑”中搜索“gl.h”,并找到其所在文件夹(Program Files\Microsoft Visual Studio\VC98\Include\GL文件夹”)。把解压得到的glut.h放到这个文件夹。
3、把解压得到的glut.lib和glut32.lib放到静态函数库所在文件夹(Program Files\Microsoft Visual Studio\VC98\lib”文件夹)。
4、把解压得到的glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。(典型的位置为:C:\Windows\System32)
二、vc工程配置:
1)创建一个工程。glut 是一个console project ,你创建的时候必须创建console 以对应 .
2)链接OpenGL libraries。在Visual C++中先单击Project,再单击Settings,再找到Link单击,
在“分类”(Category)组合框里选择“输出”(output) ,再在“入口点”(Entry-point symbol)文本框里键入“mainCRTStartup” ,对一个现有的控制台应用程序,有一个简单的办法把它转换成Win32应用程序,这样可以摆脱那个命令行窗口。
3)单击Project Settings中的C/C++标签,将Preprocessor definitions 中的_CONSOLE改为__WINDOWS。最后单击OK。 增加下面的文件到“对象/库模块"
(Object/library/modules):OpenGL32.lib glut32.lib glu32.lib (有时候不需要glut32.lib)
4)然后在stdafx.h文件中加入
#include <windows.h>
#include <GL/glu.h>
#include <GL/gl.h>
#include <GL/glut.h>
#include <GL/glaux.h>
注意:#include 是需要的,不引入的话有时会报错。 完成后,就可以编写你自己的程序了。 参考技术A 首先确定OpenGl的glut类库加入到编译器中了
其次:
无论VisualStudio2008还是VC++6:
选择File->New->Project,然后选择Win32 Console Application,(不是win32 application).选择一个名字,然后按OK。在谈出的对话框左边点Application Settings,找到Empty project并勾上,选择Finish。然后向该工程添加一个代码文件,文件名后面加.c还是.cpp看你自己。
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 Files\\Microsoft SDKs\\Windows\\v7.0A\\Include\\gl里面,VS2010会自动搜索这个路径。
3. 将glut.lib和glut32.lib复制到F:\\vs2010\\VC\\lib下,根据VS2010的具体安装路径确定。
4. 将glut.dll和glut32.dll复制到C:\\WINDOWS\\system32下。
至此,环境已经配置好了。
下面来开发一个简单的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\\n",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 }
4. 选择项目属性,选择C/C++->预处理器,在右侧的“预处理器定义”处,删除“_CONSOLE“
5. 在项目属性中,切换到“链接器”->系统,右侧窗口的子系统选择:窗口 (/SUBSYSTEM:WINDOWS)
6. 在项目属性中,再切换到“链接器”->命令行,在“其他选项”中输入:/ENTRY:mainCRTStartup (可以去除程序运行时出现的dos窗口)
编译运行,就能看到“太阳、地球和月亮的动态运行图”了!
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
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 系统必备
以上是关于VS2008中OpenGL的使用的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 7 中使用 OpenGL、Glut 和 Visual Studio 2008 准备 C++ 项目
OpenGL vs OpenGL ES 2.0 - 可以轻松移植 OpenGL 应用程序吗?
使用 C++ 和 Visual Studio 2008 设置 OpenGL