当前位置:首页 > CN2资讯 > 正文内容

Windows7+VS2012下OpenGL 4的环境配置vs配置opengl环境

3天前CN2资讯


系统环境

        Windows 7 Ultimate x64,Visual Studio Ultimate 2012 Update 4,和一块支持OpenGL 4.x的显卡。


准备工作

        首先用​​GPU Caps Viewer​​检查机器最高支持的OpenGL及GLSL版本。比如我的机器可以支持OpenGL 4.5和GLSL 4.5:

​​​

        下载GLEW和GLFW的源码。其中​​GLEW​​​用来管理和载入OpenGL的各种扩展库,​​GLFW​​用来创建窗口和控制鼠标及键盘的交互。我使用的版本分别是glew-1.12.0和glfw-3.1.1。下载地址分别为:

      ​​https://sourceforge.net/projects/glew/files/glew/1.12.0/glew-1.12.0.zip/download​​

               ​​http://sourceforge.net/projects/glfw/files/glfw/3.1.1/glfw-3.1.1.zip/download​​

        下载并安装​​CMAKE​​。用来辅助编译GLFW。我使用的版本为cmake-3.2.1。下载地址为:

               ​​http://www.cmake.org/files/v3.2/cmake-3.2.1-win32-x86.exe​​


编译GLFW

       打开CMAKE。点击“Browsw source…”选择GLFW的根目录,点击“Browse build…”任意选取一个新建的文件夹作为输出目录。点击“Configure”:

​​​       

在弹出的窗口中选择“Visual Studio 11 2012”,点击“Finish”:

               ​​​       

保持默认配置即可。如果想用头文件+.dll的方式调用GLFW,可以勾选“BUILD_SHARED_LINKS”;不勾选则是默认的头文件+.lib方式调用。为“CMAKE_INSTALL_PREFIX”选择一个新的位置,用来存放用VS2012编译输出的结果。然后点击“Generate”,VS2012项目文件就生成完毕了。

​​​

        打开刚刚指定的Build目录,用Visual Studio 2012打开GLFW.sln文件。为保险起见,先用Debug方式编译ZERO_CHECK,如果没有报错,则用Release方式编译ALL_BUILD,再编译INSTALL。

​​​ 

      如果编译成功,在之前指定的GLFW文件夹内会多出两个文件夹include和lib,这里面就包含着我们会用到的头文件和链接库文件:

​​​       

 把include中的GLFW文件夹拷贝到一个你觉得方便的位置,比如“E:\dev-lib\opengl4\include”:

​​​       

把lib中的glfw3.lib文件拷贝到新的位置,比如“E:\dev-lib\opengl4\lib”:

​​​


编译GLEW

        用Visual Studio 2012打开GLEW目录下build\vc10\glew.sln文件,第一次打开时会提示是否把VS2010项目转换成VS2012项目,选择是即可。选择Release方式,点击BUILD -> Build Solution:

​​​     

如果编译成功,会发现在bin\Release\Win32目录下有3个新文件。把glew32.dll文件拷贝到C:\Windows\SysWOW64目录下。

​​​       

 glewinfo.exe和visualinfo.exe可以用来查看系统对OpenGL各个特性的支持情况,比如:

​​​       

把lib\Release\Win32目录下的glew32.lib拷贝到之前的“E:\dev-lib\opengl4\lib”中。把include目录中的GL文件夹拷贝到之前的“E:\dev-lib\opengl4\include”中。


新建项目

       打开Visual Studio 2012,点击FILE -> New -> Project…,选择Visual C++ -> Win32 Console Application。比如命名为“ogl4-test”:

​​​       

右击项目名称,点击Properties。在Configuration Properties -> VC++ Directories中,为Include Directories添加“E:\dev-lib\opengl4\include;”;为Library Directories添加“E:\dev-lib\opengl4\lib;”。注意为Debug和Release都要添加:

​​​       

在Configuration Properties -> Linker -> Input中,为Additional Dependencies添加“glew32.lib;glfw3.lib;opengl32.lib;”。注意为Debug和Release都要添加:

​​​

        把以下代码拷贝到0gl4-test.cpp文件中。代码来自​​Anton's OpenGL 4 Tutorials​​

#include "stdafx.h"
#include <GL/glew.h>
//#define GLFW_DLL
#include <GLFW/glfw3.h>


