Irrlicht for IPHONE

If you are a new Irrlicht Engine user, and have a newbie-question, this is the forum for you. You may also post general programming questions here.

Irrlicht for IPHONE

Postby zhengxianfu » Wed Jul 25, 2012 8:37 am

I've already download the lastest code from trunk (Irrlicht 1.8) ,build and running the examples.

How can i switch to Iphone or ipad,does anyone test successfully?

I try to create another project and make libirrlicht.a into ,also try to switch base sdk and architecture .
It seems the CIrrDeviceMacOS only can build under mac os but not iphone or ipad, also there are lots of places which incude <opengl/opengl.h>

Did i miss something ?
:x
zhengxianfu
 
Posts: 16
Joined: Thu Apr 05, 2012 9:33 am

Re: Irrlicht for IPHONE

Postby codetiger » Wed Jul 25, 2012 8:49 am

For iPhone, you need to download OpenGL ES branch from Irrlicht SVN.

here is the link for GL ES branch in svn. You can download the latest version by clicking on "Download tarball"

http://irrlicht.svn.sourceforge.net/vie ... es/ogl-es/
IrrNaCl - Irrlicht Port for Google Chrome Native Client - Demo

Our Games
codetiger
 
Posts: 95
Joined: Wed May 02, 2012 9:24 am
Location: Chennai, India

Re: Irrlicht for IPHONE

Postby zhengxianfu » Wed Jul 25, 2012 12:57 pm

Thanks, merci beacoup.

1 ,Download from ogl-es branch ,i noticed that has already updated to 1.8.0 ,thanks all of them.
2, Add include and sources into iphone window-based project.
3, Remove the .cpp or .c files if there is compile or link error. Almost 20-30files should be removed .

I will try to run the examles tomorrow and report my progress.
zhengxianfu
 
Posts: 16
Joined: Thu Apr 05, 2012 9:33 am

Re: Irrlicht for IPHONE

Postby Nadro » Wed Jul 25, 2012 11:33 pm

Please use project which exist under "sources/Irrlicht/iOS" (of course in ogl-es branch). Currently only OGL ES1 driver works without problems. When You'll create a window pleasu use external window parameter ID, eg:
cpp Code: Select all
...
AppDelegate* tDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
Param.DriverType = video::EDT_OGLES1;
Param.WindowId = tDelegate.window;
...

// AppDelegate code example:

// HPP file

cpp Code: Select all
#import <UIKit/UIKit.h>
#import <CoreMotion/CoreMotion.h>
 
@class EAGLView;
 
@interface AppDelegate : NSObject <UIApplicationDelegate>
{
    UIWindow* window;
   
    @public
    EAGLView* glView;
}
 
@property (nonatomic, retain) IBOutlet UIWindow* window;
@property (nonatomic, retain) IBOutlet EAGLView* glView;
 
@end


// MM file

cpp Code: Select all
#import "AppDelegate.hpp"
#import "GApp.hpp"
 
static GameApp* App = new GameApp(); // global main app class.
 
@implementation AppDelegate
 
@synthesize window;
@synthesize glView;
 
- (void)applicationDidFinishLaunching:(UIApplication*)application
{
    [NSTimer scheduledTimerWithTimeInterval:1.0/60 target:self selector:@selector(applicationWillUpdate) userInfo:nil repeats:YES];
 
    App->init("");
}
 
- (void) applicationWillUpdate
{
    App->update();
}
 
- (void)applicationWillResignActive:(UIApplication *)application
{
 
}
 
- (void)applicationDidBecomeActive:(UIApplication *)application
{
 
}
 
- (void)applicationWillTerminate:(UIApplication *)application
{
 
}
 
- (void)dealloc
{
    [window release];
    [glView release];
    [super dealloc];
}
 
@end


// XIB file "MainWindow.xib"

