这系列文章是我学习Youtube上一套OpenGL教程的笔记,自己对教程的案例重新制作并且做了一定程度的修改(更有条理,且修正了一些问题)。后续将持续更新。

Visual Studio 2017工程

教程使用的是visual studio 2012,我电脑上装的是visual studio 2017。

  1. 先创建一个Visual C++ Win32 Console Application,命名为GraphicsPad,放在C:\Grphics目录下,不要勾选Create directory for solution 和 Add to source control,下一步。
  2. 取消勾选Precompiled header和Security Development Lifecycle(SDL) checks,下一步。
  3. 创建好工程以后在Solution Explorer中删除掉没用的Filter(像文件夹那样的东西): Header Files, Resource Files, Source Files
  4. 在C:\Graphics目录下添加Middleware文件夹

Qt

这套教程比较特别,使用的是Qt作为窗口库,其他教程一般使用win32+GLFW。

教程上使用的是Qt libraries 4.8.5  for Windows(VS2010)。我下载的5.6.3 - 32位。下载地址:http://download.qt.io/archive/qt/5.9/5.9.3/,选择的是 qt-opensource-windows-x86-5.9.3.exe。下载好以后安装在C:盘根目录。

在官网的下载链接里下载的版本已经不区分MinGW和MSVC版本了,会在安装时选择版本,这种情况需要在安装好的目录里找一下msvc文件夹。

  1. 在C:\Graphics\MiddleWare中创建Qt文件夹,在其中创建3个子文件夹:bin,include,lib.
  2. 从C:\Qt\Qt5.6.3\5.6.3\msvc2015\bin 文件夹中拷贝四个文件到C:\Graphics\MiddleWare\Qt\bin中,分别是:Qt5Cored.dll,Qt5Guid.dll,Qt5OpenGLd.dll,Qt5Widgetsd.dll(教程中使用的4.x版本不需要最后一个widgets,但实验发现5.x是需要这个dll的)
  3. 把C:\Qt\Qt5.6.3\5.6.3\msvc2015\include文件夹中的所有内容都拷贝到C:\Graphics\MiddleWare\Qt\include中。虽然不是全部都要需要用,但是逐个找出来太麻烦,就全部拷进来。
  4. 从C:\Qt\Qt5.6.3\5.6.3\msvc2015\lib中拷贝四个文件到 C:\Graphics\Middleware\Qt\lib,分别是: Qt5Cored.lib,Qt5Guid.lib,Qt5OpenGLd.lib,Qt5Widgetsd.lib

GLEW

C:\Graphics\Middleware\下创建glew文件夹,其中创建include, lib文件夹。具体的编译方法在其他文章里已经介绍过多次了,这里略过

GLM

下载qlm库,地址:https://glm.g-truc.net/,这个库不需要编译,是个纯头文件库,下载后解压在C:\Graphics\Middleware\glm文件夹里就行了

设置工程属性

  1. 在GraphicsPad工程上右键,属性。
  2. General > Intermediate Directory 设置 $(Configuration)\Tmp\
  3. C/C++ > General > Additional Include Directories 添加$(ProjectDir), $(ProjectDir)..\Middleware\Qt\include, $(ProjectDir)..\Middleware\glew\include, $(ProjectDir)..\Middleware\glm
  4. Linker > General > Additional Library Directories 添加 $(ProjectDir)..\Middleware\Qt\lib, $(ProjectDir)..\Middleware\glew\lib
  5. Linker > Input > Additional Dependencies 添加 Qt5Cored.lib,Qt5Guid.lib,Qt5OpenGLd.lib,Qt5Widgetsd.lib,opengl32.lib, glew32.lib(更新:opengl32.lib一定要写上,不然容易导致各种问题。glew32.lib名称根据自己生成的glew的lib文件名字调整。另外,也可以根据需求包含Qt5Core.lib, Qt5Gui.lib, Qt5OpenGL.lib,Qt5Widgets.lib这几个Release版本的lib文件)
  6. 拷贝C:\Graphics\Middleware\Qt\bin中的所有dll文件到C:\Graphics\Debug 目录下
  7. 在工程中添加类MyGlWindow
    //MyGlWindow.h文件
    
    #pragma once
    #include <QtOpenGL\qgl.h>
    class MyGlWindow:public QGLWidget
    {
    public:
    };
    //MyGlWindow.cpp文件
    
    #include "MyGlWindow.h"
  8. 添加Cpp文件Mainer,添加代码:

    #include <QtWidgets\qapplication.h>
    #include <MyGlWindow.h> int main(int argc, char* argv[])
    {
    QApplication app(argc, argv);
    MyGlWindow myWindow;
    myWindow.show(); return app.exec();
    }
  9. 编译运行,可以打开一个黑色的空白窗口。

