zoukankan      html  css  js  c++  java
  • VS15 openGL 编程指南 配置库 triangle例子

    最近去图书馆借了一本书《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(512, 512);
        glutInitContextVersion(4, 3);
        glutInitContextProfile(GLUT_CORE_PROFILE);
        glutCreateWindow(argv[0]);
    
        glewExperimental = GL_TRUE;            //添加
        if (glewInit()) {
            cerr << "Unable to initialize GLEW ... exiting" << endl;
            exit(EXIT_FAILURE);
        }
        init();
        glutDisplayFunc(display);
        glutMainLoop();
    
    }

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

     triangles.frag

    #version 430 core
    
    out vec4 fColor;
    
    void
    
    main()
    
    {
    
    fColor = vec4(0.0, 0.0, 1.0, 1.0);
    
    }

     triangles.vert

    #version 430 core
    
    layout(location = 0) in vec4 vPosition;
    
    void
    
    main()
    
    {
    
    gl_Position = vPosition;
    
    }

    二、配置相关的库

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

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

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

    在你的项目-》属性-》

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

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

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

    这样在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里面也很完整~

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

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 交换Easy
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法训练 矩阵乘方
    QT中给各控件增加背景图片(可缩放可旋转)的几种方法
    回调函数实现类似QT中信号机制
    std::string的Copy-on-Write:不如想象中美好(VC不使用这种方式,而使用对小字符串更友好的SSO实现)
  • 原文地址:https://www.cnblogs.com/lv-anchoret/p/8729384.html
Copyright © 2011-2022 走看看