搭建基于MinGW平台的《OpenGL蓝皮书(OpenGL SuperBibe 5th)》示例代码编译环境
副标题:搭建基于MinGW平台的《OpenGL超级宝典》(OpenGL蓝皮书第5版)GLTools 编译环境。示例代码:Triangle.cpp @ SB5.zip
以下内容以及方法均参考自老外在stackoverflow上的回答,强烈建议看看原文,因为他告诉你解决问题的思路而不只是给你结果
opengl-superbible-5th-edition-set-up-problems
1. 还未安装MinGW的,去官网下一个,我这里用的是第三方的安装包 TDM-GCC 32位下载地址
2. 到 http://freeglut.sourceforge.net/ 下载最新版本的 freeglut,当前版本是freeglut-2.8.1.tar.gz
a. 解压freeglut-2.8.1.tar.gz 得到 freeglut-2.8.1目录,复制到C盘,打开命令行,输入 "cd /d c:\freeglut-2.8.1\src"
b. 执行"gcc -O2 -c -DFREEGLUT_STATIC *.c -I../include"
c. 执行"ar rcs libfreeglut32_static.a *.o" 生成 libfreeglut32_static.a,编译过程可能出现警告,但是只要生成了.a文件,就拿来用吧
d. 在freeglut-2.8.1 目录下建立 lib 文件夹,将生成的 libfreeglut32_static.a 复制进去
3. 到OpenGL超级宝典 官方网站下载源码包 SB5.zip
a. 解压,里面有4个目录,freeglut, linux, visualstudio 以及 src。 进入src,复制GLTools目录到C盘,打开命令行,"cd /d c:\GLTools"
b. 执行 "g++ -c *.cpp -I../include" (和之前freeglut类似,进行编译、链接、生成静态资源库。)
c. 执行 "ar rcs libGLTools.a *.o"
d. 在C:\GLTools下 建立lib目录,将 libGLTools.a 复制进去,即:C:\GLTools\lib\libGLTools.a
e. 同样是在GLTools目录,执行 "g++ -c glew.c -I../include" 然后 "ar rcs libglew.a glew.o" ,复制libglew.a 到 C:\GLTools\lib\目录
照理说这里就已经把所有的静态链接库都生成好了,分别是:
C:\freeglut-2.8.1\lib\libfreeglut32_static.a
C:\GLTools\lib\libglew.a
C:\GLTools\lib\libGLTools.a
现在尝试编译蓝皮书第二章的示例 Trangle.cpp ,需要把刚生成的3个库文件以及对应目录添加到编译选项中去
写成g++语句会很长,所以写到 Makefile 文件
MAIN = Triangle
LIBDIRS = -LC:/freeglut-2.8.1/lib -LC:/GLTools/lib
INCDIRS = -IC:/freeglut-2.8.1/include -IC:/GLTools/include CC = g++
LIBS = -lGLTools -lglew -lfreeglut32_static $(MAIN):
${CC} $(INCDIRS) $(CFLAGS) -o ${MAIN} ${MAIN}.c $(LIBDIRS) $(LIBS)
打开命令行,进入相同目录,敲入 mingw32-make
提示:error: 'GLAPI' does not name a type 对不对?参考 [翻译]opengl-superbible-5th-edition-set-up-problems 的方法,在#include <GLTools.h>之后加入 #define GLAPI extern
// Triangle.cpp
// Our first OpenGL program that will just draw a triangle on the screen. #include <GLTools.h> // OpenGL toolkit
#define GLAPI extern
#include <GLShaderManager.h> // Shader Manager Class #ifdef __APPLE__
#include <glut/glut.h> // OS X version of GLUT
#else
#define FREEGLUT_STATIC
#include <GL/glut.h> // Windows FreeGlut equivalent
#endif
再次执行mingw32-make ,提示undefined reference to `glViewport@16',修改Makefile
LIBS 增加 -lopengl32 ,之后编译还会遇到几次类似的函数未定义的问题,找到它们对应的库,
并增加到 LIBS 的链接中去,参考这篇文章:[翻译]opengl-superbible-5th-edition-set-up-problems
最后的Makefile是这样的
MAIN = Triangle
LIBDIRS = -LC:/freeglut-2.8.1/lib -LC:/GLTools/lib
INCDIRS = -IC:/freeglut-2.8.1/include -IC:/GLTools/include CC = g++
LIBS = -lGLTools -lglew -lfreeglut32_static -lwinmm -lgdi32 -lopengl32 $(MAIN):
${CC} $(INCDIRS) $(CFLAGS) -o ${MAIN} ${MAIN}.c $(LIBDIRS) $(LIBS)
再次执行 mingw32-make ,没有错误提示,看看目录下是否已经生成 Triangle.exe ?
注:以上方法本人在winxp以及WIN7 64位平台均测试过没有问题
搭建基于MinGW平台的《OpenGL蓝皮书(OpenGL SuperBibe 5th)》示例代码编译环境的更多相关文章
- 搭建基于SSI(struts2,spring,ibatis)的javaEE开发环境
搭建基于SSI(struts2,spring,ibatis)的javaEE开发环境 最近有很多人不知道如何搭建基于SSI(struts2,spring,ibatis)的J2EE开发环境,这里给大家一个 ...
- 【应用笔记】【AN002】通过iTool2基于MinGW平台读写EEPROM
为了增加大家 DIY 的乐趣,XiaomaGee今天为大家只做了一篇使用iTool2内置的USB转I2C来读写EEPROM的方法和代码. iTool2简介 iTool2为银杏公司面向电子类研发工程师推 ...
- 七步,搭建基于Windows平台完美Jekyll博客环境
最近,基于Jekyll新搭建了自己英文博客.整个过程搜索了不少资料,也尝试和过滤了不少工具和插件,最后的效果还是不错的.这里总结一下主要的七个步骤,感兴趣的朋友可以参考一下: 第一步,安装Ruby开发 ...
- React-Native学习手册----搭建基于ios平台的开发环境
首先推荐几个链接: React-Native 官网地址:https://facebook.github.io/react-native/docs/getting-started React-Nativ ...
- (干货)基于 veImageX 搭建海报生成平台 -- 附源码
前言 618 年中促销即将来临,很多公司都会通过海报来宣传自己的促销方案,通常情况下海报由设计团队基于 PS.Sketch 等工具创作,后期若想替换海报文案.商品列表等内容则需打开原工程进行二次创作, ...
- [转] VS2015中跑OpenGL红宝书第八版的第一章示例代码,运行
Ori Article Link OpenGL的东西快忘光了,把角落的第八版红宝书拿出来复习一下 从书中的地址下了个示例代码结果新系统(Win10+VS2015)各种跑不起来,懊恼之后在网上疯狂搜索资 ...
- VS2015中跑OpenGL红宝书第八版的示例代码
OpenGL的东西快忘光了,把角落的第八版红宝书拿出来复习一下 从书中的地址下了个示例代码结果新系统(Win10+VS2015)各种跑不起来,懊恼之后在网上疯狂搜索资料终于跑起来了,记录一下 一.环境 ...
- 4412开发板搭建Uboot、Kernel和Android4.0的编译环境方法
本文转自迅为4412开发板实战教程书籍:http://www.topeetboard.com 迅为是基于Ubuntu12.04.2平台做开发,所有的配置和编译脚本也是基于此平台,没有在其它平台上测试过 ...
- 搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台
搭建基于python +opencv+Beautifulsoup+Neurolab机器学习平台 By 子敬叔叔 最近在学习麦好的<机器学习实践指南案例应用解析第二版>,在安装学习环境的时候 ...
随机推荐
- 卷积神经网络之ResNet网络模型学习
Deep Residual Learning for Image Recognition 微软亚洲研究院的何凯明等人 论文地址 https://arxiv.org/pdf/1512.03385v1.p ...
- oracle显示数据库名和表名
oracle查看表名 select table_name from user_tables; select table_name from dba_tables; select * from all_ ...
- springboot成神之——spring boot,spring jdbc和spring transaction的使用
本文介绍spring boot,spring jdbc和spring transaction的使用 项目结构 依赖 application model层 mapper层 dao层 exception层 ...
- openstack resize 更新显卡驱动程序解决问题
- dubbo学习 三 dubbox概述
当当网根据自身的需求,对dubbo进行了扩展就叫成了dubbox.具体的使用方法可以参照官网各种例子:http://dangdangdotcom.github.io/dubbox/ 支持rest风 ...
- 处理大数据对象clob数据和blob数据
直接上下代码: package com.learn.jdbc.chap06; import java.io.File; import java.io.FileInputStream; import j ...
- 前端自动化之nvm安装
nvm ——node环境版本控制工具. 1.解压安装包 2.打开setting文件,修改文件内容 root: D:\node\nvm path: D:\node\nodejs arch: proxy: ...
- el表达式动态拼接变量_c:set的用法
转自:https://blog.csdn.net/xb12369/article/details/39581955如 何在${}中使用${},例:${user.name_${user.id}},use ...
- Java实现多线程
Java中实现多线程有两种手段: 继承Thread类(此类为多线程的操作类),而且必须明确地重写Thread类中的run()方法,此方法为线程的主题 实现Runnable接口 Thread类和Runa ...
- Gym 101350G - Snake Rana
题意 有一个n*m的矩形,里面有k个炸弹,给出每个炸弹的坐标,计算在n*m的矩形中有多少子矩形内是不包含炸弹的. 分析 场上很是懵逼,赛后问学长说是容斥定理?一脸懵逼..容斥不是初中奥数用在集合上的东 ...