OpenGl ES on Iphone - Displaying and rotating 3D objects - iphone

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.

Related

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 learn OpenGL by example, say, building a rotating globe?

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.

iPhone: Where to Start Learning OpenGL ES for basic 2D drawing?

All I want is really absolutely basic 2D drawing stuff e.g. rectangles, circles, paths, curves, béziers and so on. I don't need all the 3D model meshes with all this texturing and lighting. Is there a good learning resource for a fast startup programming just for fun?
I agree with Hetal: Get an OpenGL book.
But if you don't like that advice check this one out on amazon. It might help you start game programming on the iPhone. It also has links to other books that you can also purchase on amazon.
http://www.amazon.com/OpenGL-ES-Game-Development/dp/1592003702
One other option is to of course use google to look for OpenGL ES tutorials such as this one: http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html
The Red book for Open GL is a good starting point to learn Open GL. You can get it online. Just google.
Also don’t skip Jeff LaMarche’s Tutorial on OpenGL ES for the iPhone.

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.

Learning OpenGL ES 1.x [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
What is the quickest way to come up to speed on OpenGL ES 1.x?
Let's assume I know nothing about OpenGL (which is not entirely true, but it's been a while since I last used OpenGL). I am most interested in learning this for iPhone-related development, but I'm interested in learning how it works on other platforms as well.
I've found the book OpenGL ES 2.0 Programming Guide, but I am concerned that it might not be the best approach because it focuses on 2.0 rather than 1.x. My understanding is that 2.0 is not backwards-compatible with 1.x, so I may miss out on some important concepts.
Note: For answers about learning general OpenGL, see https://stackoverflow.com/questions/62540/learning-opengl
Some resources I've found:
http://khronos.org/opengles/1_X/
http://www.imgtec.com/powervr/insider/sdk/KhronosOpenGLES1xMBX.asp
OpenGL Distilled by Paul Martz (a good refresher on OpenGL basics)
If I may plug my own work, I'd direct you to my post at http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es. It's not the best overall introduction to OpenGL ES, and it gets fairly technical pretty quickly, but it's my take on the subject from my experience writing Molecules. Also, I've just started reading the book "Mobile 3D Graphics: with OpenGL ES and M3G".
I agree with the suggestion that the best way to learn is by doing. I started out knowing nothing about OpenGL and three weeks later had Molecules in for review in the App Store. Once you have a clear set of goals ("OK, I need to draw a 3-D sphere", "Now I need to rotate it on demand") it becomes easy to find the examples or parts of documentation that apply to just the task you're working on.
There are many code examples out there, although a lot of them use immediate mode and other calls that are not supported in OpenGL ES. I'd love to add to the list by releasing the source to Molecules, but Apple's NDA has prevented that so far. The source code to Molecules is now available.
Video for the class I taught on OpenGL ES 1.1 is now available to download as part of my spring course on iTunes U. The notes for that session can be found here. And the fall semester videos have a class on OpenGL ES 2.0.
Also, Philip Rideout has released an excellent book on OpenGL ES 1.1 and 2.0 development for the iPhone, called iPhone 3D Programming. I highly recommend it.
There is some documentation in iPhone SDK itself.
Other than that, just take what you know about OpenGL (or learn that via other means), and forget about all things that are "old cruft" (display lists, immediate mode, things that are in OpenGL but are not directly related to just drawing triangles). Basically, unlearn everything that has been declared deprecated in OpenGL 3.0.
GL ES 1.x is for pretty simple devices. What you have is a way to draw geometry (vertex buffers), manage textures and setup some fixed function state (lighting, texture combiners). That's pretty much all there is to it.
There are some excellent tutorials at https://web.archive.org/web/20160309222642/http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html
FYI, Brad Larsons Molecules code is now available here.
I found these quite helpful when starting out with OpenGL ES, just to see what approach one would take when dealing with ES as opposed to normal GL.
http://www.zeuscmd.com/tutorials/opengles/index.php
As has been mentioned earlier there are some samples available from the iPhone developer site as well:
https://developer.apple.com/documentation/opengles
https://developer.apple.com/library/archive/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/Introduction/Introduction.html
You might want to take a look at this excellent Jef LaMarche’s Tutorial to OpenGL ES on the iPhone.
After spending quite a lot of time developing 3D I came to realize that in most cases the best way is to learn by examples and advance with them as you go.
Start by setting to yourself a goal to achieve (for example - implementing a particles system. this includes usage of blending modes, textures, vertex colors, batching and transformations), and then go and start with the simplest element - drawing and rotating a quad. From there go on and add textures, add more quads, etc...
While doing that you'd need some info about the syntax - this you can find in many books, but the best (very boring) source is the specification committee publication that can be found here: http://www.khronos.org/opengles/spec/
Even with that you'd bump into many problems, well, once you have a problem go to your best friend in these situations: demos and examples!
You can find many examples sources for the iPhone online and at the apple site so download them, copy paste what you need and then alter to your needs.
Have fun.
If you have downloaded the iPhone SDK examples, check out crash landing's EAGLview file. It is a pretty straight forward implementation of a GLES view that can be imported and used fairly cleanly in another project. There is another class in that project called Texture2d (if I recall) which is also pretty interesting if you are into using GLES for 2D.
May I also suggest Android - it's easy to get and you can have a working simulator really quickly. Also, it uses v1.0 as far as I know.
There could be more tutorials, but even the APIDemos provided by Google has introduction to OpenGL ES. I certainly found it helpful.