How to learn OpenGL by example, say, building a rotating globe? - iphone

I have two years of experience on iPhone programming but totally new to OpenGL. What should I pick up in order to build a rotating globe on iPhone? What I want to archive:
a 3G globe shown on an iPhone
basically a 3D ball with a texture map on it
when a user drag on the screen, the globe rotates
Thanks

Well if you are completely new to OpenGl like me than I would suggest you to follow this link to get you started
http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html
enjoy
Edit:
Try this too
how to replace images in puzzle game

I would recommend Brad Larson's Course on OpenGL (ES). It's available on iTunes (for free):
The videos of the Advanced iPhone
Development class I taught this past
semester at the Madison Area Technical
College are now available for free on
iTunes U. These videos amount to over
35 hours of HD content, covering more
advanced iPhone development topics
such as Core Animation,
multithreading, Quartz 2-D drawing,
and OpenGL ES. The course notes that
accompany the class are available for
download here in VoodooPad format, or
for viewing here in HTML. Links to all
sample applications used for the class
are present in the notes.
Source

Many people would suggest that you try the NeHe Tutorials for OpenGL, and while I do think that they cover a few features of the OpenGL API, I would instead recommend buying a book on OpenGL if you are serious about learning it. Of course, learning how to write programs using OpenGL comes with practice, but reading the books helps you understand how and why the API is designed how it is, and also introduces you to the graphics pipeline, which is crucial in understanding how your function calls are really processed. I would personally recommend the OpenGL Superbible, but I have heard the the Red Book is good as well. Here's a link to a free HTML file containing an older version of the Red Book.

Related

OpenGl ES on Iphone - Displaying and rotating 3D objects

I'am new to Iphone, to Xcode and to openGL ES.
I looking for an example of a source code witch demonstrates how to create 3d object, rotate it with gestures and zoom in, zoom out ...
Thanks,
Alex
Here is the simple example how to display and rotate 3d models created with Blender: http://iphonedevelopment.blogspot.com/2009/06/using-3d-models-from-blender-in-opengl.html
The complete source can be found here: http://innerloop.biz/code/ExportTest.zip
I can recommend the OpenGL SuperBible 5th Ed. It starts out with the very foundations with lots of example code (I believe the specific scenario you describe is chapter 5), and moves on to topics like platform specific development, OpenGL ES for the iPhone... - and it's a decent read, a rare quality among textbooks, in my opinion. All examples and code in the book should compile in Xcode, and they show various exceptions for individual platforms as necessary.
I am currently looking at this challenge as well.
I will put up my findings so far, and whack a bounty on this question to try and get some focus for it.
http://nineveh.gl/ promises to do the job, but it is in beta and even the most basic examples don't run out-of-the-box (they give compiler errors). so I couldn't recommend it.
It is possible to integrate Unity with native iOS code, eg
http://clevermartian.com/blog/?p=59
http://technology.blurst.com/a-cocoa-based-frontend-for-unity-iphone-applications/
but that stuff looks scary
http://www.sunsetlakesoftware.com/molecules is open source; it may be possible to lift something from there.
I see you had answered this but a good tutorial are the Lamarche Tutorials, there is also OpenGLES 2.0 tutorials:
http://iphonedevelopment.blogspot.co.uk/2009/05/opengl-es-from-ground-up-table-of.html
Also for loading up models look up setting up the POWER VR SDK as there is all the things you need to loading up a 3d model with bone animation , textures lighting e.t.c.
i am not sure if this is what you have searched and looking for but you can take a look at : http://nehe.gamedev.net/tutorial/texture_filters,lighting&_keyboard_control/15002/
in the lower portion of the page, you can see that there is the example code for macos/cocoa ..
i'm still not sure but hope this helps..
I had a play around with OpenGL ES a year or so ago, and I found this on-line O'Reilly book very helpful: http://ofps.oreilly.com/titles/9780596804824/
The chapters are typical of most books on this subject; math primer to 'Advanced' (typically your usual scene using shaders that implement cube-maps, bump-maps etc)
You are also able to download the source code for the examples.
Edit: I also own this book http://www.amazon.co.uk/OpenGL-ES-2-0-Programming-Guide/dp/0321502795/ref=sr_1_1?ie=UTF8&qid=1336064164&sr=8-1
Which I found was a good read with respect to OpenGL ES as-well as 3D graphics in general.

iOS based OpenGL ES programming