cpp Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
    <data>
        <int key="IBDocument.SystemTarget">528</int>
        <string key="IBDocument.SystemVersion">11D50d</string>
        <string key="IBDocument.InterfaceBuilderVersion">2182</string>
        <string key="IBDocument.AppKitVersion">1138.32</string>
        <string key="IBDocument.HIToolboxVersion">568.00</string>
        <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
            <string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
            <string key="NS.object.0">1181</string>
        </object>
        <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
            <bool key="EncodedWithXMLCoder">YES</bool>
            <string>IBUIWindow</string>
            <string>IBUICustomObject</string>
            <string>IBUIView</string>
            <string>IBProxyObject</string>
        </object>
        <object class="NSArray" key="IBDocument.PluginDependencies">
            <bool key="EncodedWithXMLCoder">YES</bool>
            <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
        </object>
        <object class="NSMutableDictionary" key="IBDocument.Metadata">
            <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
            <integer value="1" key="NS.object.0"/>
        </object>
        <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
            <bool key="EncodedWithXMLCoder">YES</bool>
            <object class="IBProxyObject" id="841351856">
                <string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
            </object>
            <object class="IBProxyObject" id="191355593">
                <string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
            </object>
            <object class="IBUICustomObject" id="664661524">
                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
            </object>
            <object class="IBUIWindow" id="380026005">
                <reference key="NSNextResponder"/>
                <int key="NSvFlags">1316</int>
                <object class="NSMutableArray" key="NSSubviews">
                    <bool key="EncodedWithXMLCoder">YES</bool>
                    <object class="IBUIView" id="773737154">
                        <reference key="NSNextResponder" ref="380026005"/>
                        <int key="NSvFlags">1298</int>
                        <string key="NSFrameSize">{320, 480}</string>
                        <reference key="NSSuperview" ref="380026005"/>
                        <reference key="NSWindow"/>
                        <reference key="NSNextKeyView"/>
                        <object class="NSColor" key="IBUIBackgroundColor">
                            <int key="NSColorSpace">5</int>
                            <bytes key="NSCMYK">MSAxIDEgMQA</bytes>
                            <object class="NSColorSpace" key="NSCustomColorSpace">
                                <int key="NSID">3</int>
                            </object>
                            <characters key="NSComponents">1 1 1 1 1</characters>
                        </object>
                        <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                        <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                    </object>
                </object>
                <object class="NSPSMatrix" key="NSFrameMatrix"/>
                <string key="NSFrameSize">{320, 480}</string>
                <reference key="NSSuperview"/>
                <reference key="NSWindow"/>
                <reference key="NSNextKeyView" ref="773737154"/>
                <object class="NSColor" key="IBUIBackgroundColor">
                    <int key="NSColorSpace">1</int>
                    <bytes key="NSRGB">MSAxIDEAA</bytes>
                </object>
                <bool key="IBUIClearsContextBeforeDrawing">NO</bool>
                <string key="targetRuntimeIdentifier">IBCocoaTouchFramework</string>
                <bool key="IBUIVisibleAtLaunch">YES</bool>
            </object>
        </object>
        <object class="IBObjectContainer" key="IBDocument.Objects">
            <object class="NSMutableArray" key="connectionRecords">
                <bool key="EncodedWithXMLCoder">YES</bool>
                <object class="IBConnectionRecord">
                    <object class="IBCocoaTouchOutletConnection" key="connection">
                        <string key="label">delegate</string>
                        <reference key="source" ref="841351856"/>
                        <reference key="destination" ref="664661524"/>
                    </object>
                    <int key="connectionID">4</int>
                </object>
                <object class="IBConnectionRecord">
                    <object class="IBCocoaTouchOutletConnection" key="connection">
                        <string key="label">glView</string>
                        <reference key="source" ref="664661524"/>
                        <reference key="destination" ref="773737154"/>
                    </object>
                    <int key="connectionID">9</int>
                </object>
                <object class="IBConnectionRecord">
                    <object class="IBCocoaTouchOutletConnection" key="connection">
                        <string key="label">window</string>
                        <reference key="source" ref="664661524"/>
                        <reference key="destination" ref="380026005"/>
                    </object>
                    <int key="connectionID">10</int>
                </object>
            </object>
            <object class="IBMutableOrderedSet" key="objectRecords">
                <object class="NSArray" key="orderedObjects">
                    <bool key="EncodedWithXMLCoder">YES</bool>
                    <object class="IBObjectRecord">
                        <int key="objectID">0</int>
                        <object class="NSArray" key="object" id="0">
                            <bool key="EncodedWithXMLCoder">YES</bool>
                        </object>
                        <reference key="children" ref="1000"/>
                        <nil key="parent"/>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">2</int>
                        <reference key="object" ref="380026005"/>
                        <object class="NSMutableArray" key="children">
                            <bool key="EncodedWithXMLCoder">YES</bool>
                            <reference ref="773737154"/>
                        </object>
                        <reference key="parent" ref="0"/>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">-1</int>
                        <reference key="object" ref="841351856"/>
                        <reference key="parent" ref="0"/>
                        <string key="objectName">File's Owner</string>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">3</int>
                        <reference key="object" ref="664661524"/>
                        <reference key="parent" ref="0"/>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">8</int>
                        <reference key="object" ref="773737154"/>
                        <reference key="parent" ref="380026005"/>
                    </object>
                    <object class="IBObjectRecord">
                        <int key="objectID">-2</int>
                        <reference key="object" ref="191355593"/>
                        <reference key="parent" ref="0"/>
                    </object>
                </object>
            </object>
            <object class="NSMutableDictionary" key="flattenedProperties">
                <bool key="EncodedWithXMLCoder">YES</bool>
                <object class="NSArray" key="dict.sortedKeys">
                    <bool key="EncodedWithXMLCoder">YES</bool>
                    <string>-1.CustomClassName</string>
                    <string>-1.IBPluginDependency</string>
                    <string>-2.CustomClassName</string>
                    <string>-2.IBPluginDependency</string>
                    <string>2.IBAttributePlaceholdersKey</string>
                    <string>2.IBPluginDependency</string>
                    <string>3.CustomClassName</string>
                    <string>3.IBPluginDependency</string>
                    <string>8.CustomClassName</string>
                    <string>8.IBPluginDependency</string>
                </object>
                <object class="NSArray" key="dict.values">
                    <bool key="EncodedWithXMLCoder">YES</bool>
                    <string>UIApplication</string>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                    <string>UIResponder</string>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                    <object class="NSMutableDictionary">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                        <reference key="dict.sortedKeys" ref="0"/>
                        <reference key="dict.values" ref="0"/>
                    </object>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                    <string>AppDelegate</string>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                    <string>EAGLView</string>
                    <string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
                </object>
            </object>
            <object class="NSMutableDictionary" key="unlocalizedProperties">
                <bool key="EncodedWithXMLCoder">YES</bool>
                <reference key="dict.sortedKeys" ref="0"/>
                <reference key="dict.values" ref="0"/>
            </object>
            <nil key="activeLocalization"/>
            <object class="NSMutableDictionary" key="localizations">
                <bool key="EncodedWithXMLCoder">YES</bool>
                <reference key="dict.sortedKeys" ref="0"/>
                <reference key="dict.values" ref="0"/>
            </object>
            <nil key="sourceID"/>
            <int key="maxID">11</int>
        </object>
        <object class="IBClassDescriber" key="IBDocument.Classes">
            <object class="NSMutableArray" key="referencedPartialClassDescriptions">
                <bool key="EncodedWithXMLCoder">YES</bool>
                <object class="IBPartialClassDescription">
                    <string key="className">AppDelegate</string>
                    <string key="superclassName">NSObject</string>
                    <object class="NSMutableDictionary" key="outlets">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                        <object class="NSArray" key="dict.sortedKeys">
                            <bool key="EncodedWithXMLCoder">YES</bool>
                            <string>glView</string>
                            <string>window</string>
                        </object>
                        <object class="NSArray" key="dict.values">
                            <bool key="EncodedWithXMLCoder">YES</bool>
                            <string>EAGLView</string>
                            <string>UIWindow</string>
                        </object>
                    </object>
                    <object class="NSMutableDictionary" key="toOneOutletInfosByName">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                        <object class="NSArray" key="dict.sortedKeys">
                            <bool key="EncodedWithXMLCoder">YES</bool>
                            <string>glView</string>
                            <string>window</string>
                        </object>
                        <object class="NSArray" key="dict.values">
                            <bool key="EncodedWithXMLCoder">YES</bool>
                            <object class="IBToOneOutletInfo">
                                <string key="name">glView</string>
                                <string key="candidateClassName">EAGLView</string>
                            </object>
                            <object class="IBToOneOutletInfo">
                                <string key="name">window</string>
                                <string key="candidateClassName">UIWindow</string>
                            </object>
                        </object>
                    </object>
                    <object class="IBClassDescriptionSource" key="sourceIdentifier">
                        <string key="majorKey">IBProjectSource</string>
                        <string key="minorKey">./Classes/AppDelegate.h</string>
                    </object>
                </object>
            </object>
        </object>
        <int key="IBDocument.localizationMode">0</int>
        <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaTouchFramework</string>
        <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
            <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
            <integer value="528" key="NS.object.0"/>
        </object>
        <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
            <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
            <real value="1296" key="NS.object.0"/>
        </object>
        <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
            <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
            <integer value="3000" key="NS.object.0"/>
        </object>
        <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
        <int key="IBDocument.defaultPropertyAccessControl">3</int>
        <string key="IBCocoaTouchPluginVersion">1181</string>
    </data>
