Windows7+VS2012下OpenGL 4的环境配置
系统环境
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 libraryif (!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 handlerglewExperimental = GL_TRUE;glewInit ();// get version infoconst GLubyte* renderer = glGetString (GL_RENDERER); // get renderer stringconst GLubyte* version = glGetString (GL_VERSION); // version as a stringprintf ("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 viewerglEnable (GL_DEPTH_TEST); // enable depth-testingglDepthFunc (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 windowwhile (!glfwWindowShouldClose(window)){// wipe the drawing surface clearglClear (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 shaderglDrawArrays (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://github.com/johnhany/OpenGLProjects/tree/master/GerstnerWave。
效果如下:
原文链接:Windows7+VS2012下OpenGL 4的环境配置
转载于:https://www.cnblogs.com/rainbow70626/p/5557636.html
Windows7+VS2012下OpenGL 4的环境配置相关推荐
- OpenGL C#绘图环境配置
OpenGL C#绘图环境配置 OpenGL简介 OpenGL作为一种图形学编程接口已经非常流行, 虽然在大型游戏方面DirectX有一定的市场占有率, 但由于OpenGL的开放性,可移植性等优点,O ...
- M1芯片下Fabric测试网络环境配置
M1芯片下Fabric测试网络环境配置 系统配置 系统:Ubuntu 20.04 LTS 内核:Arm64 硬盘大小:10GB 1.技术框架环境搭建 安装Vim sudo apt install -y ...
- Mac下Qt for android 环境配置
Mac下Qt for android 环境配置 文章目录 Mac下Qt for android 环境配置 1. 需要准备工具 2. 下载时版本搭配解释 3. 下载工具过程 4. 环境变量设置 5.qt ...
- LibOpenCM3(一) Linux下命令行开发环境配置
目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说 ...
- win10系统下nodejs安装及环境配置
win10系统下nodejs安装及环境配置 一.下载对应的nodejs安装包 1.官网地址:https://nodejs.org/en/ (可以下载旧版本:打开 https://nodejs.org/ ...
- windows下VS安装CUDA环境配置
CUDA安装见:https://blog.csdn.net/Ang_go/article/details/122329715 本文内容均在已安装VS和CUDA情况下,如需安装教程,请自行搜索. win ...
- Mac下cocos2dx-3.2+Xcode环境配置和项目创建
这是有关环境配置的第二篇教程,第一篇讲的是win8下的环境配置.这里我们使用C++.所有如果你用其他语言如Lua和js进行cocos2d开发,那么可以再找一找其他的配置文档. 下面要说Mac os 下 ...
- Android官方开发文档Training系列课程中文版:OpenGL绘图之环境配置
原文地址:http://android.xsoftlab.net/training/graphics/opengl/index.html 引言 Android framework层为创建绚丽的功能性U ...
- windows 7 64bit 下apache php mysql 环境配置
在64位环境下安装apache,php和配置过程 准备好安装包.(64位版本) Apache 下载地址:http://www.apachelounge.com/download/ Php 下载地址:h ...
最新文章
- linux6.5 sftp,CentOS下实现SFTP CHROOT的几种方法
- linux在机房设置ip,双线机房双IP linux设置路由
- 机械制图手册_42条机械制图基础常识,带徒师傅必备!
- 后现代婚礼机器人显神通_机器人显神通
- opencv 中 快速傅里叶变换 FFT
- linux 常见试题(2)-选择
- 来自未来团队伙伴的一封信
- html语言dl与ul,HTML中DL、UL、OL用哪个比较好
- Cray:XC50提供了最高密度的性能
- ODP.NET数据访问
- PHP100个知识点之2 日期时间(一)
- redis和sqlserver数据同步_redis缓存和mysql数据库同步
- asp.net 实现动态显示当前时间(不用javascript不考虑开销)
- Cube IDE 的下载安装
- 思维导图—Git命令全集
- 运用mysql实现工资管理系统_企业工资管理系统的设计与实现(MySQL)
- 解释什么是计算机硬件和软件,什么叫软件,什么叫硬件?(要详细)
- 超全 泛微 E8 E-cology 8 开发资料大全 开源下载资料
- 舱机器人尾巴毛茸茸_第一千五百二十四章 毛茸茸【二合一】
- codesys电子凸轮挺杆点的设置与使用
热门文章
- Windows与Linux下tftp服务的使用
- [react] create-react-app有什么好处?
- React开发(209):react错误边界
- React开发(131):ant design学习指南之form中的resetFields
- 前端学习(3211):react中类中方法的this指向三
- [html] HTML5拖拽事件的顺序是什么?
- 工作215:打印出父子组件的this
- 工作125:各个接口需要的token不同 token是获取数据的关键
- 前端学习(2250)拉取代码文件
- 前端学习(1920)vue之电商管理系统电商系统之角色列表路由的切换