﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-chenpingjun1990-文章分类-OpenGL</title><link>http://www.cppblog.com/chenpingjun1990/category/17612.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 23 Aug 2011 21:47:26 GMT</lastBuildDate><pubDate>Tue, 23 Aug 2011 21:47:26 GMT</pubDate><ttl>60</ttl><item><title>VS2010配置OpenGL编译环境</title><link>http://www.cppblog.com/chenpingjun1990/articles/154029.html</link><dc:creator>万川先生</dc:creator><author>万川先生</author><pubDate>Sun, 21 Aug 2011 12:11:00 GMT</pubDate><guid>http://www.cppblog.com/chenpingjun1990/articles/154029.html</guid><wfw:comment>http://www.cppblog.com/chenpingjun1990/comments/154029.html</wfw:comment><comments>http://www.cppblog.com/chenpingjun1990/articles/154029.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/chenpingjun1990/comments/commentRss/154029.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/chenpingjun1990/services/trackbacks/154029.html</trackback:ping><description><![CDATA[<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenGL(Open Graphics Library)是一个跨编程语言、跨平台的专业图形程序接口。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenGL是SGI公司开发的一套计算机图形处理系统，是图形硬件的软件接口，任何一个OpenGL应用程序无须考虑其运行环境所在平台与操作系统，在任何一个遵循<span lang="EN-US"><font face="Times New Roman">OpenGL</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">标准的环境下都会产生相同的可视效果。<br /><span lang="EN-US"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenGL</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不是一种编程语言，而是一种</span><span lang="EN-US"><font face="Times New Roman">API</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span><span lang="EN-US"><font face="Times New Roman">Application Programming Interface</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，应用程序编程接口)。<br /><span lang="EN-US"><font face="Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OpenGL</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">主要包括三个函数库，它们是核心库、实用函数库和编程辅助库。核心库中包含了</span><span lang="EN-US"><font face="Times New Roman">OpenGL</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最基本的命令函数。核心库提供了一百多个函数，这些函数都以</span><span lang="EN-US"><font face="Times New Roman">&#8221;gl&#8221;</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为前缀，用来建立各种各样的几何模型、进行坐标变换、产生光照效果、进行纹理映射、产生雾化效果等所有的二维和三维图形操作。实用函数库是比核心库更高一层的函数库，它提供四十多个函数，这些函数都以</span><span lang="EN-US"><font face="Times New Roman">&#8221;glu&#8221;</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">为前缀。由于</span><span lang="EN-US"><font face="Times New Roman">OpenGL</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一个图形标准，是独立于任何窗口系统或操作系统的，在</span><span lang="EN-US"><font face="Times New Roman">OpenGL</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中没有提供窗口管理和消息事件响应的函数，也没有鼠标和键盘读取事件的功能，所以在编程辅助库提供了一些基本的窗口管理函数、事件处理函数和简单的事件函数。这类函数以</span><span lang="EN-US"><font face="Times New Roman">&#8221;aux&#8221;</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作为前缀。值得一提的是，目前</span><span lang="EN-US"><font face="Times New Roman">AUX</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编程辅助库已经很大程度上被</span><span lang="EN-US"><font face="Times New Roman">GLUT</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">库取代了。以下介绍以</span><span lang="EN-US"><font face="Times New Roman">GLUT</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">库为例。<br />&nbsp;&nbsp;&nbsp; <font face="Times New Roman">&nbsp;GLUT</font><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">代表</span><span lang="EN-US"><font face="Times New Roman">OpenGL</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">应用工具包（</span><span lang="EN-US"><font face="Times New Roman">OpenGL Utility Toolkit</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">），是一个与窗口系统无关的工具包。它作为</span><span lang="EN-US"><font face="Times New Roman">AUX</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">库的功能更强的替代品，用于隐藏不同窗口系统</span><span lang="EN-US"><font face="Times New Roman">API</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的复杂性。</span><span lang="EN-US"><font face="Times New Roman">GLUT</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的子程序的前缀使用</span><span lang="EN-US"><font face="Times New Roman">&#8221;glut&#8221;</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。</span><span lang="EN-US"></span><br /></span><span lang="EN-US"><br />一、下面介绍如何为VS2010配置OpenGL编译环境<br />
<p>&nbsp;&nbsp;&nbsp;1. 下载GLUT。Windows环境下的GLUT下载地址：<a href="http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip">http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip</a></p>
<p>&nbsp;&nbsp;&nbsp;2. 将下载的压缩包解开，将得到5个文件：glut.h glut.lib glut32.lib glut.dll glut32.dll<br />&nbsp;&nbsp;&nbsp;3. 将glut.h放到(C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl\)这个文件夹中.<br />&nbsp;&nbsp;&nbsp;4. 将glut.lib和glut32.lib放到静态函数库所在文件夹中。（安装目录\VC\lib\)<br />&nbsp;&nbsp;&nbsp;5.&nbsp;将glut.dll和glut32.dll放到操作系统所在目录下面的system32文件夹内. (C:Windows\system32)<br />&nbsp;&nbsp;&nbsp;经过这五步，配置完成。<br /><br />二、测试配置环境是否成功<br />&nbsp;&nbsp; 1. 打开VS2010，选择File-&gt;New-&gt;Project，然后选择Win32 Console Application，选择一个名字OpenGLTest，然后按OK。&nbsp;<br />&nbsp;&nbsp;&nbsp;2. 在弹出的对话框左边点Application Settings，找到Empty project并勾上，选择Finish。<br />&nbsp;&nbsp;&nbsp;3. 然后向该工程添加一个代码文件，取名为OpenGLTest.cpp。<br />&nbsp;&nbsp; 4. 向OpenGLTest.cpp中添加代码</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">GL</span><span style="color: #000000">/</span><span style="color: #000000">glut.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;myDisplay(</span><span style="color: #0000ff">void</span><span style="color: #000000">)<br /><img id="Codehighlighter1_43_124_Open_Image" onclick="this.style.display='none'; Codehighlighter1_43_124_Open_Text.style.display='none'; Codehighlighter1_43_124_Closed_Image.style.display='inline'; Codehighlighter1_43_124_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_43_124_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_43_124_Closed_Text.style.display='none'; Codehighlighter1_43_124_Open_Image.style.display='inline'; Codehighlighter1_43_124_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_43_124_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_43_124_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;glClear(GL_COLOR_BUFFER_BIT);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;glRectf(</span><span style="color: #000000">-</span><span style="color: #000000">0.5f</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">0.5f</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0.5f</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0.5f</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;glFlush();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">argv[])<br /><img id="Codehighlighter1_160_430_Open_Image" onclick="this.style.display='none'; Codehighlighter1_160_430_Open_Text.style.display='none'; Codehighlighter1_160_430_Closed_Image.style.display='inline'; Codehighlighter1_160_430_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_160_430_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_160_430_Closed_Text.style.display='none'; Codehighlighter1_160_430_Open_Image.style.display='inline'; Codehighlighter1_160_430_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_160_430_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_160_430_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;glutInit(</span><span style="color: #000000">&amp;</span><span style="color: #000000">argc,&nbsp;argv);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glutInitDisplayMode(GLUT_RGB&nbsp;</span><span style="color: #000000">|</span><span style="color: #000000">&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GLUT_SINGLE);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;glutInitWindowPosition(</span><span style="color: #000000">100</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">100</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;glutInitWindowSize(</span><span style="color: #000000">400</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">400</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;glutCreateWindow(</span><span style="color: #000000">"</span><span style="color: #000000">第一个OpenGL程序</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;glutDisplayFunc(</span><span style="color: #000000">&amp;</span><span style="color: #000000">myDisplay);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;glutMainLoop();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div>
<p>编译、链接、执行这段程序，生成一个黑色的窗口中央画一个白色的矩形，表明配置环境成功。<br /></p><br /></span></span></span></div><img src ="http://www.cppblog.com/chenpingjun1990/aggbug/154029.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/chenpingjun1990/" target="_blank">万川先生</a> 2011-08-21 20:11 <a href="http://www.cppblog.com/chenpingjun1990/articles/154029.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>