</archive>


for update game loop I use following trick:
cpp Code: Select all
while(true)
{
NSAutoreleasePool* tPool = [[NSAutoreleasePool alloc] init];
while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002f, TRUE) == kCFRunLoopRunHandledSource);
[tPool release];
 
if(!device->run())
break;
...
}


You can clean up upper code eg. glView. I hope it helps :) I used similar code in my app and works properly with latest OGL ES branch :)
NBK Game Studio - Official Site:
http://www.nbkgamestudio.pl/
Nadro
 
Posts: 1000
Joined: Sun Feb 19, 2006 9:08 am
Location: Warsaw, Poland

Re: Irrlicht for IPHONE

Postby zhengxianfu » Thu Jul 26, 2012 9:49 am

I am newbie to ios development.So please forgive me the naive questions.

I shift to sources/Irrlicht/iOS, and build libirrlicht.a successfully,but there is no application or ui class.so i start a new project add reference to libirrlicht.a.

Where does the class GameApp come from ? if create a new c++ class ,add init/update method ,but i cannot using those code to init.
cpp Code: Select all
 
(AppDelegate*)[[UIApplication sharedApplication] delegate];
Param.DriverType = video::EDT_OGLES1;
Param.WindowId = tDelegate.window;
 


I noticed that after application launches,start a new timer call applicationWillUpdate ,but where should i put those code,it is a while loop.
cpp Code: Select all
 
