小编Cal*_*lin的帖子

iOS中基于实时矢量的OSM渲染器(使用OpenGL ES)

我正在寻找一种解决方案,允许使用OpenStreetMap数据在iOS中渲染基于2D顶视图矢量的地图,而不是使用来自服务器的预渲染切片.与iOS6 +中的Apple和Google Maps类似.

我对这个问题进行了广泛的研究,但没有找到太多的信息.
有许多iOS应用程序可以执行此操作,但没有关于它们如何实现它的信息.其中几个应用程序是:

前两个应用程序的工作方式类似于Apple和Google Maps.每当缩放变化时,地图都会实时绘制.
最后一个似乎使用了略有不同的方法.它以特定缩放级别呈现矢量数据并创建切片,然后将切片用作从切片服务器下载的普通切片.因此渲染引擎实际上可以是Route-Me库的tile源,但是不是下载tile而是动态渲染它们.

第一种方法是优选的.

[问]我猜一旦OpenGL ES渲染器到位,就可以在方法之间切换.我的意思是你可以使用渲染器作为Route-Me的源来创建磁贴,或者你可以将它用作实时抽屉,类似于游戏.我对吗?

我找到的最接近的解决方案是OpenStreetPad.但是,它使用的是Core Graphics而不是OpenGL ES,因此渲染不是硬件加速的.

Mapbox表示他们正在研究矢量图块,他们可能会提供一个iOS渲染解决方案,但是它可能会使用Mapnik,因此我不确定它的效率如何.自2013年中期以来,没有ETA.

[问]您是否了解其他任何图书馆,论文,指南,示例或其他有关如何处理此问题的有用信息?基本上如何处理OSM数据以及如何实际使用OpenGL ES/GLKit在设备上绘制数据.也许一些做过它的人可以分享一些东西?

vector-graphics openstreetmap ios opengl-es-2.0 mapbox

21
推荐指数
2
解决办法
7289
查看次数

多边形三角剖分为OpenGL ES的三角形条带

我正在寻找一种快速多边形三角剖分算法,可以将不太复杂的2D凹面多边形(无孔)三角剖分成三角形条带,准备发送到OpenGL ES进行绘图GL_TRIANGLE_STRIP.

我知道一些算法,但我找不到符合我需求的算法:

我正在开发的平台是:iOS,OpenGL ES 2.0,cocos2d 2.0.

任何人都可以帮我这样的算法吗?或者非常感谢任何其他建议.

algorithm triangulation cocos2d-iphone opengl-es-2.0 gl-triangle-strip

8
推荐指数
1
解决办法
2万
查看次数

什么是Go示例函数?

Go测试包提到示例函数,如:

func Example() { ... }
func ExampleF() { ... }
func ExampleT() { ... }
func ExampleT_M() { ... }
Run Code Online (Sandbox Code Playgroud)

这些是什么意思和用例?

testing go

8
推荐指数
1
解决办法
445
查看次数

使用OS X上的cgo到linux和windows进行1.5交叉编译

git2go在将1.4.2升级到1.5之后,我在将OS X上的库编译为linux amd64时遇到了问题.

我认为这是关于交叉编译任何使用C代码和go 1.5的应用程序.

使用CGO_ENABLED=1,我得到:

$ CGO_ENABLED=1 GOOS=linux GOARCH=amd64 ./script/with-static.sh go install ./...
# runtime/cgo
ld: unknown option: --build-id=none
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

使用-compiler=gccgo,我得到:

$ GOOS=linux GOARCH=amd64 ./script/with-static.sh go install -compiler gccgo ./...
go build github.com/libgit2/git2go: : fork/exec : no such file or directory
Run Code Online (Sandbox Code Playgroud)

如果没有提供任何这些,我得到:

$ GOOS=linux GOARCH=amd64 ./script/with-static.sh go install ./...
can't load package: package github.com/libgit2/git2go: C source files not allowed when not …
Run Code Online (Sandbox Code Playgroud)

cross-compiling go libgit2 cgo gccgo

7
推荐指数
1
解决办法
4312
查看次数

更改Bash函数内的全局位置参数

有没有办法从函数中设置bash脚本的位置参数?

在全局范围内,可以使用set -- <arguments>更改位置参数,但它在函数内部不起作用,因为它更改了函数的位置参数.

快速说明:

# file name: script.sh
# called as: ./script.sh -opt1 -opt2 arg1 arg2

function change_args() {
    set -- "a" "c" # this doesn't change the global args
}

echo "original args: $@" # original args: -opt1 -opt2 arg1 arg2
change_args
echo "changed args: $@" # changed args: -opt1 -opt2 arg1 arg2
# desired outcome:        changed args: a c
Run Code Online (Sandbox Code Playgroud)

bash shell sh

6
推荐指数
2
解决办法
773
查看次数

带有upstart和syslog的Ubuntu docker容器

在搜索之后,我仍然感到困惑,你是否可以让一个运行Ubuntu 的docker容器与一个工作的init系统(upstart)syslog一起运行.

我知道docker容器用于运行单个进程而不是完整的操作系统,但我的用例是测试各种Linux发行版上的守护进程,确保守护进程在崩溃时成功启动,停止和重新启动等,并记录到syslog .所以我试图决定是否可以使用docker容器,或者我可能会更好地使用Vagrant.

我发现的一些资源令人困惑:

  • 容器无法连接到Upstart docker/docker#1024

    因为Docker用它自己替换了默认的/ sbin/init,所以无法在Docker容器中运行Upstart init.

  • 使用Supervisor和Docker

    传统上,Docker容器在启动时会运行单个进程,例如Apache守护程序或SSH服务器守护程序.通常,您希望在容器中运行多个进程.您可以通过多种方式实现此目标,从使用简单的Bash脚本作为容器CMD指令的值到安装流程管理工具.

基本上我最终需要的是能够运行:

$ initctl start <daemon>
$ initctl stop <daemon>
Run Code Online (Sandbox Code Playgroud)

当然,在创建必要的conf文件后/etc/init/<daemon>.conf,查看日志syslog.

ubuntu syslog init upstart docker

6
推荐指数
1
解决办法
1820
查看次数