paktc
出类拔萃
帖子: 65 注册时间: 2016年07月21日 20:34
联系:
帖子
由 paktc » 2016年09月18日 14:38
[Interactive.Computer.Graphics:A.Top-Down.Approach.with.Shader-Based.OpenGL(6th.2011)].Edward.Angel.文字版.pdf ed2k://|file|[Interactive.Computer.Graphics%EF%BC%9AA.Top-Down.Approach.with.Shader-Based.OpenGL(6th.2011)].Edward.Angel.%E6%96%87%E5%AD%97%E7%89%88.pdf|13149202|88105A4595B07D10689A0D96215F8E03|h=MFI7ZCU73C34TVILAUNLIXGNGU2FEMYC|/
随书代码 http://www.cs.unm.edu/~angel/BOOK/INTERACTIVE_COMPUTER_GRAPHICS/SIXTH_EDITION/CODE/
批量(递归)下载该网页目录文件
use Encode;
use LWP::Simple;
use IO::Handle;
STDOUT->autoflush();
my $website = "http://www.cs.unm.edu/~angel/BOOK/INTERACTIVE_COMPUTER_GRAPHICS/SIXTH_EDITION/CODE/";
func($website, "./Code/");
sub func
{
my ($website, $fold) = (shift, shift);
my $page = get($website) or warn "$!";
mkdir $fold if (! -e $fold);
print "$fold\n";
#根据文件大小的字段判断是否为文件并下载
while ( $page=~s/href="([^"]+)".*align="right">[\d\w\. ]+<//i )
{
print " " x 4 ."File: $1\n";
getstore( $website . $1, $fold . $1);
}
while ( $page=~s/folder\.gif.*href="([^"]+)"//i )
{
func($website . $1, $fold . $1);
#递进调用,文件夹列表的末尾总是带有斜杠
}
}
523066680
Administrator
帖子: 573 注册时间: 2016年07月19日 12:14
联系:
帖子
由 523066680 » 2016年09月22日 16:20
环境和工具:
WIN7 64位,MinGW,MSYS2.0
配置:
另外下载的库:
freeglut-MinGW-3.0.0-1.mp.zip,glew-1.13.0.zip
解压至
D:\OGL\freeglut-MinGW-3.0.0-1.mp
D:\OGL\glew-1.13.0
freeglut已经是编译好了dll的,可以直接用。glew需要手动编译一次,打开MinGW-w64 Win32 Shell,进入D:\OGL\glew-1.13.0
执行 make 命令
$ make
gcc -DGLEW_NO_GLU -DGLEW_BUILD -O2 -Wall -W -Iinclude -o tmp/mingw/default/shared/glew.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll tmp/mingw/default/shared/glew.o -L/mingw/lib -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x lib/glew32.dll
gcc -DGLEW_NO_GLU -DGLEW_STATIC -O2 -Wall -W -Iinclude -o tmp/mingw/default/static/glew.o -c src/glew.c
ar rv lib/libglew32.a tmp/mingw/default/static/glew.o
a - tmp/mingw/default/static/glew.o
ar: creating lib/libglew32.a
strip -x lib/libglew32.a
sed \
-e "s|@prefix@|/usr|g" \
-e "s|@libdir@|/usr/lib|g" \
-e "s|@exec_prefix@|/usr/bin|g" \
-e "s|@includedir@|/usr/include/GL|g" \
-e "s|@version@|1.13.0|g" \
-e "s|@cflags@||g" \
-e "s|@libname@|glew32|g" \
-e "s|@requireslib@|glu|g" \
< glew.pc.in > glew.pc
gcc -DGLEW_NO_GLU -DGLEW_MX -DGLEW_BUILD -O2 -Wall -W -Iinclude -o tmp/mingw/mx/shared/glew.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32mx.dll -Wl,--out-implib,lib/libglew32mx.dll.a -o lib/glew32mx.dll tmp/mingw/mx/shared/glew.o -L/mingw/lib -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x lib/glew32mx.dll
gcc -DGLEW_NO_GLU -DGLEW_MX -DGLEW_STATIC -O2 -Wall -W -Iinclude -o tmp/mingw/mx/static/glew.o -c src/glew.c
ar rv lib/libglew32mx.a tmp/mingw/mx/static/glew.o
a - tmp/mingw/mx/static/glew.o
ar: creating lib/libglew32mx.a
strip -x lib/libglew32mx.a
sed \
-e "s|@prefix@|/usr|g" \
-e "s|@libdir@|/usr/lib|g" \
-e "s|@exec_prefix@|/usr/bin|g" \
-e "s|@includedir@|/usr/include/GL|g" \
-e "s|@version@|1.13.0|g" \
-e "s|@cflags@|-DGLEW_MX|g" \
-e "s|@libname@|glew32mx|g" \
-e "s|@requireslib@|glu|g" \
< glew.pc.in > glewmx.pc
gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -o tmp/mingw/default/shared/glewinfo.o -c src/glewinfo.c
gcc -O2 -Wall -W -Iinclude -o bin/glewinfo.exe tmp/mingw/default/shared/glewinfo.o -Llib -lglew32 -L/mingw/lib -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x bin/glewinfo.exe
gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -o tmp/mingw/default/shared/visualinfo.o -c src/visualinfo.c
gcc -O2 -Wall -W -Iinclude -o bin/visualinfo.exe tmp/mingw/default/shared/visualinfo.o -Llib -lglew32 -L/mingw/lib -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x bin/visualinfo.exe
生成的 dll 和 lib文件位于 glew-1.13.0\lib 目录
编译、运行
进入随书示例代码 Code\CHAPTER02\WINDOWS_VERSIONS
修改 example1.cpp ,在 glewInit(); 前面加上 glewExperimental = GL_TRUE;
建立makefile文件,内容如下:
MAIN=example1
CC=g++
LIBDIR= -LD:/OGL/glew-1.13.0/lib -LD:/OGL/freeglut-MinGW-3.0.0-1.mp/lib/x64
INCDIR= -ID:/OGL/glew-1.13.0/include -ID:/OGL/freeglut-MinGW-3.0.0-1.mp/include -I../../include
LIBS= -lfreeglut -lglew32 -lopengl32 -lwinmm -lgdi32
$MAIN:
${CC} -o ${MAIN} ../../Common/InitShader.cpp $(MAIN).cpp ${INCDIR} ${LIBDIR} ${LIBS}
在终端执行 make (这里不要求在MSYS终端执行,可以在cmd.exe执行)
检查是否生成 example1.exe
将 D:\OGL\freeglut-MinGW-3.0.0-1.mp\bin\x64\freeglut.dll 和 D:\OGL\glew-1.13.0\lib\glew32.dll 复制到执行文件所在目录,
运行结果:
如果提示
代码: 全选
---------------------------
example1.exe - 应用程序错误
---------------------------
应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。
---------------------------
确定
---------------------------
通常是 freeglut.dll 或者 glew.dll 的版本不对(32位 64位的区别),或者这两个dll没有放置到运行环境中
正浏览此版面之用户: Google [Bot] 和 0 访客