while(true)
{
NSAutoreleasePool* tPool = [[NSAutoreleasePool alloc] init];
while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002f, TRUE) == kCFRunLoopRunHandledSource);
[tPool release];
 
if(!device->run())
break;
...
}
 


So can you tell me the step in order to run my first example :D ?
zhengxianfu
 
Posts: 16
Joined: Thu Apr 05, 2012 9:33 am

Re: Irrlicht for IPHONE

Postby Nadro » Thu Jul 26, 2012 8:03 pm

You have to prepare Your own class similar to GameApp where You initialize engine in init and next code put into update. What about:
cpp Code: Select all
while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002f, TRUE) == kCFRunLoopRunHandledSource);

You need it in Your game loop code.
NBK Game Studio - Official Site:
http://www.nbkgamestudio.pl/
Nadro
 
Posts: 1000
Joined: Sun Feb 19, 2006 9:08 am
Location: Warsaw, Poland

Re: Irrlicht for IPHONE

Postby zhengxianfu » Fri Jul 27, 2012 7:34 am

thanks Nadro.
Finally ,i get the syndey show in the ios simulator.
But , the logic of "beginScene" and "endScene " is in timer,are you sure it's the only way?
zhengxianfu
 
Posts: 16
Joined: Thu Apr 05, 2012 9:33 am

