Hi All,
I'm Software Engineer,
and here in the company we are trying our product to IPhone/IPad.
anyway. after near to 1 month of search , modifying and fixing i didnt find
any answer to my problems Problems In Open Scene Graph.
Here Is the Problem.
im trying to run the following code :
its very simple project that "should" show box on the screen , but the problem
it is not showing else the background.. and search i found that there is a
shader compiling errors in open scene graph :S. i fix it. and still nothing
appear else the background... note i wrote a test that just change the
background color to see if the problem is from opengles linking or something
like.. and its work correctly..
guys i really need help..
do anyone have any idea about what is going on.
Code:
#import "iphoneViewerAppDelegate.h"
#include <osgGA/TrackballManipulator>
#include <osg/ShapeDrawable>
#include <osgViewer/api/IOS/GraphicsWindowIOS>
#include <osg/Node>
#include <osg/Group>
#include <osg/Geode>
#include <osg/Geometry>
#include <osg/Texture2D>
#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osg/PositionAttitudeTransform>
#include <osgGA/TrackballManipulator>
#include <osg/Geode>
#include <osg/TexGen>
#include <osg/Texture2D>
#define kAccelerometerFrequency 30.0 // Hz
#define kFilteringFactor 0.1
@implementation iphoneViewerAppDelegate
@synthesize _window;
//
//Called once app has finished launching, create the viewer then realize. Can't
call viewer->run as will
//block the final inialization of the windowing system
//
- (void)applicationDidFinishLaunching:(UIApplication *)application {
//get the screen size
CGRect lFrame = [[UIScreen mainScreen] bounds];
unsigned int w = lFrame.size.width;
unsigned int h = lFrame.size.height;
// create the main window at screen size
self._window = [[UIWindow alloc] initWithFrame: lFrame];
//show window
[_window makeKeyAndVisible];
//create our graphics context directly so we can pass our own window
osg::ref_ptr<osg::GraphicsContext::Traits> traits = new
osg::GraphicsContext::Traits;
// Init the Windata Variable that holds the handle for the Window to
display OSG in.
osg::ref_ptr<osg::Referenced> windata = new
osgViewer::GraphicsWindowIOS::WindowData(_window);
// Setup the traits parameters
traits->x = 0;
traits->y = 0;
traits->width = w;
traits->height = h;
traits->depth = 16; //keep memory down, default is currently 24
traits->red = 33;
traits->blue = 66;
traits->green = 99;
traits->windowDecoration = false;
traits->doubleBuffer = true;
traits->sharedContext = 0;
traits->setInheritedWindowPixelFormat = true;
traits->windowName = "osgViewer";
traits->inheritedWindowData = windata;
// Create the Graphics Context
osg::ref_ptr<osg::GraphicsContext> graphicsContext =
osg::GraphicsContext::createGraphicsContext(traits.get());
graphicsContext->clear();
//create the viewer
viewer = new osgViewer::Viewer();
//if the context was created then attach to our viewer
if(graphicsContext)
{
viewer->getCamera()->setGraphicsContext(graphicsContext);
viewer->getCamera()->setViewport(new osg::Viewport(0, 0, traits->width,
traits->height));
}
osg::setNotifyLevel(osg::DEBUG_FP);
root = new osg::MatrixTransform();
osg::Geode* geode = new osg::Geode();
osg::ShapeDrawable* drawable = new osg::ShapeDrawable( new
osg::Box(osg::Vec3(0,1,1),1));
drawable->setColor(osg::Vec4(1.0f,0.0f,1.0f,0.5f));
drawable->getOrCreateStateSet();
geode->addDrawable(drawable);
root->addChild(geode);
viewer->setSceneData(root.get());
[NSTimer scheduledTimerWithTimeInterval:1.0/5.0 target:self
selector:@selector(updateScene) userInfo:nil repeats:YES];
//Configure and start accelerometer
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:(0.1)];
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
}
//
//Timer called function to update our scene and render the viewer
//
- (void)updateScene {
viewer->frame();
}
- (void)applicationWillResignActive:(UIApplication *)application {
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
}
-(void)applicationWillTerminate:(UIApplication *)application{
root = NULL;
viewer = NULL;
}
//
//Accelorometer
//
- (void)accelerometer:(UIAccelerometer*)accelerometer
didAccelerate:(UIAcceleration*)acceleration
{
//Use a basic low-pass filter to only keep the gravity in the accelerometer
values
accel[0] = acceleration.x * kFilteringFactor + accel[0] * (1.0 -
kFilteringFactor);
accel[1] = acceleration.y * kFilteringFactor + accel[1] * (1.0 -
kFilteringFactor);
accel[2] = acceleration.z * kFilteringFactor + accel[2] * (1.0 -
kFilteringFactor);
}
- (void)dealloc {
root = NULL;
viewer = NULL;
[super dealloc];
}
@end
...
Thank you!
Cheers,
Laith
------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=35067#35067
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org