最近去图书馆借了一本书《OpenGL编程指南(原书第八版)》,今天倒腾了一天才把第一个例子运行出来。

所以,给大家分享一下,希望能快速解决配置问题。

一、下载需要的库文件

首先,我们需要去该书的网站中下载相关的配置文件,书中给的是“红宝书”的官方网址:http://www.opengl-redbook.com/

但现在已经更新至第九版,里面的库不是很完整,不适宜用于此书示例。

所以我们要找一个第八版的资源:http://pan.baidu.com/s/1kVpv1MR

下载完之后,我们先把main函数做一些修改,因为,原书的代码有点不完整

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutInitWindowSize(, );
glutInitContextVersion(, );
glutInitContextProfile(GLUT_CORE_PROFILE);
glutCreateWindow(argv[]); glewExperimental = GL_TRUE; //添加
if (glewInit()) {
cerr << "Unable to initialize GLEW ... exiting" << endl;
exit(EXIT_FAILURE);
}
init();
glutDisplayFunc(display);
glutMainLoop(); }

还要在工程目录下创建两个文件

triangles.frag

#version  core

out vec4 fColor;

void

main()

{

fColor = vec4(0.0, 0.0, 1.0, 1.0);

}

triangles.vert

#version  core

layout(location = ) in vec4 vPosition;

void

main()

{

gl_Position = vPosition;

}

二、配置相关的库

先展示一下刚刚下载的压缩文件

其中include/GL/   下面是有9个文件的,很全。如果下载的是第九版的话那么就只有两个文件,不完整。

确定文件齐全之后,我们开始配置相关的库。

在你的项目-》属性-》

在包含目录中添加进你下载的那个文件夹中的include目录:比如我的是:D:\新建文件夹\新建文件夹\新建文件夹\新建文件夹\openGL\oglpg-8th-edition\include

在库目录中添加进你下载的那个文件夹中的lib目录:比如我的是:D:\新建文件夹\新建文件夹\新建文件夹\新建文件夹\openGL\oglpg-8th-edition\lib

然后再把下面这个设置一下:

这样在debug或rrelease编译模式下都能把libcmtd.lib这个库忽略掉

最后一点,VS2015更改了很多标准库的链接方式和宏定义,而红宝书第八版中用到的freeglut库中用到了这些标准库和宏。所以如果报_sscanf或者__iob_func是无法解析的外部符号之类的错误,你可以打开如下设置:

点开那个下拉,如果你有低于15的版本,那么选那个低版本的,如果只有15版本的话,请往下看

来自:https://blog.csdn.net/csdn1027192411/article/details/52064732 的解决方案,如下:

然后在工程的cpp文件首,插入如下代码即可

#if _MSC_VER>=1900
#include "stdio.h"
_ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);
#ifdef __cplusplus
extern "C"
#endif
FILE* __cdecl __iob_func(unsigned i) {
return __acrt_iob_func(i);
}
#endif /* _MSC_VER>=1900 */

到现在应该就可以运行了。

如果不想用提供的库,想要自己下载,也可以

这里有完整的OpenGL所需的库:https://www.cnblogs.com/zpcdbky/p/6724772.html

不过,第八版的资料里的include里面也很完整~

感谢您的阅读,生活愉快~

