osgOcean: Moved to git. Build against osg 3.5

This commit is contained in:
Alexey Pavlov
2016-04-09 11:59:42 +03:00
parent 6aaac0695d
commit 1b8a905cdb
4 changed files with 145 additions and 101 deletions

View File

@@ -1,40 +1,39 @@
# Maintainer: Alexey Pavlov <alexpux@gmail.com>
_realname=osgocean
pkgbase=mingw-w64-${_realname}-svn
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-svn" "${MINGW_PACKAGE_PREFIX}-${_realname}-debug-svn")
pkgbase=mingw-w64-${_realname}-git
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}-git" "${MINGW_PACKAGE_PREFIX}-${_realname}-debug-git")
_ver_base=1.0.1
pkgver=r258
pkgrel=2
pkgver=1.0.1.r147
pkgrel=1
pkgdesc="An ocean rendering nodekit for OpenSceneGraph (mingw-w64)"
arch=('any')
license=('LGPL')
url="https://code.google.com/p/osgocean/"
depends=("${MINGW_PACKAGE_PREFIX}-fftw" "${MINGW_PACKAGE_PREFIX}-OpenSceneGraph")
makedepends=("subversion" 'unrar' "${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-cmake")
makedepends=("git" 'unrar' "${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-cmake")
options=(!strip staticlibs !buildflags)
source=("${_realname}"::"svn+http://osgocean.googlecode.com/svn/trunk/"
source=("${_realname}"::"git+https://github.com/kbale/osgocean.git"
"https://osgocean.googlecode.com/files/osgOcean-Resources-1.0.1.rar"
"mingw-w64-cmake.patch"
"osg-3.3.x.patch")
"osg-3.5.patch")
sha256sums=('SKIP'
'b3093a48259c3df5af99841934be0468691e506cfbb82eae76eadba4ab71faaf'
'6d87aae193bbd49c696aa3e78cf8f98c1df6a5459ffd100acb2db748f6f602f7'
'8a71437eac94f5aa193f8915783b6c3a78d1208dc1ff9ccee18ed32cc69d2edd')
'3ac2e6f7ea9bce213893449bfc3c9d2268dc7c7fb01c04b35faa82b48439428d')
noextract=( 'osgOcean-Resources-1.0.1.rar' )
pkgver() {
cd "$srcdir/$_realname"
local ver="$(svnversion)"
printf "r%s" "${ver//[[:alpha:]]}"
cd "${srcdir}/${_realname}"
printf "%s.r%s" "${_ver_base}" "$(git rev-list --count HEAD)"
}
prepare() {
cd "$srcdir/${_realname}"/resources
yes | unrar x "$startdir/osgOcean-Resources-1.0.1.rar"
cd "${srcdir}/${_realname}"/resources
yes | unrar x "${srcdir}/osgOcean-Resources-1.0.1.rar"
cd ../
patch -p1 -i ${srcdir}/mingw-w64-cmake.patch
patch -p1 -i ${srcdir}/osg-3.3.x.patch
patch -p1 -i ${srcdir}/osg-3.5.patch
}
build() {
@@ -43,59 +42,63 @@ build() {
package_release() {
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}" "${MINGW_PACKAGE_PREFIX}-${_realname}-svn")
replaces=(${MINGW_PACKAGE_PREFIX}-${_realname}-svn)
[[ -d ${srcdir}/build-release ]] && rm -rf ${srcdir}/build-release
mkdir -p ${srcdir}/build-release && cd ${srcdir}/build-release
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
${MINGW_PREFIX}/bin/cmake.exe \
-G"MSYS Makefiles" \
-DCMAKE_INSTALL_PREFIX:PATH=${pkgdir}${MINGW_PREFIX} \
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
-DCMAKE_BUILD_TYPE=Release \
-DUSE_FFTW3=ON \
-DUSE_FFTSS=OFF \
../${_realname}
make
make install
make DESTDIR=${pkgdir} install
}
package_debug() {
depends=("${MINGW_PACKAGE_PREFIX}-${_realname}-svn=$pkgver" "${MINGW_PACKAGE_PREFIX}-OpenSceneGraph-debug")
depends=("${MINGW_PACKAGE_PREFIX}-${_realname}-git=${pkgver}" "${MINGW_PACKAGE_PREFIX}-OpenSceneGraph-debug")
provides=("${MINGW_PACKAGE_PREFIX}-${_realname}-debug")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}-debug")
conflicts=("${MINGW_PACKAGE_PREFIX}-${_realname}-debug" "${MINGW_PACKAGE_PREFIX}-${_realname}-debug-svn")
replaces=(${MINGW_PACKAGE_PREFIX}-${_realname}-debug-svn)
[[ -d ${srcdir}/build-debug ]] && rm -rf ${srcdir}/build-debug
mkdir -p ${srcdir}/build-debug && cd ${srcdir}/build-debug
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
${MINGW_PREFIX}/bin/cmake.exe \
-G"MSYS Makefiles" \
-DCMAKE_INSTALL_PREFIX:PATH=${pkgdir}${MINGW_PREFIX} \
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
-DCMAKE_BUILD_TYPE=Debug \
-DUSE_FFTW3=ON \
-DUSE_FFTSS=OFF \
../${_realname}
make
make install
make DESTDIR=${pkgdir} install
rm -rf ${pkgdir}${MINGW_PREFIX}/include
rm -rf ${pkgdir}${MINGW_PREFIX}/bin/resources
rm -rf ${pkgdir}${MINGW_PREFIX}/bin/*.exe
}
package_mingw-w64-i686-osgocean-svn() {
package_mingw-w64-i686-osgocean-git() {
package_release
}
package_mingw-w64-i686-osgocean-debug-svn() {
package_mingw-w64-i686-osgocean-debug-git() {
package_debug
}
package_mingw-w64-x86_64-osgocean-svn() {
package_mingw-w64-x86_64-osgocean-git() {
package_release
}
package_mingw-w64-x86_64-osgocean-debug-svn() {
package_mingw-w64-x86_64-osgocean-debug-git() {
package_debug
}

View File

@@ -0,0 +1,117 @@
commit 57adc9df906ba9c06196e29b14a68a84f8159a01
Author: Tony Vasile <tony@CPE-143-238-68-252.lns6.cht.bigpond.net.au>
Date: Tue Dec 15 00:02:54 2015 +1100
Modified to compile against OpenSceneGraph 3.5.0
diff -Naur osgocean/include/osgOcean/Cylinder osgocean-patched/include/osgOcean/Cylinder
--- a/include/osgOcean/Cylinder 2014-05-25 20:39:33.715800000 +0400
+++ b/include/osgOcean/Cylinder 2014-06-07 20:49:58.658400000 +0400
@@ -16,13 +16,14 @@
*/
#pragma once
+#include <osgOcean/Export>
#include <osg/Geometry>
#include <osg/Math>
namespace osgOcean
{
-class Cylinder : public osg::Geometry
+class OSGOCEAN_EXPORT Cylinder : public osg::Geometry
{
protected:
osg::ref_ptr<osg::Vec4Array> _colorArray;
diff --git a/include/osgOcean/MipmapGeometryVBO b/include/osgOcean/MipmapGeometryVBO
index beb4615..3cbfb0c 100644
--- a/include/osgOcean/MipmapGeometryVBO
+++ b/include/osgOcean/MipmapGeometryVBO
@@ -144,7 +144,7 @@ namespace osgOcean
* Rather than use standard computeBound() this computes the bounding box
* using the offset and the worldSize.
*/
- osg::BoundingBox computeBound( void ) const;
+ osg::BoundingSphere computeBound( void ) const;
/**
* Set the tile offset for shader positioning.
@@ -164,7 +164,7 @@ namespace osgOcean
}
dirtyBound();
- setBound( computeBound() );
+ setBound( getBoundingBox() );
}
/**
diff --git a/src/osgOcean/MipmapGeometryVBO.cpp b/src/osgOcean/MipmapGeometryVBO.cpp
index 6faa71f..69b354d 100644
--- a/src/osgOcean/MipmapGeometryVBO.cpp
+++ b/src/osgOcean/MipmapGeometryVBO.cpp
@@ -83,8 +83,9 @@ namespace osgOcean
{
}
- osg::BoundingBox MipmapGeometryVBO::computeBound( void ) const
+ osg::BoundingSphere MipmapGeometryVBO::computeBound( void ) const
{
+/*
osg::BoundingBox bb;
bb.xMin() = _offset.x();
@@ -95,6 +96,8 @@ namespace osgOcean
bb.zMax() = 5.f;
return bb;
+*/
+ return osg::BoundingSphere(getBoundingBox());
}
bool MipmapGeometryVBO::updatePrimitives( unsigned int level, unsigned int levelRight, unsigned int levelBelow )
diff --git a/src/osgOcean/OceanScene.cpp b/src/osgOcean/OceanScene.cpp
index d6ddc42..a6612b7 100644
--- a/src/osgOcean/OceanScene.cpp
+++ b/src/osgOcean/OceanScene.cpp
@@ -881,7 +881,7 @@ void OceanScene::traverse( osg::NodeVisitor& nv )
bool surfaceVisible = _oceanSurface->isVisible(*cv, eyeAboveWater);
- (*_oceanSurface->getCullCallback())(_oceanSurface.get(), &nv);
+ (*_oceanSurface->getCullCallback()).run(_oceanSurface.get(), &nv);
preRenderCull(*cv, eyeAboveWater, surfaceVisible); // reflections/refractions
diff --git a/src/osgOcean/SiltEffect.cpp b/src/osgOcean/SiltEffect.cpp
index 7ab41cd..2623d89 100644
--- a/src/osgOcean/SiltEffect.cpp
+++ b/src/osgOcean/SiltEffect.cpp
@@ -22,6 +22,7 @@
#include <osgUtil/CullVisitor>
#include <osgUtil/GLObjectsVisitor>
+#include <osg/GLExtensions>
#include <osg/Notify>
#include <osg/io_utils>
#include <osg/Timer>
@@ -648,7 +649,7 @@ void SiltEffect::SiltDrawable::drawImplementation(osg::RenderInfo& renderInfo) c
{
if (!_geometry) return;
- const osg::Geometry::Extensions* extensions = osg::Geometry::getExtensions(renderInfo.getContextID(),true);
+ const osg::GLExtensions* extensions = renderInfo.getState()->get<osg::GLExtensions>();
glPushMatrix();
diff -Naur osgocean/src/osgOcean/GodRays.cpp osgocean-patched/src/osgOcean/GodRays.cpp
--- osgocean/src/osgOcean/GodRays.cpp 2014-05-25 20:39:34.199400000 +0400
+++ osgocean-patched/src/osgOcean/GodRays.cpp 2014-06-07 19:51:10.892400000 +0400
@@ -302,7 +302,7 @@
// If the eye isn't contained withing the god ray volume,
// we need to recompute the bounds or they get clipped.
- if(!getDrawable(0)->getBound().contains( eye )){
+ if(!getDrawable(0)->getBoundingBox().contains( eye )){
getDrawable(0)->dirtyBound();
getDrawable(1)->dirtyBound();
}

View File

@@ -1,76 +0,0 @@
diff -Naur osgocean/include/osgOcean/Cylinder osgocean-patched/include/osgOcean/Cylinder
--- osgocean/include/osgOcean/Cylinder 2014-05-25 20:39:33.715800000 +0400
+++ osgocean-patched/include/osgOcean/Cylinder 2014-06-07 20:49:58.658400000 +0400
@@ -16,13 +16,14 @@
*/
#pragma once
+#include <osgOcean/Export>
#include <osg/Geometry>
#include <osg/Math>
namespace osgOcean
{
-class Cylinder : public osg::Geometry
+class OSGOCEAN_EXPORT Cylinder : public osg::Geometry
{
protected:
osg::ref_ptr<osg::Vec4Array> _colorArray;
diff -Naur osgocean/include/osgOcean/MipmapGeometryVBO osgocean-patched/include/osgOcean/MipmapGeometryVBO
--- osgocean/include/osgOcean/MipmapGeometryVBO 2014-05-25 20:39:33.684600000 +0400
+++ osgocean-patched/include/osgOcean/MipmapGeometryVBO 2014-06-07 19:49:02.267400000 +0400
@@ -144,7 +144,7 @@
* Rather than use standard computeBound() this computes the bounding box
* using the offset and the worldSize.
*/
- osg::BoundingBox computeBound( void ) const;
+ osg::BoundingBox computeBoundingBox( void ) const;
/**
* Set the tile offset for shader positioning.
@@ -164,7 +164,7 @@
}
dirtyBound();
- setBound( computeBound() );
+ setBound( computeBoundingBox() );
}
/**
diff -Naur osgocean/src/osgOcean/GodRays.cpp osgocean-patched/src/osgOcean/GodRays.cpp
--- osgocean/src/osgOcean/GodRays.cpp 2014-05-25 20:39:34.199400000 +0400
+++ osgocean-patched/src/osgOcean/GodRays.cpp 2014-06-07 19:51:10.892400000 +0400
@@ -302,7 +302,7 @@
// If the eye isn't contained withing the god ray volume,
// we need to recompute the bounds or they get clipped.
- if(!getDrawable(0)->getBound().contains( eye )){
+ if(!getDrawable(0)->getBoundingBox().contains( eye )){
getDrawable(0)->dirtyBound();
getDrawable(1)->dirtyBound();
}
diff -Naur osgocean/src/osgOcean/MipmapGeometryVBO.cpp osgocean-patched/src/osgOcean/MipmapGeometryVBO.cpp
--- osgocean/src/osgOcean/MipmapGeometryVBO.cpp 2014-05-25 20:39:34.199400000 +0400
+++ osgocean-patched/src/osgOcean/MipmapGeometryVBO.cpp 2014-06-07 19:52:04.940400000 +0400
@@ -83,7 +83,7 @@
{
}
- osg::BoundingBox MipmapGeometryVBO::computeBound( void ) const
+ osg::BoundingBox MipmapGeometryVBO::computeBoundingBox( void ) const
{
osg::BoundingBox bb;
--- osgocean/src/osgOcean/OceanScene.cpp.orig 2014-12-08 08:02:04.720600000 +0300
+++ osgocean/src/osgOcean/OceanScene.cpp 2014-12-08 08:02:29.867800000 +0300
@@ -881,7 +881,8 @@
bool surfaceVisible = _oceanSurface->isVisible(*cv, eyeAboveWater);
- (*_oceanSurface->getCullCallback())(_oceanSurface.get(), &nv);
+ osg::Callback* callback = _oceanSurface->getCullCallback();
+ if (callback) callback->run(_oceanSurface.get(), &nv);
preRenderCull(*cv, eyeAboveWater, surfaceVisible); // reflections/refractions