Re: Irrlicht for IPHONE

Postby codetiger » Fri Jul 27, 2012 10:02 am

Meanwhile, does the texture show up? Coz, I found a bug in opengl es 2.0 shaders. If you are using ES 1.1, you should see texture. Let me know if you want to try 2.0, I can give you simple solution to fix the shader problem.
IrrNaCl - Irrlicht Port for Google Chrome Native Client - Demo

Our Games
codetiger
 
Posts: 95
Joined: Wed May 02, 2012 9:24 am
Location: Chennai, India

Re: Irrlicht for IPHONE

Postby zhengxianfu » Fri Jul 27, 2012 2:03 pm

to codetiger
I just test es1.0 , the texture doesn't show up at first ,it is the problem of size (not power of 2),change to another texture.
Monday i will try es2.0. What kind of problem may i encouter?
I've encountered that the texutre doesn't show up under android (es2.0) ,is it the same problem?
zhengxianfu
 
Posts: 16
Joined: Thu Apr 05, 2012 9:33 am

Re: Irrlicht for IPHONE

Postby codetiger » Sat Jul 28, 2012 2:57 am

Yes, it's the Sam problem. The reason being useTexture array is always false in vsh and fsh. Hiding if(useTexture[0]) line in both shader will tempararily fix the problem
IrrNaCl - Irrlicht Port for Google Chrome Native Client - Demo

Our Games
codetiger
 
Posts: 95
Joined: Wed May 02, 2012 9:24 am
Location: Chennai, India

Re: Irrlicht for IPHONE

Postby Nadro » Sat Jul 28, 2012 3:39 am

You can disable a repeat in timer or just use performSelectorOnMainThread eg:
cpp Code: Select all
[NSTimer scheduledTimerWithTimeInterval:0.0 target:self selector:@selector(applicationWillUpdate) userInfo:nil repeats:NO];

or use following code instead of upper code:
cpp Code: Select all
[self performSelectorOnMainThread:@selector(applicationWillUpdate) withObject:nil waitUntilDone:NO];


I use second option in my game and works properly :)

Thanks a lot codetiger for found this bug :) It fixed problems with OGL ES2 on iOS too.
NBK Game Studio - Official Site:
http://www.nbkgamestudio.pl/
Nadro
 
Posts: 1000
Joined: Sun Feb 19, 2006 9:08 am
Location: Warsaw, Poland

Re: Irrlicht for IPHONE

Postby fmx » Sun Jul 29, 2012 9:46 am

All this looks really messy
the way I update my engine within XCode loop is to just call my engine's Update and Render functions in the XCode sample template's update function, after removing all the original drawing and vertex-buffer code.
Much faster and easier to update each time Apple releases a new version of XCode and makes changes to their API or guidelines (which happens quite frequently actually)

And also
cpp Code: Select all
NSAutoreleasePool* tPool = [[NSAutoreleasePool alloc] init];
while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.002f, TRUE) == kCFRunLoopRunHandledSource);
[tPool release];

This shouldn't compile, automatic reference counting means that [... release] commands would signal errors at the very least.
unless you intentionally disabled it?
User avatar
fmx
 