VS15 openGL 编程指南 配置库 triangle例子的更多相关文章

  1. OpenGL编程指南(第七版)

    OpenGL编程指南(第七版) 转自:http://blog.csdn.net/w540982016044/article/details/21287645 在接触OpenGL中,配置显得相当麻烦,特 ...

  2. 编译opengl编程指南第八版示例代码通过

    最近在编译opengl编程指南第八版的示例代码,如下 #include <iostream> #include "vgl.h" #include "LoadS ...

  3. [转]OpenGL编程指南(第9版)环境搭建--使用VS2017

    1.使用CMake Configure中选择VS2017 Win64 , Finish: 点击Generate. 2.进入build目录 打开GLFW.sln , 生成解决方案. 打开vermilio ...

  4. OpenGl编程指南第7版(红宝书)环境配制

    环境 OS:win7 旗舰版SP1 64位 编译器: VS 2013 express 的cl 软件 glut. 在这个页面https://www.opengl.org/resources/librar ...

  5. OpenGL编程指南第九章:纹理映射

    转自://http://blog.csdn.net/longhuihu/article/details/8477614 纹理(texture)是一块矩形数据序列,存储的数据为颜色.亮度.alpha值. ...

  6. OpenGL编程指南(第九版) Tiangles 学习笔记

    ////////////////////////////////////////////////////////////////////////////// // // Triangles.cpp / ...

  7. opengl编程指南

    第一章 opengl简单介绍 1.1 什么是opengl opengl是图形硬件的一种软件接口.        1>渲染(rendering)是计算机依据模型创建图像的过程. 2>模型(m ...

  8. OpenGL编程指南第版本学习笔记 --- OpenGL程序实现过程(win32 + OpenGL)

    1. 先上代码 头文件glCommon.h #include <GL/glew.h> #include <GL/GL.h> #include <GL/GLU.h> ...

  9. 《OpenGL编程指南第七版》学习——编译时提示“error C2381: “exit” : 重定义;__declspec(noreturn) 不同”错误的解决办法

    解决办法一. #if defined(_WIN32) # ifndef GLUT_BUILDING_LIBextern _CRTIMP void __cdecl exit(int); 上面是glut. ...

随机推荐

  1. 新的玩具:Windows上的awesome

    平铺式窗口管理器 基于xwindow(Linux/Unix采用的图形系统)有成千上百种窗口管理器.其中有一类窗口管理器很古怪,所有应用程序的窗口没有互相遮挡,而是平铺到屏幕上,这类窗口管理器叫 平铺式 ...

  2. C++中getline()和cin()同时使用时的注意事项

    今天做tju的oj,遇到一个问题,想前部分用cin函数一个一个的读入数据,中间部分利用getline()一起读入一行,但是测试发现,cin之后的getline函数并无作用,遂谷歌之.原来cin只是在缓 ...

  3. Eureka简介

    Eureka是Spring Cloud Netfix 的一个子模块,也是核心模块之一,用于云端服务发现.一个基于RestFul的服务,用于定位服务,以实现云端中间层服务发现和中间层转移. 服务注册与发 ...

  4. aarch64_n3

    ntp-doc-4.2.8p10-1.fc26.noarch.rpm 2017-03-24 02:07 1.2M fedora Mirroring Project ntp-perl-4.2.8p10- ...

  5. vue项目中遇到的一些问题

    或访问:https://github.com/littleHiuman/experiences-about-vue  欢迎补充! vuex 状态 vue-cli 命令行 vue vue vue-rou ...

  6. ActiveMQ:初见&安装试运行

    官网:http://activemq.apache.org/ ActiveMQ是一个消息中间件,在大型互联网应用中有广泛的使用. 当前最新版本:5.15.4,发布于2018-05-22,开源.Apac ...

  7. python网络编程-进程锁

    一:进程锁的作用 进程锁是防止多进程并发执行在屏幕打印的时候,其他进程也输出数据到屏幕,而出现混乱现象. 比如:进程池中很多进程会向同一个日志文件中打印日志 二:代码 # -*- coding:utf ...

  8. maxout激活函数

    maxout的拟合能力是非常强的,它可以拟合任意的的凸函数.最直观的解释就是任意的凸函数都可以由分段线性函数以任意精度拟合(学过高等数学应该能明白),而maxout又是取k个隐隐含层节点的最大值,这些 ...

  9. Linux学习笔记:rm删除文件和文件夹

    使用rm命令删除一个文件或者目录 使用rmdir可以删除空文件夹 参数: -i:删除前逐一询问确认 -f:即使原档案属性设为唯读,亦直接删除,无需逐一确认 -r:递归 删除文件可以直接使用rm命令,若 ...

  10. 适合新手的web开发环境

    学习web开发,环境搭建是必不可少的一个环节.你可以使用wamp一键安装包,或者使用sae.bae.gae这种PaaS平台来部署,或者安装*nix系统在本地部署. 对于一个希望体验LAMP式建站的新手 ...