I need to find resources for learning openGL ES for the iPhone.
I've already watched Brad Larson's awesome videos and I'm downloading the advanced videos from apple now.
I know a lot about iOS programming but am clueless on OpenGL, so resources that don't assume I already know openGL.
I want to learn a majority of the OpenGL capabilities, but my major goal is to be able to manipulate an image based on the touch locations. More specifically I want to create a water ripple effect that follows the users finger.
I know there are many equations on StackFlow that implement this, but I'm lost when it comes to finding out how to use them.
I appreciate the kind words on the videos. That definitely makes the class feel like it was worth doing.
Do you have the course notes for both semesters of the class? The spring session notes can be found here in HTML format (VoodooPad format here) and the fall ones here (VoodooPad format here). The links in iTunes U aren't very obvious for those, and they contain many links to OpenGL ES resources that I thought were valuable, as well as all the sample code I show off in the classes.
I like the job that various instructors at Stanford have done with their class sessions on OpenGL ES as part of their iPhone Application Development course (also on iTunes U). They provide a different perspective on the API than I do, and both of us come at it by not assuming that you know OpenGL.
As Bart suggests, Jeff LaMarche's "OpenGL ES from the Ground Up" series is extremely popular for good reason, and he's been posting unpublished chapters from his book on OpenGL ES 2.0 lately as well.
For books, I highly recommend Philip Rideout's iPhone 3D Programming, which introduces fundamentals like the math involved, and takes you all the way through to some fairly advanced techniques. It's also one of the few books to spend a significant amount of time with OpenGL ES 2.0.
However, the best thing that I suggest for learning OpenGL ES is not to spend your time reading books and articles but actually formulate a simple project and try to implement it. Find sample applications out there that do many of the things you want to, and pick them apart. Go back to these resources when you run into brick walls and you'll better understand how the concepts all fit together. I knew very little about OpenGL when I started out with my first application using it, but I built small pieces and standalone prototypes until I knew enough to piece together something that worked.
In your case, I'd look very carefully at the resources linked in the answers to the question "GLSL for simple water surface effects", which do exactly what you want. One implementation uses OpenGL ES 1.1, the other 2.0-style shaders. Pick a way that you want to go (my personal recommendation would be to learn shaders now) and try to make a crude, functional application while working through the above videos and reading material.
You might want to have a look at this: http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html
These tutorials seem to be relatively beginner-friendly.
More specifically I want to create a water ripple effect that follows the users finger.
Here is code that does exactly that: http://developer.apple.com/library/ios/#samplecode/GLCameraRipple/Introduction/Intro.html#//apple_ref/doc/uid/DTS40011222

How to make good looking custom ui in mobile and tablet devices?