Posts: 559
Joined: Wed Dec 06, 2006 9:28 am
Location: UK

Re: Irrlicht for IPHONE

Postby Nadro » Sun Jul 29, 2012 12:59 pm

Of course I disabled ARC ;) I don't like this feature.

This is depend on Your preferences. For example thanks to upper code my game doesn't need special design for run on iOS (only few lines required changes compared to a code for PC - Win, Lin, Mac). The second profit is that, that I don't care about Apple changes in API etc. because I use more low level API functions, which don't change :) I really don't like a platform specific templates.

Of course I commented only game loop code, because I know that an initialization code need clean-up, but current iOS port is still under development and that why require these messy tricks. Of course we'll fix it in future.
NBK Game Studio - Official Site:
http://www.nbkgamestudio.pl/
Nadro
 
Posts: 1000
Joined: Sun Feb 19, 2006 9:08 am
Location: Warsaw, Poland

Re: Irrlicht for IPHONE

Postby fluke9 » Sat Aug 04, 2012 12:28 pm

Hi there, i am also using the ogl-es branch for an iPhone game and realized that ES2.0 does not work correctly like described in that post.

However commenting out useTexture[0] in the shaders is NOT the solution !
I guess it went unnoticed by many because the error message for the "Cannot find uniform" is a widestring and outputted garbled in the debugwindow. ;)

The Problem lies deeper, it just does not get the uniforms correctly form the shader because arrays are represented by some drivers with an additional [0] to the name.
To find the uniform useTexture you have to look after useTexture and useTexture[0].

I fixed that (code below) and it renders just fine now, however the performance is really really bad.
30fps with 20k polys and GL ES 1.0 versus
5fps with GL ES 2.0 now :(

Anyone got an idea here ?! :roll:


Here is the hack to fix both issues :

In COGLES2SLMaterialRenderer.cpp replace the block beginning with:

cpp Code: Select all
 
for ( int i = 0; i < UniformCount; ++i )
        {
            int j;
            for ( j = 0; j < num; ++j )
            {
                if ( names[j] == UniformStringTable[i] )
                    break;
 
...
 


with :

cpp Code: Select all
 
        for ( int i = 0; i < UniformCount; ++i )
        {
            int j;
            for ( j = 0; j < num; ++j )
            {
                if ( names[j] == UniformStringTable[i] )
                    break;
 
                // XXX: hack, also search for name[0]
                core::stringc tempname = UniformStringTable[i];
               
                if ( names[j] == tempname + "[0]" )
                    break;
               
            }
            if ( j < num )
            {
                UniformInfo.push_back( uni[j] );
            }
            else
            {
                // XXX: hack
                //wchar_t buf[512];
                //swprintf( buf, 512, L"Unable to find uniform : %S", UniformStringTable[i] );
               
                char buf[512];
                sprintf( buf,  "Unable to find uniform : %s", UniformStringTable[i] );
               
                os::Printer::log( buf, ELL_WARNING );
                SUniformInfo blank;
                blank.location = -1;
                blank.type = GL_INVALID_ENUM;
                UniformInfo.push_back( blank );
            }
        }
 
fluke9
 
Posts: 6
Joined: Sat Aug 04, 2012 12:13 pm

Re: Irrlicht for IPHONE

Postby hendu » Sat Aug 04, 2012 7:16 pm

Is that even legal (= compliant with GL ES standard)?

edit: It's not. Buggy drivers yay!

http://www.opengl.org/discussion_boards ... n-OpenGLES
http://www.khronos.org/opengles/sdk/doc ... cation.xml

The spec says _both_ "foo" and "foo[0]" refer to the first array element. And seems some mobile drivers only do one and some only the other. Sigh..
hendu
 
Posts: 1556
Joined: Sat Dec 18, 2010 12:53 pm

Next

Return to Beginners Help

Who is online

Users browsing this forum: No registered users and 1 guest