3D Computer Grapihcs Using OpenGL - 01 环境设置的更多相关文章

  1. 3D Computer Grapihcs Using OpenGL - 19 Vertex Array Object(顶点数组对象)

    大部分OpenGL教程都会在一开始就讲解VAO,但是该教程的作者认为这是很不合理的,因为要理解它的作用需要建立在我们此前学过的知识基础上.因此直到教程已经进行了一大半,作者才引入VAO这个概念.在我看 ...

  2. 3D Computer Grapihcs Using OpenGL - 17 添加相机(旋转)

    在11节我们说过,MVP矩阵中目前只应用了两个矩阵,World to View 矩阵被省略了,这就导致我们的画面没有办法转换视角. 本节我们将添加这一环节,让相机可以旋转. 为了实现这一目的,我们添加 ...

  3. 3D Computer Grapihcs Using OpenGL - 14 OpenGL Instancing

    如果我们需要绘制两个(或者多个)一样的立方体(或者物体),只是位置.缩放.旋转不一样,那么我们可以不需要多次将这个物体的顶点信息.颜色信息等发送到显卡,而是发送一次,绘制多次,仅仅是每次绘制之前应用不 ...

  4. 3D Computer Grapihcs Using OpenGL - 11 Model View Projection Matrices

    本节我们将绘制一个3维物体,立方体. 如果要渲染3D物体,我们需要了解MVP(Model View Projection),它表示三个转换矩阵.实际上这个名字不够明确,更加确切的释义如下: Model ...

  5. 3D Computer Grapihcs Using OpenGL - 10 Color Buffer

    本节我们将尝试利用三角形制作一个“走马灯”效果. 一个三角形如图示方式,从左向右依次移动. 先看一下代码: MyGlWindow.cpp #include <gl\glew.h> #inc ...

  6. 3D Computer Grapihcs Using OpenGL - 09 Enable Depth Test

    启用Depth Test OpenGL是个3D绘图API,也就是说不只有xy坐标轴,还有第三个坐标轴z,z轴的方向是垂直于屏幕,指向屏幕内. 靠近人眼的方向是负方向,标准化设备坐标的最小值是-1, 最 ...

  7. 3D Computer Grapihcs Using OpenGL - 06 Vertex and Fragment Shaders

    从这里就接触到了可编程图形渲染管线. 下面介绍使用Vertex Shader (顶点着色器)和 Fragment Shader(像素着色器)的方法. 我们的目标是使用这两个着色器给三角形填充绿色. 添 ...

  8. 3D Computer Grapihcs Using OpenGL - 05 EBO

    本节将采用两种方法绘制两个三角形. 先看第一种方法的代码 MyGlWindow.cpp #include <gl\glew.h> #include "MyGlWindow.h&q ...

  9. 3D Computer Grapihcs Using OpenGL - 03 OpenGL Buffer Data

    本节绘制一个三角形,并讲解Buffer Object-缓冲对象 OpenGL的窗口坐标 屏幕中心为坐标原点,横向朝右为x正方向,纵向朝上为y正方向,最大值最小值分别为1,-1. Buffer Obje ...

随机推荐

  1. ZABBIX_PROXy

    ProxyMode=0 Server=172.19.30.50 ServerPort=10051 Hostname=172.17.26.102 ListenPort=10051 LogFile=/va ...

  2. (ROT-13解密)Flare-On4: Challenge1 login.html

    说是FlareOn的逆向 倒不如说是crypto....... 题目不难 F12看源码: document.getElementById("prompt").onclick = f ...

  3. 【查阅】mysql配置文件/参数文件重要参数笔录(my.cnf)

    持续更新,积累自己对参数的理解 [1]my.cnf参数 [client]port = 3306socket = /mysql/data/3306/mysql.sockdefault-character ...

  4. tomcat启动失败的三种方法

    Tomcat启动失败的解决办法 1. 重复映射 用eclipse开发时,用Eclipse开发,新建了的servlet会有一个url-pattern声明: 这样就不需要再在web.xml中添加映射,如果 ...

  5. MySQL-快速入门(8)存储过程、存储函数

    1.存储过程 1>创建存储过程:create procedure create procedure sp_name ([in | out | inout] param_name type) [c ...

  6. The Frog's Games

    The Frog's Games Problem Description The annual Games in frogs' kingdom started again. The most famo ...

  7. uboot启动第一阶段分析

    一. uboot第一阶段初识 1.1. 什么是uboot第一阶段 1.1.1. 启动os三个阶段 1.1.1.1. bl0阶段 a. 这段代码是三星固化到iROM中,可以查看<S5PV210_i ...

  8. nginx下载安装和虚拟机的配置

    一. Nginx下载安装 1.Nginx下载:nginx-1.13.0.tar.gz,下载到:/usr/local/software/ wget http://nginx.org/download/n ...

  9. CSRF Failed: CSRF token missing or incorrect

    Django设置本身没有关闭CSRF Django设置已经关闭CSRF,可能是由于两个项目都使用同一个端口,调试的时候就会出现Cookie里面csrftoken重用的问题,清理Cookie就好

  10. Web服务器——WSGI

    1.什么是WSGI? WSGI全称 Web Server Gateway Interface,也可称作Python Web Server Gateway Interface,开始于2003年,为Pyt ...