int main(int argc, _TCHAR* argv[])
{
// start GL context and O/S window using the GLFW helper library
if (!glfwInit ()) {
fprintf (stderr, "ERROR: could not start GLFW3\n");
return 1;
}

GLFWwindow* window = glfwCreateWindow (800, 600, "Hello Triangle", NULL, NULL);
if (!window) {
fprintf (stderr, "ERROR: could not open window with GLFW3\n");
glfwTerminate();
return 1;
}
glfwMakeContextCurrent (window);

// start GLEW extension handler
glewExperimental = GL_TRUE;
glewInit ();

// get version info
const GLubyte* renderer = glGetString (GL_RENDERER); // get renderer string
const GLubyte* version = glGetString (GL_VERSION); // version as a string
printf ("Renderer: %s\n", renderer);
printf ("OpenGL version supported %s\n", version);

// tell GL to only draw onto a pixel if the shape is closer to the viewer
glEnable (GL_DEPTH_TEST); // enable depth-testing
glDepthFunc (GL_LESS); // depth-testing interprets a smaller value as "closer"

float points[] = {
0.0f, 0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
-0.5f, -0.5f, 0.0f
};

GLuint vbo = 0;
glGenBuffers (1, &vbo);
glBindBuffer (GL_ARRAY_BUFFER, vbo);
glBufferData (GL_ARRAY_BUFFER, 9 * sizeof (float), points, GL_STATIC_DRAW);

GLuint vao = 0;
glGenVertexArrays (1, &vao);
glBindVertexArray (vao);
glEnableVertexAttribArray (0);
glBindBuffer (GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer (0, 3, GL_FLOAT, GL_FALSE, 0, NULL);

const char* vertex_shader =
"#version 400\n"
"in vec3 vp;"
"void main () {"
" gl_Position = vec4 (vp, 1.0);"
"}";

const char* fragment_shader =
"#version 400\n"
"out vec4 frag_colour;"
"void main () {"
" frag_colour = vec4 (0.5, 0.0, 0.5, 1.0);"
"}";

GLuint vs = glCreateShader (GL_VERTEX_SHADER);
glShaderSource (vs, 1, &vertex_shader, NULL);
glCompileShader (vs);
GLuint fs = glCreateShader (GL_FRAGMENT_SHADER);
glShaderSource (fs, 1, &fragment_shader, NULL);
glCompileShader (fs);

GLuint shader_programme = glCreateProgram ();
glAttachShader (shader_programme, fs);
glAttachShader (shader_programme, vs);
glLinkProgram (shader_programme);

// Loop until the user closes the window
while (!glfwWindowShouldClose(window))
{
// wipe the drawing surface clear
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgram (shader_programme);
glBindVertexArray (vao);
// draw points 0-3 from the currently bound VAO with current in-use shader
glDrawArrays (GL_TRIANGLES, 0, 3);
// update other events like input handling
glfwPollEvents ();
// put the stuff we've been drawing onto the display
glfwSwapBuffers (window);
}

// close GL context and any other GLFW resources
glfwTerminate();

return 0;
}


点击“Local Windows Debugger”,就可以看见如下效果:

​​​



另一枚例子

        这是一个用合成的Gerstner波绘制水面的例子,根据​​《水面的简单渲染 – Gerstner波》​​​修改而来。完整代码下载地址:​​http://pan.baidu.com/s/1gdzoe4b​​​,所需的配置文件下载地址:​​http://pan.baidu.com/s/1pJ81kyZ​​​。项目托管地址:​​https:///johnhany/OpenGLProjects/tree/master/GerstnerWave​​。

        效果如下:

​​​



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/29772.html

    分享给朋友:

    “Windows7+VS2012下OpenGL 4的环境配置vs配置opengl环境” 的相关文章

    如何在Windows上轻松安装和使用自带的OpenSSH进行远程管理

    OpenSSH的基本概念 OpenSSH是一种安全Shell(SSH)工具的开放源代码版本,主要用于安全地访问和管理远程服务器。它通过加密技术确保数据传输的安全性,防止数据在传输过程中被窃取或篡改。OpenSSH最初是为Linux和其他类Unix系统开发的,但随着时间的推移,它也被引入到Window...

    全球主机交流论坛:提升技术的最佳平台

    全球主机论坛概述 在当今数字化时代,全球主机论坛扮演着越来越重要的角色。这些论坛不仅是技术爱好者的聚集地,更是为需要域名、主机、VPS和服务器信息的用户提供了一个交流的平台。我作为一名站长,经常在这样的论坛上交流经验、获取灵感和解决技术难题,论坛的存在极大地丰富了我的网络建设之旅。 主机论坛的定义其...

    恒创科技:引领数据中心与网络安全解决方案的先锋

    恒创科技这个名字,对于熟悉科技行业的人来说,或许并不陌生。它是一个多元化的品牌,涉及数据中心、网络安全、软件开发和智慧城市解决方案等多个领域。我对这家公司一直抱有浓厚的兴趣,因为它所提供的服务非常全面,能够满足不同行业的需求。 在我看来,恒创科技一直努力将最先进的技术应用于实际场景中,尤其是在互联网...

    搬瓦工VPS与IPv6: 优化你的网络体验

    搬瓦工(BandwagonHost)作为一家由加拿大IT7 Networks公司推出的品牌,专注于提供性价比较高的VPS主机服务。我一直对VPS的体验充满好奇,尤其是搬瓦工的背景与发展历程。最初,搬瓦工主要销售超低价的OpenVZ方案,吸引了不少预算有限的用户。随着技术的发展和市场需求的变化,搬瓦工...

    解决Linode被封的问题与账户恢复策略分享

    Linode作为一款备受欢迎的美国VPS,其灵活性和服务质量吸引了众多用户。然而,基于我的经验,国内用户在使用Linode时常常面临被封的困扰。这不仅影响了使用体验,也对业务的持续性造成了影响。我想深入分析一下Linode被封的原因。 首先,Linode的全球网络状况在近年来遭遇了严峻挑战。随着越来...

    台湾原生IP的优势与选择指南,助你畅享极速网络体验

    在信息化时代,网络的使用变得愈发普遍,原生IP的概念逐渐进入大众视野。简单来说,台湾原生IP指的是源自台湾本地的互联网协议地址。与其他地区的IP不同,台湾原生IP能够有效实现更快速、更稳定的网络连接,给用户带来良好的上网体验。我们生活在一个无时无刻不在与网络打交道的时代,理解这项技术的内涵至关重要。...