I'm looking for an intro into designing and making a custom and dynamic UI on mobile specific platforms. As I understand Nokia(Qt), Android, and iOS all use OpenGL ES (2.0?). I haven't looked into Windows phone 7 yet so not sure what that uses. So I think OpenGL would be a pretty good place to start. While OpenGL is mostly about 3D, I'm also open to 2d ways of creating dynamic UI.
I've never really been big on designing interfaces or coming up with cool concepts but now I have an idea for a mobile app that really needs a good looking user-interface. It's sort of a half app, half game type of thing. It really targets people in the gaming community who I think are used to a bit more polish and advanced UI. I could still probably get away with a simple UI(simple not being a bad thing) but I think I at least should learn some design techniques for future reference.
Of course I realise that excessive eye candy which hurts usability, like bloated graphics that slow down the mobile, are of no use at all. I'm trying to make a sleek UI that while looking good allows the user to interact well with the app effectively.
Any suggestions, resources, experience you can share would be most helpful.
EDIT: While I'm looking for ways to use 3D graphics, I'm more concerned with how to come up with a sleek UI in a mobile. I come from a mostly web developer background, with some experience in Photoshop(CSS is the furthest I've gone in designing). I have never really had to design a dynamic interface that reacted to touch and moved all around the screen with some laws of physics attached. There are lots of such effects, such as the carousal effect, which gives the user an enhanced experience. I have no idea how to incorporate these effects into a mobile device. For example, one of the things I need this app to do is take a glassy circular object(a button) that moves around, then turn it into a sort of convex glass lens so it's sort of zooming in on the image underneath to make it look like its actually a magnifying glass. I looked around and this effect is created by a "grid warp" or a "mesh warp". Suffice it to say I have no idea how to do it.
This will help you not only with Windows Phone 7. WP7 uses DirectX 9, but not directly, you must pick XNA or Silverlight(no other options). Also these blog posts I find quite usefull.
For game, game related app I would stick to one design, and as you said start with OpenGL.
I have been searching since yesterday and thought I'd add some links for anyone interested.
Although I'm dividing them up by the platform the articles refer to, with some elbow grease the ideas should be cross-platform compatible.
Qt
Carousal animation in Qt
Shadow effect Qt
Qt Kinetic Scrolling describes kinetic scrolling algorithm in Qt(self descriptive really)
Qt OpenGL Nehe tutorials converted to the Qt environment
Iphone
OpenGL from the ground up - expansive list
Flow Cover tutorial.
Android
Android 3d Tutorial
Another Android OpenGL tutorial
Yet another Android OpenGl ES tutorial, seems people have gone open-source mad.
Custom UI on Android
One finger zoom tutorial at Sony Ericsson Developer World
3D list at Sony Ericsson Developer World
OpenGl/ES
OpenGl tutorials at NeHe, there are tons, I read through the first one (on light) and it was really informative.
TheRedBook intro to OpenGl
Books
Books list at Design4Mobile, these do not cover the technical side rather covers the things to keep in mind when designing mobiles, I think the O'Rielly one should be pretty good.
Inspiration
10 beautifully designed Iphone Apps - for a touch of inspiration
All rounder
Mobile TutsPlus sort of a gathering of tutorials for android and iPhone
That's I found in the last four or five hours, as I find more I'll add it on. I've also made this a community Wiki so others can correct any mistakes I've made here, or to add anything they feel relevant.

Iphone Game Development

What are people using mostly to build iPhone games with? I'm learning iPhone programming. Currently I'm watching all the stanford vidcast, doing the assigments and going through the beginning iphone development apress book. I want to get into building games and want to know if developers are buidling everything with opengl es or are they using pre-existing game engines?
Depends how graphic-intensive the app is.
If it needs a lot of graphics, go with a pre-existing engine.
If not, many use OpenGL ES
I believe most people are simply using Apple's APIs. Other than that, I think cocos2d is pretty popular.
You can find a bunch of suggestions here:
learning iphone game development
Which technologies/concepts do you suggest I learn before creating an iPhone game?
I used Unity. There's been a lot of great games (even in the top 10) that used it. You don't even need to know objective-C. The code is written in scripting languages using C#, Javascript or boo and then compiled. It is expensive. It will cost you a minimum $600 for an indie license to do iPhone apps. unity3d.com
It's tough to get up to speed writing a game with all the APIs to learn and few good game examples (especially if you are new to Objective-C). I ended up tracking down the old crashlander source, which is notoriously hard to find since Apple pulled it.
There are probably half a dozen iPhone game programming books in the pipeline. Until then, the learning curve is pretty steep.
I'd suggest starting with an OpenGL 2D sprite-based game. Start by learning OpenGL ES, the touch system, then the audio system.

Quartz 2D vs OpenGL ES Learning Curve

I have been developing iPhone Applications for a couple of months. I would like to know your views about the Quartz vs OpenGL ES 1.x or 2.0 learning curve. You can tell your perspective. My Questions are
*I am a wannabe game developer, So is it a good idea to first develop in quartz , then move
on to OpenGL ES or does it not make an difference
*Can you please tell your experiences when you were having the similar question
Thanks :)
Quartz 2D is not applicable for game development IMHO. It is a software rendering API. It won't give you realtime rendering speed. It's good for drawing charts or vector text with shadows, or for blending several images together. Just not for games. Unless you want to make a game where few images are moving against a monochrome background and even in that case I doubt it will be really smooth on older devices. I've seen some games obviously coded with Quartz. A pitiful sight.
Sooner or later you'll end up using Open GL ES or a game framework build on top of it. I recommend you to check cocos2D, SIO2 engine, or examples from SDK.
With careful programming it is possible to make an Open GL ES game with parallax scrolling and relatively small amount of objects work at 60 FPS even on 2nd gen devices. Tiny Wings is an example of such game. And maintaining stable 30 FPS is not a problem at all.
I skipped Quartz and went right to OpenGL ES. I started with a 2D sprite based game. Thought it was pretty easy.
The key is having a good example to look at. I used the Lunar Lander clone (Crash Lander), but I don't think that's easy to find anymore. Maybe someone who has done it recently knows of a better, newer example that uses current best practices.
I'm in the same boat as you describe, although I have no programming background. (Although I don't know what your background is either) Currently, I am in the process of learning to code as I learn the various API's that are available. I'm an objective-c guy going backwards to the c-based Quartz API, and it's a little bit of a challenge. Luckily, Programming in Objective-C 2.0 by S. Kochan has a great chapter on underlying C features to keep you afloat.
I have taken a couple of stabs # OpenGLES, and I have to say, that from a conceptual standpoint, I'm not ready for it. The Quartz2d API is a bit easier to learn conceptually because it's very easy to get up & running with a few commands. Right now, I'm at the point where I can define shapes and point to point images with out too much trouble.
OpenGLES is going to be something in my future, but it takes such an enormous amount of code to configure the drawing view, set up buffers, etc. If you are familiar with everything the code is doing, then it's a bit easier. However, from a learning perspective, Quartz is an easier way to get going, quickly.
Resources I'm using: The aforementioned book, and an anemic amount of blogs containing tutorials, which are limited # best. At this point, make an appointment with the apple docs and get cozy, because it's about the best (free) stuff that's out there (& exhaustive) With that said, I'd love for someone to prove me wrong on this site by posting a great resource for learning, but that's about it. Good Luck.
I have been looking for the fundamental differences so I can decide between OpenGL (ES) or Quartz or a hybrid. The good news is that the hybrid is an option. Clearly Quartz is easier to master for O-O programming and the answer from Apple appears to be that OpenGL, "...is ideal for immersive types of applications..."
http://developer.apple.com/library/ios/#DOCUMENTATION/General/Conceptual/Devpedia-CocoaApp/DrawingModel.html
I don't want to limit the category to games as I believe any game UX can be applied to a business App, a productivity App, entertainment viewing, etc. By the same token, I fully expect the technology (both h/w and s/w) to advance to make either a choice.